From 0720bed21ca4b9c332d546a982a70284116965d9 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Fri, 27 Jan 2023 10:01:14 +0100 Subject: [PATCH] Ajout de la flatlist de villes --- iut-expo-starter/App.tsx | 13 +- iut-expo-starter/CityList.tsx | 27 +- iut-expo-starter/node_modules/.bin/resolve | 1 - iut-expo-starter/node_modules/.bin/which | 1 - .../node_modules/.package-lock.json | 21995 ---------------- iut-expo-starter/node_modules/.yarn-integrity | 4023 +-- .../node_modules/@egjs/hammerjs/.babelrc | 16 + .../node_modules/@egjs/hammerjs/.bowerrc | 3 + .../node_modules/@egjs/hammerjs/.editorconfig | 20 + .../node_modules/@egjs/hammerjs/.jscsrc | 10 + .../node_modules/@egjs/hammerjs/.jshintrc | 42 + .../node_modules/@egjs/hammerjs/.travis.yml | 8 + .../node_modules/@egjs/hammerjs/CHANGELOG.md | 66 + .../@egjs/hammerjs/CONTRIBUTING.md | 41 + .../node_modules/@egjs/hammerjs/LICENSE.md | 22 + .../node_modules/@egjs/hammerjs/README.md | 141 + .../node_modules/@egjs/hammerjs/banner.js | 9 + .../node_modules/@egjs/hammerjs/bower.json | 16 + .../node_modules/@egjs/hammerjs/changelog.js | 71 + .../@egjs/hammerjs/component.json | 8 + .../@egjs/hammerjs/dist/hammer.esm.js | 2992 +++ .../@egjs/hammerjs/dist/hammer.esm.js.map | 1 + .../@egjs/hammerjs/dist/hammer.js | 2995 +++ .../@egjs/hammerjs/dist/hammer.js.map | 1 + .../@egjs/hammerjs/dist/hammer.min.js | 8 + .../@egjs/hammerjs/dist/hammer.min.js.map | 1 + .../node_modules/@egjs/hammerjs/package.json | 75 + .../@egjs/hammerjs/replace.config.js | 7 + .../@egjs/hammerjs/rollup.config.js | 65 + .../@egjs/hammerjs/src/browser.js | 13 + .../@egjs/hammerjs/src/defaults.js | 129 + .../@egjs/hammerjs/src/hammer.d.ts | 50 + .../node_modules/@egjs/hammerjs/src/hammer.js | 136 + .../node_modules/@egjs/hammerjs/src/index.js | 123 + .../@egjs/hammerjs/src/input/mouse.js | 67 + .../@egjs/hammerjs/src/input/pointerevent.js | 104 + .../@egjs/hammerjs/src/input/singletouch.js | 82 + .../@egjs/hammerjs/src/input/touch.js | 111 + .../@egjs/hammerjs/src/input/touchmouse.js | 117 + .../hammerjs/src/inputjs/compute-delta-xy.js | 25 + .../src/inputjs/compute-input-data.js | 81 + .../inputjs/compute-interval-input-data.js | 43 + .../src/inputjs/create-input-instance.js | 31 + .../@egjs/hammerjs/src/inputjs/get-angle.js | 18 + .../@egjs/hammerjs/src/inputjs/get-center.js | 33 + .../hammerjs/src/inputjs/get-direction.js | 20 + .../hammerjs/src/inputjs/get-distance.js | 19 + .../hammerjs/src/inputjs/get-rotation.js | 13 + .../@egjs/hammerjs/src/inputjs/get-scale.js | 13 + .../hammerjs/src/inputjs/get-velocity.js | 14 + .../hammerjs/src/inputjs/input-constructor.js | 59 + .../hammerjs/src/inputjs/input-consts.js | 59 + .../hammerjs/src/inputjs/input-handler.js | 36 + .../src/inputjs/simple-clone-input-data.js | 30 + .../@egjs/hammerjs/src/manager.js | 352 + .../src/recognizerjs/direction-str.js | 25 + .../get-recognizer-by-name-if-manager.js | 14 + .../recognizerjs/recognizer-constructor.js | 300 + .../src/recognizerjs/recognizer-consts.js | 17 + .../hammerjs/src/recognizerjs/state-str.js | 25 + .../hammerjs/src/recognizers/attribute.js | 67 + .../@egjs/hammerjs/src/recognizers/pan.js | 89 + .../@egjs/hammerjs/src/recognizers/pinch.js | 38 + .../@egjs/hammerjs/src/recognizers/press.js | 79 + .../@egjs/hammerjs/src/recognizers/rotate.js | 30 + .../@egjs/hammerjs/src/recognizers/swipe.js | 58 + .../@egjs/hammerjs/src/recognizers/tap.js | 120 + .../src/touchactionjs/clean-touch-actions.js | 44 + .../touchactionjs/get-touchaction-props.js | 21 + .../src/touchactionjs/touchaction-Consts.js | 22 + .../touchactionjs/touchaction-constructor.js | 127 + .../hammerjs/src/utils/add-event-listeners.js | 14 + .../@egjs/hammerjs/src/utils/assign.js | 33 + .../@egjs/hammerjs/src/utils/bind-fn.js | 12 + .../@egjs/hammerjs/src/utils/bool-or-fn.js | 15 + .../@egjs/hammerjs/src/utils/deprecate.js | 23 + .../@egjs/hammerjs/src/utils/each.js | 28 + .../@egjs/hammerjs/src/utils/extend.js | 23 + .../src/utils/get-window-for-element.js | 10 + .../@egjs/hammerjs/src/utils/has-parent.js | 17 + .../@egjs/hammerjs/src/utils/if-undefined.js | 10 + .../@egjs/hammerjs/src/utils/in-array.js | 22 + .../@egjs/hammerjs/src/utils/in-str.js | 10 + .../@egjs/hammerjs/src/utils/inherit.js | 20 + .../hammerjs/src/utils/invoke-array-arg.js | 18 + .../@egjs/hammerjs/src/utils/merge.js | 15 + .../@egjs/hammerjs/src/utils/prefixed.js | 25 + .../src/utils/remove-event-listeners.js | 14 + .../hammerjs/src/utils/set-timeout-context.js | 13 + .../@egjs/hammerjs/src/utils/split-str.js | 10 + .../@egjs/hammerjs/src/utils/to-array.js | 9 + .../@egjs/hammerjs/src/utils/unique-array.js | 36 + .../@egjs/hammerjs/src/utils/unique-id.js | 9 + .../@egjs/hammerjs/src/utils/utils-consts.js | 17 + .../@egjs/hammerjs/testrollup.config.js | 31 + .../@egjs/hammerjs/tests/index.js | 6 + .../hammerjs/tests/manual/assets/style.css | 42 + .../tests/manual/compute_touch_action.html | 18 + .../@egjs/hammerjs/tests/manual/input.html | 51 + .../@egjs/hammerjs/tests/manual/log.html | 61 + .../@egjs/hammerjs/tests/manual/multiple.html | 73 + .../@egjs/hammerjs/tests/manual/nested.html | 217 + .../tests/manual/simulator-googlemaps.html | 100 + .../hammerjs/tests/manual/simulator.html | 118 + .../hammerjs/tests/manual/touchaction.html | 91 + .../@egjs/hammerjs/tests/manual/visual.html | 211 + .../@egjs/hammerjs/tests/unit/assets/utils.js | 50 + .../hammerjs/tests/unit/gestures/test_pan.js | 67 + .../tests/unit/gestures/test_pinch.js | 46 + .../tests/unit/gestures/test_swipe.js | 29 + .../@egjs/hammerjs/tests/unit/index.html | 43 + .../@egjs/hammerjs/tests/unit/test_enable.js | 179 + .../@egjs/hammerjs/tests/unit/test_events.js | 64 + .../hammerjs/tests/unit/test_gestures.js | 225 + .../@egjs/hammerjs/tests/unit/test_hammer.js | 197 + .../hammerjs/tests/unit/test_jquery_plugin.js | 63 + .../hammerjs/tests/unit/test_multiple_taps.js | 97 + .../unit/test_nested_gesture_recognizers.js | 170 + .../tests/unit/test_propagation_bubble.js | 60 + .../tests/unit/test_require_failure.js | 118 + .../unit/test_simultaneous_recognition.js | 238 + .../@egjs/hammerjs/tests/unit/test_utils.js | 167 + .../@expo/cli/node_modules/.bin/node-which | 1 - .../@expo/cli/node_modules/.bin/rimraf | 1 - .../config-plugins/node_modules/.bin/json5 | 1 - .../package-manager/node_modules/.bin/json5 | 1 - .../prebuild-config/node_modules/.bin/json5 | 1 - .../osascript/node_modules/.bin/node-which | 1 - .../node_modules/.bin/node-which | 1 - .../babel-loader/node_modules/.bin/json5 | 1 - .../node_modules/@types/hammerjs/LICENSE | 21 + .../node_modules/@types/hammerjs/README.md | 16 + .../node_modules/@types/hammerjs/index.d.ts | 375 + .../node_modules/@types/hammerjs/package.json | 25 + .../css-loader/node_modules/.bin/json5 | 1 - .../expo-cli/node_modules/.bin/rimraf | 1 - .../@expo/config/node_modules/.bin/json5 | 1 - .../expo-pwa/node_modules/.bin/semver | 1 - .../expo/node_modules/.bin/semver | 1 - .../express/node_modules/.bin/mime | 1 - .../hoist-non-react-statics/CHANGELOG.md | 37 + .../hoist-non-react-statics/LICENSE.md | 29 + .../hoist-non-react-statics/README.md | 55 + .../dist/hoist-non-react-statics.cjs.js | 103 + .../dist/hoist-non-react-statics.js | 449 + .../dist/hoist-non-react-statics.min.js | 1 + .../hoist-non-react-statics/package.json | 55 + .../hoist-non-react-statics/src/index.js | 104 + .../node_modules/.bin/json5 | 1 - .../node_modules/.bin/json5 | 1 - .../node_modules/prop-types/LICENSE | 21 + .../node_modules/prop-types/README.md | 302 + .../node_modules/prop-types/checkPropTypes.js | 103 + .../node_modules/prop-types/factory.js | 19 + .../prop-types/factoryWithThrowingShims.js | 65 + .../prop-types/factoryWithTypeCheckers.js | 610 + .../node_modules/prop-types/index.js | 19 + .../prop-types/lib/ReactPropTypesSecret.js | 12 + .../node_modules/prop-types/lib/has.js | 1 + .../prop-types/node_modules/.bin/loose-envify | 1 + .../node_modules/prop-types/package.json | 60 + .../node_modules/prop-types/prop-types.js | 1315 + .../node_modules/prop-types/prop-types.min.js | 1 + .../node_modules/.bin/node-which | 1 - .../node_modules/react-is/build-info.json | 8 + .../react-is/cjs/react-is.development.js | 120 +- .../react-is/cjs/react-is.production.min.js | 15 +- .../node_modules/react-is/package.json | 5 +- .../react-is/umd/react-is.development.js | 121 +- .../react-is/umd/react-is.production.min.js | 14 +- .../DrawerLayout/package.json | 6 + .../react-native-gesture-handler/LICENSE | 21 + .../react-native-gesture-handler/README.md | 60 + .../RNGestureHandler.podspec | 56 + .../Swipeable/package.json | 6 + .../android/build.gradle | 236 + .../common/GestureHandlerStateManager.kt | 5 + .../android/gradle.properties | 19 + .../ReanimatedEventDispatcher.kt | 10 + .../ReanimatedEventDispatcher.kt | 17 + .../RNGestureHandlerComponentsRegistry.java | 29 + .../gesturehandler/ReactContextExtensions.kt | 12 + .../android/src/main/AndroidManifest.xml | 3 + .../gesturehandler/RNGestureHandlerPackage.kt | 21 + .../core/FlingGestureHandler.kt | 100 + .../gesturehandler/core/GestureHandler.kt | 792 + .../GestureHandlerInteractionController.kt | 8 + .../core/GestureHandlerOrchestrator.kt | 680 + .../core/GestureHandlerRegistry.kt | 8 + .../gesturehandler/core/GestureUtils.kt | 47 + .../core/LongPressGestureHandler.kt | 100 + .../core/ManualGestureHandler.kt | 11 + .../core/NativeViewGestureHandler.kt | 211 + .../core/OnTouchEventListener.kt | 9 + .../gesturehandler/core/PanGestureHandler.kt | 322 + .../core/PinchGestureHandler.kt | 103 + .../core/PointerEventsConfig.kt | 23 + .../core/RotationGestureDetector.kt | 125 + .../core/RotationGestureHandler.kt | 93 + .../core/ScaleGestureDetector.java | 558 + .../gesturehandler/core/TapGestureHandler.kt | 168 + .../core/ViewConfigurationHelper.kt | 10 + .../gesturehandler/react/Extensions.kt | 11 + .../RNGestureHandlerButtonViewManager.kt | 386 + .../react/RNGestureHandlerEnabledRootView.kt | 15 + .../react/RNGestureHandlerEvent.kt | 77 + .../RNGestureHandlerEventDataExtractor.kt | 8 + .../RNGestureHandlerInteractionManager.kt | 67 + .../react/RNGestureHandlerModule.kt | 735 + .../react/RNGestureHandlerRegistry.kt | 100 + .../react/RNGestureHandlerRootHelper.kt | 134 + .../react/RNGestureHandlerRootInterface.kt | 5 + .../react/RNGestureHandlerRootView.kt | 68 + .../react/RNGestureHandlerRootViewManager.kt | 51 + .../react/RNGestureHandlerStateChangeEvent.kt | 72 + .../react/RNGestureHandlerTouchEvent.kt | 69 + .../react/RNViewConfigurationHelper.kt | 51 + .../android/src/main/jni/CMakeLists.txt | 25 + .../android/src/main/jni/cpp-adapter.cpp | 44 + ...RNGestureHandlerButtonManagerDelegate.java | 50 + ...NGestureHandlerButtonManagerInterface.java | 23 + ...GestureHandlerRootViewManagerDelegate.java | 25 + ...estureHandlerRootViewManagerInterface.java | 16 + .../gesturehandler/ReactContextExtensions.kt | 13 + .../ios/Handlers/RNFlingHandler.h | 4 + .../ios/Handlers/RNFlingHandler.m | 152 + .../ios/Handlers/RNForceTouchHandler.h | 4 + .../ios/Handlers/RNForceTouchHandler.m | 175 + .../ios/Handlers/RNLongPressHandler.h | 12 + .../ios/Handlers/RNLongPressHandler.m | 183 + .../ios/Handlers/RNManualHandler.h | 4 + .../ios/Handlers/RNManualHandler.m | 88 + .../ios/Handlers/RNNativeViewHandler.h | 15 + .../ios/Handlers/RNNativeViewHandler.mm | 193 + .../ios/Handlers/RNPanHandler.h | 12 + .../ios/Handlers/RNPanHandler.m | 331 + .../ios/Handlers/RNPinchHandler.h | 12 + .../ios/Handlers/RNPinchHandler.m | 95 + .../ios/Handlers/RNRotationHandler.h | 12 + .../ios/Handlers/RNRotationHandler.m | 93 + .../ios/Handlers/RNTapHandler.h | 12 + .../ios/Handlers/RNTapHandler.m | 265 + .../ios/RNGHTouchEventType.h | 9 + .../ios/RNGestureHandler.h | 90 + .../ios/RNGestureHandler.m | 482 + .../project.pbxproj | 690 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../ios/RNGestureHandlerActionType.h | 10 + .../ios/RNGestureHandlerButton.h | 19 + .../ios/RNGestureHandlerButton.m | 77 + .../ios/RNGestureHandlerButtonComponentView.h | 17 + .../RNGestureHandlerButtonComponentView.mm | 60 + .../ios/RNGestureHandlerButtonManager.h | 5 + .../ios/RNGestureHandlerButtonManager.m | 34 + .../ios/RNGestureHandlerDirection.h | 8 + .../ios/RNGestureHandlerEvents.h | 64 + .../ios/RNGestureHandlerEvents.m | 250 + .../ios/RNGestureHandlerManager.h | 35 + .../ios/RNGestureHandlerManager.mm | 304 + .../ios/RNGestureHandlerModule.h | 7 + .../ios/RNGestureHandlerModule.mm | 316 + .../ios/RNGestureHandlerPointerTracker.h | 25 + .../ios/RNGestureHandlerPointerTracker.m | 243 + .../ios/RNGestureHandlerRegistry.h | 21 + .../ios/RNGestureHandlerRegistry.m | 63 + .../RNGestureHandlerRootViewComponentView.mm | 21 + .../ios/RNGestureHandlerState.h | 10 + .../ios/RNGestureHandlerStateManager.h | 5 + .../ios/RNManualActivationRecognizer.h | 10 + .../ios/RNManualActivationRecognizer.m | 87 + .../ios/RNRootViewGestureRecognizer.h | 17 + .../ios/RNRootViewGestureRecognizer.m | 101 + .../jest-utils/package.json | 6 + .../react-native-gesture-handler/jestSetup.js | 7 + .../lib/commonjs/ActionType.js | 15 + .../lib/commonjs/ActionType.js.map | 1 + .../lib/commonjs/Directions.js | 15 + .../lib/commonjs/Directions.js.map | 1 + .../EnableExperimentalWebImplementation.js | 31 + ...EnableExperimentalWebImplementation.js.map | 1 + .../GestureHandlerRootView.android.js | 30 + .../GestureHandlerRootView.android.js.map | 1 + .../lib/commonjs/GestureHandlerRootView.js | 25 + .../commonjs/GestureHandlerRootView.js.map | 1 + .../commonjs/GestureHandlerRootView.web.js | 19 + .../GestureHandlerRootView.web.js.map | 1 + .../lib/commonjs/PlatformConstants.js | 15 + .../lib/commonjs/PlatformConstants.js.map | 1 + .../lib/commonjs/PlatformConstants.web.js | 14 + .../lib/commonjs/PlatformConstants.web.js.map | 1 + .../lib/commonjs/RNGestureHandlerModule.js | 29 + .../commonjs/RNGestureHandlerModule.js.map | 1 + .../commonjs/RNGestureHandlerModule.macos.js | 147 + .../RNGestureHandlerModule.macos.js.map | 1 + .../commonjs/RNGestureHandlerModule.web.js | 158 + .../RNGestureHandlerModule.web.js.map | 1 + .../RNGestureHandlerModule.windows.js | 156 + .../RNGestureHandlerModule.windows.js.map | 1 + .../lib/commonjs/RNRenderer.js | 16 + .../lib/commonjs/RNRenderer.js.map | 1 + .../lib/commonjs/RNRenderer.web.js | 11 + .../lib/commonjs/RNRenderer.web.js.map | 1 + .../lib/commonjs/State.js | 18 + .../lib/commonjs/State.js.map | 1 + .../lib/commonjs/TouchEventType.js | 16 + .../lib/commonjs/TouchEventType.js.map | 1 + .../lib/commonjs/components/DrawerLayout.js | 565 + .../commonjs/components/DrawerLayout.js.map | 1 + .../lib/commonjs/components/GestureButtons.js | 240 + .../commonjs/components/GestureButtons.js.map | 1 + .../commonjs/components/GestureComponents.js | 115 + .../components/GestureComponents.js.map | 1 + .../components/GestureComponents.web.js | 51 + .../components/GestureComponents.web.js.map | 1 + .../components/GestureHandlerButton.js | 16 + .../components/GestureHandlerButton.js.map | 1 + .../components/GestureHandlerButton.web.js | 24 + .../GestureHandlerButton.web.js.map | 1 + .../lib/commonjs/components/Swipeable.js | 369 + .../lib/commonjs/components/Swipeable.js.map | 1 + .../components/touchables/GenericTouchable.js | 284 + .../touchables/GenericTouchable.js.map | 1 + .../touchables/TouchableHighlight.js | 109 + .../touchables/TouchableHighlight.js.map | 1 + .../TouchableNativeFeedback.android.js | 100 + .../TouchableNativeFeedback.android.js.map | 1 + .../touchables/TouchableNativeFeedback.js | 12 + .../touchables/TouchableNativeFeedback.js.map | 1 + .../components/touchables/TouchableOpacity.js | 77 + .../touchables/TouchableOpacity.js.map | 1 + .../touchables/TouchableWithoutFeedback.js | 26 + .../TouchableWithoutFeedback.js.map | 1 + .../commonjs/components/touchables/index.js | 40 + .../components/touchables/index.js.map | 1 + .../RNGestureHandlerButtonNativeComponent.js | 15 + ...GestureHandlerButtonNativeComponent.js.map | 1 + ...RNGestureHandlerRootViewNativeComponent.js | 15 + ...stureHandlerRootViewNativeComponent.js.map | 1 + .../lib/commonjs/gestureHandlerRootHOC.js | 40 + .../lib/commonjs/gestureHandlerRootHOC.js.map | 1 + .../lib/commonjs/getShadowNodeFromRef.js | 27 + .../lib/commonjs/getShadowNodeFromRef.js.map | 1 + .../lib/commonjs/getShadowNodeFromRef.web.js | 15 + .../commonjs/getShadowNodeFromRef.web.js.map | 1 + .../commonjs/handlers/FlingGestureHandler.js | 25 + .../handlers/FlingGestureHandler.js.map | 1 + .../handlers/ForceTouchGestureHandler.js | 49 + .../handlers/ForceTouchGestureHandler.js.map | 1 + .../handlers/LongPressGestureHandler.js | 27 + .../handlers/LongPressGestureHandler.js.map | 1 + .../handlers/NativeViewGestureHandler.js | 27 + .../handlers/NativeViewGestureHandler.js.map | 1 + .../commonjs/handlers/PanGestureHandler.js | 123 + .../handlers/PanGestureHandler.js.map | 1 + .../commonjs/handlers/PinchGestureHandler.js | 23 + .../handlers/PinchGestureHandler.js.map | 1 + .../handlers/PressabilityDebugView.js | 14 + .../handlers/PressabilityDebugView.js.map | 1 + .../handlers/PressabilityDebugView.web.js | 12 + .../handlers/PressabilityDebugView.web.js.map | 1 + .../handlers/RotationGestureHandler.js | 23 + .../handlers/RotationGestureHandler.js.map | 1 + .../commonjs/handlers/TapGestureHandler.js | 27 + .../handlers/TapGestureHandler.js.map | 1 + .../lib/commonjs/handlers/createHandler.js | 454 + .../commonjs/handlers/createHandler.js.map | 1 + .../commonjs/handlers/createNativeWrapper.js | 74 + .../handlers/createNativeWrapper.js.map | 1 + .../commonjs/handlers/gestureHandlerCommon.js | 100 + .../handlers/gestureHandlerCommon.js.map | 1 + .../handlers/gestureHandlerTypesCompat.js | 6 + .../handlers/gestureHandlerTypesCompat.js.map | 1 + .../handlers/gestures/GestureDetector.js | 645 + .../handlers/gestures/GestureDetector.js.map | 1 + .../handlers/gestures/eventReceiver.js | 147 + .../handlers/gestures/eventReceiver.js.map | 1 + .../handlers/gestures/flingGesture.js | 34 + .../handlers/gestures/flingGesture.js.map | 1 + .../handlers/gestures/forceTouchGesture.js | 65 + .../gestures/forceTouchGesture.js.map | 1 + .../lib/commonjs/handlers/gestures/gesture.js | 228 + .../commonjs/handlers/gestures/gesture.js.map | 1 + .../handlers/gestures/gestureComposition.js | 105 + .../gestures/gestureComposition.js.map | 1 + .../handlers/gestures/gestureObjects.js | 85 + .../handlers/gestures/gestureObjects.js.map | 1 + .../handlers/gestures/gestureStateManager.js | 65 + .../gestures/gestureStateManager.js.map | 1 + .../gestures/gestureStateManager.web.js | 32 + .../gestures/gestureStateManager.web.js.map | 1 + .../handlers/gestures/longPressGesture.js | 35 + .../handlers/gestures/longPressGesture.js.map | 1 + .../handlers/gestures/manualGesture.js | 31 + .../handlers/gestures/manualGesture.js.map | 1 + .../handlers/gestures/nativeGesture.js | 34 + .../handlers/gestures/nativeGesture.js.map | 1 + .../commonjs/handlers/gestures/panGesture.js | 149 + .../handlers/gestures/panGesture.js.map | 1 + .../handlers/gestures/pinchGesture.js | 45 + .../handlers/gestures/pinchGesture.js.map | 1 + .../handlers/gestures/reanimatedWrapper.js | 34 + .../gestures/reanimatedWrapper.js.map | 1 + .../handlers/gestures/rotationGesture.js | 45 + .../handlers/gestures/rotationGesture.js.map | 1 + .../commonjs/handlers/gestures/tapGesture.js | 60 + .../handlers/gestures/tapGesture.js.map | 1 + .../lib/commonjs/handlers/handlersRegistry.js | 67 + .../commonjs/handlers/handlersRegistry.js.map | 1 + .../lib/commonjs/index.js | 246 + .../lib/commonjs/index.js.map | 1 + .../lib/commonjs/init.js | 32 + .../lib/commonjs/init.js.map | 1 + .../lib/commonjs/jestUtils/index.js | 20 + .../lib/commonjs/jestUtils/index.js.map | 1 + .../lib/commonjs/jestUtils/jestUtils.js | 375 + .../lib/commonjs/jestUtils/jestUtils.js.map | 1 + .../lib/commonjs/mocks.js | 66 + .../lib/commonjs/mocks.js.map | 1 + .../lib/commonjs/typeUtils.js | 2 + .../lib/commonjs/typeUtils.js.map | 1 + .../lib/commonjs/utils.js | 82 + .../lib/commonjs/utils.js.map | 1 + .../lib/commonjs/web/constants.js | 16 + .../lib/commonjs/web/constants.js.map | 1 + .../web/detectors/RotationGestureDetector.js | 165 + .../detectors/RotationGestureDetector.js.map | 1 + .../web/detectors/ScaleGestureDetector.js | 156 + .../web/detectors/ScaleGestureDetector.js.map | 1 + .../web/handlers/FlingGestureHandler.js | 182 + .../web/handlers/FlingGestureHandler.js.map | 1 + .../commonjs/web/handlers/GestureHandler.js | 818 + .../web/handlers/GestureHandler.js.map | 1 + .../web/handlers/LongPressGestureHandler.js | 152 + .../handlers/LongPressGestureHandler.js.map | 1 + .../web/handlers/ManualGestureHandler.js | 66 + .../web/handlers/ManualGestureHandler.js.map | 1 + .../web/handlers/NativeViewGestureHandler.js | 170 + .../handlers/NativeViewGestureHandler.js.map | 1 + .../web/handlers/PanGestureHandler.js | 463 + .../web/handlers/PanGestureHandler.js.map | 1 + .../web/handlers/PinchGestureHandler.js | 179 + .../web/handlers/PinchGestureHandler.js.map | 1 + .../web/handlers/RotationGestureHandler.js | 192 + .../handlers/RotationGestureHandler.js.map | 1 + .../web/handlers/TapGestureHandler.js | 296 + .../web/handlers/TapGestureHandler.js.map | 1 + .../lib/commonjs/web/interfaces.js | 55 + .../lib/commonjs/web/interfaces.js.map | 1 + .../lib/commonjs/web/tools/EventManager.js | 113 + .../commonjs/web/tools/EventManager.js.map | 1 + .../web/tools/GestureHandlerOrchestrator.js | 362 + .../tools/GestureHandlerOrchestrator.js.map | 1 + .../commonjs/web/tools/InteractionManager.js | 116 + .../web/tools/InteractionManager.js.map | 1 + .../lib/commonjs/web/tools/NodeManager.js | 48 + .../lib/commonjs/web/tools/NodeManager.js.map | 1 + .../commonjs/web/tools/PointerEventManager.js | 130 + .../web/tools/PointerEventManager.js.map | 1 + .../lib/commonjs/web/tools/PointerTracker.js | 222 + .../commonjs/web/tools/PointerTracker.js.map | 1 + .../commonjs/web/tools/TouchEventManager.js | 138 + .../web/tools/TouchEventManager.js.map | 1 + .../lib/commonjs/web/utils.js | 15 + .../lib/commonjs/web/utils.js.map | 1 + .../web_hammer/DiscreteGestureHandler.js | 105 + .../web_hammer/DiscreteGestureHandler.js.map | 1 + .../web_hammer/DraggingGestureHandler.js | 53 + .../web_hammer/DraggingGestureHandler.js.map | 1 + .../lib/commonjs/web_hammer/Errors.js | 16 + .../lib/commonjs/web_hammer/Errors.js.map | 1 + .../web_hammer/FlingGestureHandler.js | 170 + .../web_hammer/FlingGestureHandler.js.map | 1 + .../lib/commonjs/web_hammer/GestureHandler.js | 577 + .../commonjs/web_hammer/GestureHandler.js.map | 1 + .../web_hammer/IndiscreteGestureHandler.js | 54 + .../IndiscreteGestureHandler.js.map | 1 + .../web_hammer/LongPressGestureHandler.js | 71 + .../web_hammer/LongPressGestureHandler.js.map | 1 + .../web_hammer/NativeViewGestureHandler.js | 66 + .../NativeViewGestureHandler.js.map | 1 + .../lib/commonjs/web_hammer/NodeManager.js | 46 + .../commonjs/web_hammer/NodeManager.js.map | 1 + .../commonjs/web_hammer/PanGestureHandler.js | 208 + .../web_hammer/PanGestureHandler.js.map | 1 + .../web_hammer/PinchGestureHandler.js | 40 + .../web_hammer/PinchGestureHandler.js.map | 1 + .../web_hammer/PressGestureHandler.js | 188 + .../web_hammer/PressGestureHandler.js.map | 1 + .../web_hammer/RotationGestureHandler.js | 44 + .../web_hammer/RotationGestureHandler.js.map | 1 + .../commonjs/web_hammer/TapGestureHandler.js | 192 + .../web_hammer/TapGestureHandler.js.map | 1 + .../lib/commonjs/web_hammer/constants.js | 64 + .../lib/commonjs/web_hammer/constants.js.map | 1 + .../lib/commonjs/web_hammer/utils.js | 42 + .../lib/commonjs/web_hammer/utils.js.map | 1 + .../lib/module/ActionType.js | 7 + .../lib/module/ActionType.js.map | 1 + .../lib/module/Directions.js | 7 + .../lib/module/Directions.js.map | 1 + .../EnableExperimentalWebImplementation.js | 20 + ...EnableExperimentalWebImplementation.js.map | 1 + .../module/GestureHandlerRootView.android.js | 14 + .../GestureHandlerRootView.android.js.map | 1 + .../lib/module/GestureHandlerRootView.js | 11 + .../lib/module/GestureHandlerRootView.js.map | 1 + .../lib/module/GestureHandlerRootView.web.js | 6 + .../module/GestureHandlerRootView.web.js.map | 1 + .../lib/module/PlatformConstants.js | 5 + .../lib/module/PlatformConstants.js.map | 1 + .../lib/module/PlatformConstants.web.js | 7 + .../lib/module/PlatformConstants.web.js.map | 1 + .../lib/module/RNGestureHandlerModule.js | 19 + .../lib/module/RNGestureHandlerModule.js.map | 1 + .../module/RNGestureHandlerModule.macos.js | 109 + .../RNGestureHandlerModule.macos.js.map | 1 + .../lib/module/RNGestureHandlerModule.web.js | 119 + .../module/RNGestureHandlerModule.web.js.map | 1 + .../module/RNGestureHandlerModule.windows.js | 117 + .../RNGestureHandlerModule.windows.js.map | 1 + .../lib/module/RNRenderer.js | 4 + .../lib/module/RNRenderer.js.map | 1 + .../lib/module/RNRenderer.web.js | 4 + .../lib/module/RNRenderer.web.js.map | 1 + .../lib/module/State.js | 10 + .../lib/module/State.js.map | 1 + .../lib/module/TouchEventType.js | 8 + .../lib/module/TouchEventType.js.map | 1 + .../lib/module/components/DrawerLayout.js | 550 + .../lib/module/components/DrawerLayout.js.map | 1 + .../lib/module/components/GestureButtons.js | 206 + .../module/components/GestureButtons.js.map | 1 + .../module/components/GestureComponents.js | 90 + .../components/GestureComponents.js.map | 1 + .../components/GestureComponents.web.js | 29 + .../components/GestureComponents.web.js.map | 1 + .../module/components/GestureHandlerButton.js | 6 + .../components/GestureHandlerButton.js.map | 1 + .../components/GestureHandlerButton.web.js | 9 + .../GestureHandlerButton.web.js.map | 1 + .../lib/module/components/Swipeable.js | 351 + .../lib/module/components/Swipeable.js.map | 1 + .../components/touchables/GenericTouchable.js | 268 + .../touchables/GenericTouchable.js.map | 1 + .../touchables/TouchableHighlight.js | 95 + .../touchables/TouchableHighlight.js.map | 1 + .../TouchableNativeFeedback.android.js | 84 + .../TouchableNativeFeedback.android.js.map | 1 + .../touchables/TouchableNativeFeedback.js | 3 + .../touchables/TouchableNativeFeedback.js.map | 1 + .../components/touchables/TouchableOpacity.js | 63 + .../touchables/TouchableOpacity.js.map | 1 + .../touchables/TouchableWithoutFeedback.js | 10 + .../TouchableWithoutFeedback.js.map | 1 + .../lib/module/components/touchables/index.js | 5 + .../module/components/touchables/index.js.map | 1 + .../RNGestureHandlerButtonNativeComponent.js | 3 + ...GestureHandlerButtonNativeComponent.js.map | 1 + ...RNGestureHandlerRootViewNativeComponent.js | 3 + ...stureHandlerRootViewNativeComponent.js.map | 1 + .../lib/module/gestureHandlerRootHOC.js | 22 + .../lib/module/gestureHandlerRootHOC.js.map | 1 + .../lib/module/getShadowNodeFromRef.js | 20 + .../lib/module/getShadowNodeFromRef.js.map | 1 + .../lib/module/getShadowNodeFromRef.web.js | 8 + .../module/getShadowNodeFromRef.web.js.map | 1 + .../module/handlers/FlingGestureHandler.js | 11 + .../handlers/FlingGestureHandler.js.map | 1 + .../handlers/ForceTouchGestureHandler.js | 31 + .../handlers/ForceTouchGestureHandler.js.map | 1 + .../handlers/LongPressGestureHandler.js | 13 + .../handlers/LongPressGestureHandler.js.map | 1 + .../handlers/NativeViewGestureHandler.js | 12 + .../handlers/NativeViewGestureHandler.js.map | 1 + .../lib/module/handlers/PanGestureHandler.js | 107 + .../module/handlers/PanGestureHandler.js.map | 1 + .../module/handlers/PinchGestureHandler.js | 10 + .../handlers/PinchGestureHandler.js.map | 1 + .../module/handlers/PressabilityDebugView.js | 3 + .../handlers/PressabilityDebugView.js.map | 1 + .../handlers/PressabilityDebugView.web.js | 5 + .../handlers/PressabilityDebugView.web.js.map | 1 + .../module/handlers/RotationGestureHandler.js | 10 + .../handlers/RotationGestureHandler.js.map | 1 + .../lib/module/handlers/TapGestureHandler.js | 13 + .../module/handlers/TapGestureHandler.js.map | 1 + .../lib/module/handlers/createHandler.js | 425 + .../lib/module/handlers/createHandler.js.map | 1 + .../module/handlers/createNativeWrapper.js | 62 + .../handlers/createNativeWrapper.js.map | 1 + .../module/handlers/gestureHandlerCommon.js | 79 + .../handlers/gestureHandlerCommon.js.map | 1 + .../handlers/gestureHandlerTypesCompat.js | 2 + .../handlers/gestureHandlerTypesCompat.js.map | 1 + .../handlers/gestures/GestureDetector.js | 600 + .../handlers/gestures/GestureDetector.js.map | 1 + .../module/handlers/gestures/eventReceiver.js | 131 + .../handlers/gestures/eventReceiver.js.map | 1 + .../module/handlers/gestures/flingGesture.js | 24 + .../handlers/gestures/flingGesture.js.map | 1 + .../handlers/gestures/forceTouchGesture.js | 56 + .../gestures/forceTouchGesture.js.map | 1 + .../lib/module/handlers/gestures/gesture.js | 209 + .../module/handlers/gestures/gesture.js.map | 1 + .../handlers/gestures/gestureComposition.js | 90 + .../gestures/gestureComposition.js.map | 1 + .../handlers/gestures/gestureObjects.js | 67 + .../handlers/gestures/gestureObjects.js.map | 1 + .../handlers/gestures/gestureStateManager.js | 54 + .../gestures/gestureStateManager.js.map | 1 + .../gestures/gestureStateManager.web.js | 21 + .../gestures/gestureStateManager.web.js.map | 1 + .../handlers/gestures/longPressGesture.js | 25 + .../handlers/gestures/longPressGesture.js.map | 1 + .../module/handlers/gestures/manualGesture.js | 22 + .../handlers/gestures/manualGesture.js.map | 1 + .../module/handlers/gestures/nativeGesture.js | 24 + .../handlers/gestures/nativeGesture.js.map | 1 + .../module/handlers/gestures/panGesture.js | 140 + .../handlers/gestures/panGesture.js.map | 1 + .../module/handlers/gestures/pinchGesture.js | 36 + .../handlers/gestures/pinchGesture.js.map | 1 + .../handlers/gestures/reanimatedWrapper.js | 27 + .../gestures/reanimatedWrapper.js.map | 1 + .../handlers/gestures/rotationGesture.js | 36 + .../handlers/gestures/rotationGesture.js.map | 1 + .../module/handlers/gestures/tapGesture.js | 50 + .../handlers/gestures/tapGesture.js.map | 1 + .../lib/module/handlers/handlersRegistry.js | 44 + .../module/handlers/handlersRegistry.js.map | 1 + .../lib/module/index.js | 24 + .../lib/module/index.js.map | 1 + .../lib/module/init.js | 16 + .../lib/module/init.js.map | 1 + .../lib/module/jestUtils/index.js | 2 + .../lib/module/jestUtils/index.js.map | 1 + .../lib/module/jestUtils/jestUtils.js | 350 + .../lib/module/jestUtils/jestUtils.js.map | 1 + .../lib/module/mocks.js | 56 + .../lib/module/mocks.js.map | 1 + .../lib/module/typeUtils.js | 2 + .../lib/module/typeUtils.js.map | 1 + .../lib/module/utils.js | 54 + .../lib/module/utils.js.map | 1 + .../lib/module/web/constants.js | 8 + .../lib/module/web/constants.js.map | 1 + .../web/detectors/RotationGestureDetector.js | 155 + .../detectors/RotationGestureDetector.js.map | 1 + .../web/detectors/ScaleGestureDetector.js | 145 + .../web/detectors/ScaleGestureDetector.js.map | 1 + .../web/handlers/FlingGestureHandler.js | 167 + .../web/handlers/FlingGestureHandler.js.map | 1 + .../lib/module/web/handlers/GestureHandler.js | 796 + .../module/web/handlers/GestureHandler.js.map | 1 + .../web/handlers/LongPressGestureHandler.js | 138 + .../handlers/LongPressGestureHandler.js.map | 1 + .../web/handlers/ManualGestureHandler.js | 54 + .../web/handlers/ManualGestureHandler.js.map | 1 + .../web/handlers/NativeViewGestureHandler.js | 156 + .../handlers/NativeViewGestureHandler.js.map | 1 + .../module/web/handlers/PanGestureHandler.js | 445 + .../web/handlers/PanGestureHandler.js.map | 1 + .../web/handlers/PinchGestureHandler.js | 164 + .../web/handlers/PinchGestureHandler.js.map | 1 + .../web/handlers/RotationGestureHandler.js | 177 + .../handlers/RotationGestureHandler.js.map | 1 + .../module/web/handlers/TapGestureHandler.js | 281 + .../web/handlers/TapGestureHandler.js.map | 1 + .../lib/module/web/interfaces.js | 45 + .../lib/module/web/interfaces.js.map | 1 + .../lib/module/web/tools/EventManager.js | 104 + .../lib/module/web/tools/EventManager.js.map | 1 + .../web/tools/GestureHandlerOrchestrator.js | 347 + .../tools/GestureHandlerOrchestrator.js.map | 1 + .../module/web/tools/InteractionManager.js | 107 + .../web/tools/InteractionManager.js.map | 1 + .../lib/module/web/tools/NodeManager.js | 39 + .../lib/module/web/tools/NodeManager.js.map | 1 + .../module/web/tools/PointerEventManager.js | 116 + .../web/tools/PointerEventManager.js.map | 1 + .../lib/module/web/tools/PointerTracker.js | 212 + .../module/web/tools/PointerTracker.js.map | 1 + .../lib/module/web/tools/TouchEventManager.js | 124 + .../module/web/tools/TouchEventManager.js.map | 1 + .../lib/module/web/utils.js | 8 + .../lib/module/web/utils.js.map | 1 + .../web_hammer/DiscreteGestureHandler.js | 94 + .../web_hammer/DiscreteGestureHandler.js.map | 1 + .../web_hammer/DraggingGestureHandler.js | 40 + .../web_hammer/DraggingGestureHandler.js.map | 1 + .../lib/module/web_hammer/Errors.js | 7 + .../lib/module/web_hammer/Errors.js.map | 1 + .../module/web_hammer/FlingGestureHandler.js | 156 + .../web_hammer/FlingGestureHandler.js.map | 1 + .../lib/module/web_hammer/GestureHandler.js | 562 + .../module/web_hammer/GestureHandler.js.map | 1 + .../web_hammer/IndiscreteGestureHandler.js | 44 + .../IndiscreteGestureHandler.js.map | 1 + .../web_hammer/LongPressGestureHandler.js | 58 + .../web_hammer/LongPressGestureHandler.js.map | 1 + .../web_hammer/NativeViewGestureHandler.js | 49 + .../NativeViewGestureHandler.js.map | 1 + .../lib/module/web_hammer/NodeManager.js | 33 + .../lib/module/web_hammer/NodeManager.js.map | 1 + .../module/web_hammer/PanGestureHandler.js | 194 + .../web_hammer/PanGestureHandler.js.map | 1 + .../module/web_hammer/PinchGestureHandler.js | 29 + .../web_hammer/PinchGestureHandler.js.map | 1 + .../module/web_hammer/PressGestureHandler.js | 174 + .../web_hammer/PressGestureHandler.js.map | 1 + .../web_hammer/RotationGestureHandler.js | 32 + .../web_hammer/RotationGestureHandler.js.map | 1 + .../module/web_hammer/TapGestureHandler.js | 180 + .../web_hammer/TapGestureHandler.js.map | 1 + .../lib/module/web_hammer/constants.js | 43 + .../lib/module/web_hammer/constants.js.map | 1 + .../lib/module/web_hammer/utils.js | 19 + .../lib/module/web_hammer/utils.js.map | 1 + .../lib/typescript/ActionType.d.ts | 7 + .../lib/typescript/Directions.d.ts | 7 + .../EnableExperimentalWebImplementation.d.ts | 2 + .../GestureHandlerRootView.android.d.ts | 5 + .../typescript/GestureHandlerRootView.d.ts | 5 + .../GestureHandlerRootView.web.d.ts | 5 + .../lib/typescript/PlatformConstants.d.ts | 5 + .../lib/typescript/PlatformConstants.web.d.ts | 4 + .../typescript/RNGestureHandlerModule.d.ts | 13 + .../RNGestureHandlerModule.macos.d.ts | 47 + .../RNGestureHandlerModule.web.d.ts | 48 + .../RNGestureHandlerModule.windows.d.ts | 48 + .../lib/typescript/RNRenderer.d.ts | 1 + .../lib/typescript/RNRenderer.web.d.ts | 3 + .../lib/typescript/State.d.ts | 9 + .../lib/typescript/TouchEventType.d.ts | 8 + .../typescript/components/DrawerLayout.d.ts | 142 + .../typescript/components/GestureButtons.d.ts | 121 + .../components/GestureComponents.d.ts | 22 + .../components/GestureComponents.web.d.ts | 8 + .../components/GestureHandlerButton.d.ts | 4 + .../components/GestureHandlerButton.web.d.ts | 4 + .../lib/typescript/components/Swipeable.d.ts | 159 + .../touchables/GenericTouchable.d.ts | 66 + .../touchables/TouchableHighlight.d.ts | 34 + .../TouchableNativeFeedback.android.d.ts | 43 + .../touchables/TouchableNativeFeedback.d.ts | 2 + .../touchables/TouchableOpacity.d.ts | 25 + .../touchables/TouchableWithoutFeedback.d.ts | 6 + .../components/touchables/index.d.ts | 4 + ...RNGestureHandlerButtonNativeComponent.d.ts | 14 + ...GestureHandlerRootViewNativeComponent.d.ts | 6 + .../lib/typescript/gestureHandlerRootHOC.d.ts | 3 + .../lib/typescript/getShadowNodeFromRef.d.ts | 1 + .../typescript/getShadowNodeFromRef.web.d.ts | 1 + .../handlers/FlingGestureHandler.d.ts | 34 + .../handlers/ForceTouchGestureHandler.d.ts | 44 + .../handlers/LongPressGestureHandler.d.ts | 56 + .../handlers/NativeViewGestureHandler.d.ts | 28 + .../handlers/PanGestureHandler.d.ts | 139 + .../handlers/PinchGestureHandler.d.ts | 29 + .../handlers/PressabilityDebugView.d.ts | 1 + .../handlers/PressabilityDebugView.web.d.ts | 1 + .../handlers/RotationGestureHandler.d.ts | 29 + .../handlers/TapGestureHandler.d.ts | 57 + .../typescript/handlers/createHandler.d.ts | 11 + .../handlers/createNativeWrapper.d.ts | 3 + .../handlers/gestureHandlerCommon.d.ts | 65 + .../handlers/gestureHandlerTypesCompat.d.ts | 42 + .../handlers/gestures/GestureDetector.d.ts | 19 + .../handlers/gestures/eventReceiver.d.ts | 4 + .../handlers/gestures/flingGesture.d.ts | 9 + .../handlers/gestures/forceTouchGesture.d.ts | 15 + .../typescript/handlers/gestures/gesture.d.ts | 107 + .../handlers/gestures/gestureComposition.d.ts | 21 + .../handlers/gestures/gestureObjects.d.ts | 39 + .../gestures/gestureStateManager.d.ts | 9 + .../gestures/gestureStateManager.web.d.ts | 4 + .../handlers/gestures/longPressGesture.d.ts | 9 + .../handlers/gestures/manualGesture.d.ts | 7 + .../handlers/gestures/nativeGesture.d.ts | 9 + .../handlers/gestures/panGesture.d.ts | 26 + .../handlers/gestures/pinchGesture.d.ts | 11 + .../handlers/gestures/reanimatedWrapper.d.ts | 14 + .../handlers/gestures/rotationGesture.d.ts | 12 + .../handlers/gestures/tapGesture.d.ts | 14 + .../typescript/handlers/handlersRegistry.d.ts | 14 + .../lib/typescript/index.d.ts | 48 + .../lib/typescript/init.d.ts | 2 + .../lib/typescript/jestUtils/index.d.ts | 1 + .../lib/typescript/jestUtils/jestUtils.d.ts | 28 + .../lib/typescript/mocks.d.ts | 44 + .../lib/typescript/typeUtils.d.ts | 1 + .../lib/typescript/utils.d.ts | 13 + .../lib/typescript/web/constants.d.ts | 7 + .../detectors/RotationGestureDetector.d.ts | 30 + .../web/detectors/ScaleGestureDetector.d.ts | 29 + .../web/handlers/FlingGestureHandler.d.ts | 34 + .../web/handlers/GestureHandler.d.ts | 95 + .../web/handlers/LongPressGestureHandler.d.ts | 30 + .../web/handlers/ManualGestureHandler.d.ts | 13 + .../handlers/NativeViewGestureHandler.d.ts | 25 + .../web/handlers/PanGestureHandler.d.ts | 60 + .../web/handlers/PinchGestureHandler.d.ts | 29 + .../web/handlers/RotationGestureHandler.d.ts | 30 + .../web/handlers/TapGestureHandler.d.ts | 46 + .../lib/typescript/web/interfaces.d.ts | 139 + .../typescript/web/tools/EventManager.d.ts | 30 + .../web/tools/GestureHandlerOrchestrator.d.ts | 30 + .../web/tools/InteractionManager.d.ts | 16 + .../lib/typescript/web/tools/NodeManager.d.ts | 11 + .../web/tools/PointerEventManager.d.ts | 6 + .../typescript/web/tools/PointerTracker.d.ts | 52 + .../web/tools/TouchEventManager.d.ts | 6 + .../lib/typescript/web/utils.d.ts | 4 + .../web_hammer/DiscreteGestureHandler.d.ts | 20 + .../web_hammer/DraggingGestureHandler.d.ts | 15 + .../lib/typescript/web_hammer/Errors.d.ts | 3 + .../web_hammer/FlingGestureHandler.d.ts | 43 + .../typescript/web_hammer/GestureHandler.d.ts | 145 + .../web_hammer/IndiscreteGestureHandler.d.ts | 40 + .../web_hammer/LongPressGestureHandler.d.ts | 38 + .../web_hammer/NativeViewGestureHandler.d.ts | 7 + .../typescript/web_hammer/NodeManager.d.ts | 8 + .../web_hammer/PanGestureHandler.d.ts | 56 + .../web_hammer/PinchGestureHandler.d.ts | 13 + .../web_hammer/PressGestureHandler.d.ts | 83 + .../web_hammer/RotationGestureHandler.d.ts | 13 + .../web_hammer/TapGestureHandler.d.ts | 57 + .../lib/typescript/web_hammer/constants.d.ts | 39 + .../lib/typescript/web_hammer/utils.d.ts | 9 + .../node_modules/.bin/react-native | 1 + .../react-native-gesture-handler/package.json | 152 + .../src/ActionType.ts | 9 + .../src/Directions.ts | 9 + .../EnableExperimentalWebImplementation.ts | 27 + .../src/GestureHandlerRootView.android.tsx | 24 + .../src/GestureHandlerRootView.tsx | 18 + .../src/GestureHandlerRootView.web.tsx | 12 + .../src/PlatformConstants.ts | 8 + .../src/PlatformConstants.web.ts | 5 + .../src/RNGestureHandlerModule.macos.ts | 129 + .../src/RNGestureHandlerModule.ts | 50 + .../src/RNGestureHandlerModule.web.ts | 140 + .../src/RNGestureHandlerModule.windows.ts | 140 + .../src/RNRenderer.ts | 3 + .../src/RNRenderer.web.ts | 3 + .../react-native-gesture-handler/src/State.ts | 13 + .../src/TouchEventType.ts | 10 + .../src/components/DrawerLayout.tsx | 734 + .../src/components/GestureButtons.tsx | 332 + .../src/components/GestureComponents.tsx | 148 + .../src/components/GestureComponents.web.tsx | 42 + .../src/components/GestureHandlerButton.tsx | 10 + .../components/GestureHandlerButton.web.tsx | 6 + .../src/components/Swipeable.tsx | 525 + .../touchables/GenericTouchable.tsx | 289 + .../touchables/TouchableHighlight.tsx | 112 + .../TouchableNativeFeedback.android.tsx | 89 + .../touchables/TouchableNativeFeedback.tsx | 3 + .../touchables/TouchableOpacity.tsx | 74 + .../touchables/TouchableWithoutFeedback.tsx | 12 + .../src/components/touchables/index.ts | 4 + .../RNGestureHandlerButtonNativeComponent.ts | 18 + ...RNGestureHandlerRootViewNativeComponent.ts | 6 + .../src/gestureHandlerRootHOC.tsx | 32 + .../src/getShadowNodeFromRef.ts | 22 + .../src/getShadowNodeFromRef.web.ts | 7 + .../src/handlers/FlingGestureHandler.ts | 59 + .../src/handlers/ForceTouchGestureHandler.ts | 90 + .../src/handlers/LongPressGestureHandler.ts | 88 + .../src/handlers/NativeViewGestureHandler.ts | 55 + .../src/handlers/PanGestureHandler.ts | 325 + .../src/handlers/PinchGestureHandler.ts | 48 + .../src/handlers/PressabilityDebugView.tsx | 2 + .../handlers/PressabilityDebugView.web.tsx | 4 + .../src/handlers/RotationGestureHandler.ts | 48 + .../src/handlers/TapGestureHandler.ts | 94 + .../src/handlers/createHandler.tsx | 519 + .../src/handlers/createNativeWrapper.tsx | 80 + .../src/handlers/gestureHandlerCommon.ts | 206 + .../src/handlers/gestureHandlerTypesCompat.ts | 106 + .../src/handlers/gestures/GestureDetector.tsx | 801 + .../src/handlers/gestures/eventReceiver.ts | 155 + .../src/handlers/gestures/flingGesture.ts | 27 + .../handlers/gestures/forceTouchGesture.ts | 74 + .../src/handlers/gestures/gesture.ts | 335 + .../handlers/gestures/gestureComposition.ts | 122 + .../src/handlers/gestures/gestureObjects.ts | 79 + .../handlers/gestures/gestureStateManager.ts | 62 + .../gestures/gestureStateManager.web.ts | 24 + .../src/handlers/gestures/longPressGesture.ts | 28 + .../src/handlers/gestures/manualGesture.ts | 31 + .../src/handlers/gestures/nativeGesture.ts | 27 + .../src/handlers/gestures/panGesture.ts | 152 + .../src/handlers/gestures/pinchGesture.ts | 51 + .../handlers/gestures/reanimatedWrapper.ts | 55 + .../src/handlers/gestures/rotationGesture.ts | 51 + .../src/handlers/gestures/tapGesture.ts | 53 + .../src/handlers/handlersRegistry.ts | 60 + .../react-native-gesture-handler/src/index.ts | 162 + .../react-native-gesture-handler/src/init.ts | 18 + .../src/jestUtils/index.ts | 1 + .../src/jestUtils/jestUtils.ts | 505 + .../react-native-gesture-handler/src/mocks.ts | 67 + .../src/typeUtils.ts | 1 + .../react-native-gesture-handler/src/utils.ts | 67 + .../src/web/constants.ts | 8 + .../web/detectors/RotationGestureDetector.ts | 168 + .../src/web/detectors/ScaleGestureDetector.ts | 172 + .../src/web/handlers/FlingGestureHandler.ts | 177 + .../src/web/handlers/GestureHandler.ts | 866 + .../web/handlers/LongPressGestureHandler.ts | 127 + .../src/web/handlers/ManualGestureHandler.ts | 48 + .../web/handlers/NativeViewGestureHandler.ts | 161 + .../src/web/handlers/PanGestureHandler.ts | 497 + .../src/web/handlers/PinchGestureHandler.ts | 163 + .../web/handlers/RotationGestureHandler.ts | 179 + .../src/web/handlers/TapGestureHandler.ts | 290 + .../src/web/interfaces.ts | 164 + .../src/web/tools/EventManager.ts | 96 + .../web/tools/GestureHandlerOrchestrator.ts | 397 + .../src/web/tools/InteractionManager.ts | 123 + .../src/web/tools/NodeManager.ts | 43 + .../src/web/tools/PointerEventManager.ts | 134 + .../src/web/tools/PointerTracker.ts | 240 + .../src/web/tools/TouchEventManager.ts | 167 + .../src/web/utils.ts | 8 + .../src/web_hammer/DiscreteGestureHandler.ts | 82 + .../src/web_hammer/DraggingGestureHandler.ts | 34 + .../src/web_hammer/Errors.ts | 7 + .../src/web_hammer/FlingGestureHandler.ts | 134 + .../src/web_hammer/GestureHandler.ts | 598 + .../web_hammer/IndiscreteGestureHandler.ts | 33 + .../src/web_hammer/LongPressGestureHandler.ts | 56 + .../web_hammer/NativeViewGestureHandler.ts | 47 + .../src/web_hammer/NodeManager.ts | 42 + .../src/web_hammer/PanGestureHandler.ts | 226 + .../src/web_hammer/PinchGestureHandler.ts | 25 + .../src/web_hammer/PressGestureHandler.ts | 167 + .../src/web_hammer/RotationGestureHandler.ts | 25 + .../src/web_hammer/TapGestureHandler.ts | 172 + .../src/web_hammer/constants.ts | 48 + .../src/web_hammer/utils.ts | 24 + .../react-native-safe-area-context/LICENSE | 21 + .../react-native-safe-area-context/README.md | 296 + .../android/build.gradle | 104 + .../android/gradle.properties | 1 + .../safeareacontext/InsetsChangeEvent.kt | 25 + .../safeareacontext/UIManagerHelperCompat.kt | 14 + .../android/src/main/AndroidManifest.xml | 6 + .../th3rdwave/safeareacontext/EdgeInsets.kt | 3 + .../com/th3rdwave/safeareacontext/Rect.kt | 3 + .../safeareacontext/SafeAreaContextModule.kt | 33 + .../safeareacontext/SafeAreaContextPackage.kt | 43 + .../safeareacontext/SafeAreaProvider.kt | 47 + .../SafeAreaProviderManager.kt | 41 + .../safeareacontext/SafeAreaUtils.kt | 101 + .../th3rdwave/safeareacontext/SafeAreaView.kt | 146 + .../safeareacontext/SafeAreaViewEdges.kt | 8 + .../safeareacontext/SafeAreaViewLocalData.kt | 9 + .../safeareacontext/SafeAreaViewManager.kt | 77 + .../safeareacontext/SafeAreaViewMode.kt | 6 + .../safeareacontext/SafeAreaViewShadowNode.kt | 160 + .../safeareacontext/SerializationUtils.kt | 39 + .../android/src/main/jni/CMakeLists.txt | 72 + .../android/src/main/jni/safeareacontext.h | 17 + .../RNCSafeAreaProviderManagerDelegate.java | 25 + .../RNCSafeAreaProviderManagerInterface.java | 16 + .../RNCSafeAreaViewManagerDelegate.java | 35 + .../RNCSafeAreaViewManagerInterface.java | 19 + .../safeareacontext/InsetsChangeEvent.kt | 29 + .../NativeSafeAreaContextSpec.java | 58 + .../safeareacontext/UIManagerHelperCompat.kt | 20 + .../RNCSafeAreaViewComponentDescriptor.h | 26 + .../RNCSafeAreaViewShadowNode.cpp | 107 + .../RNCSafeAreaViewShadowNode.h | 36 + .../safeareacontext/RNCSafeAreaViewState.cpp | 23 + .../safeareacontext/RNCSafeAreaViewState.h | 56 + .../Fabric/RNCSafeAreaProviderComponentView.h | 13 + .../RNCSafeAreaProviderComponentView.mm | 108 + .../ios/Fabric/RNCSafeAreaViewComponentView.h | 11 + .../Fabric/RNCSafeAreaViewComponentView.mm | 147 + .../ios/RNCSafeAreaContext.h | 9 + .../ios/RNCSafeAreaContext.mm | 78 + .../ios/RNCSafeAreaProvider.h | 13 + .../ios/RNCSafeAreaProvider.m | 64 + .../ios/RNCSafeAreaProviderManager.h | 9 + .../ios/RNCSafeAreaProviderManager.m | 16 + .../ios/RNCSafeAreaShadowView.h | 9 + .../ios/RNCSafeAreaShadowView.m | 184 + .../ios/RNCSafeAreaUtils.h | 8 + .../ios/RNCSafeAreaUtils.m | 11 + .../ios/RNCSafeAreaView.h | 21 + .../ios/RNCSafeAreaView.m | 126 + .../ios/RNCSafeAreaViewEdges.h | 9 + .../ios/RNCSafeAreaViewEdges.m | 17 + .../ios/RNCSafeAreaViewLocalData.h | 18 + .../ios/RNCSafeAreaViewLocalData.m | 16 + .../ios/RNCSafeAreaViewManager.h | 9 + .../ios/RNCSafeAreaViewManager.m | 25 + .../ios/RNCSafeAreaViewMode.h | 7 + .../ios/RNCSafeAreaViewMode.m | 15 + .../project.pbxproj | 346 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 7464 bytes .../xcschemes/xcschememanagement.plist | 14 + .../jest/mock.js | 39 + .../commonjs/CompatNativeSafeAreaProvider.js | 43 + .../CompatNativeSafeAreaProvider.js.map | 1 + .../lib/commonjs/InitialWindow.js | 15 + .../lib/commonjs/InitialWindow.js.map | 1 + .../lib/commonjs/InitialWindow.native.js | 18 + .../lib/commonjs/InitialWindow.native.js.map | 1 + .../lib/commonjs/NativeSafeAreaProvider.js | 14 + .../commonjs/NativeSafeAreaProvider.js.map | 1 + .../commonjs/NativeSafeAreaProvider.macos.js | 13 + .../NativeSafeAreaProvider.macos.js.map | 1 + .../commonjs/NativeSafeAreaProvider.web.js | 135 + .../NativeSafeAreaProvider.web.js.map | 1 + .../NativeSafeAreaProvider.windows.js | 13 + .../NativeSafeAreaProvider.windows.js.map | 1 + .../lib/commonjs/SafeArea.types.js | 6 + .../lib/commonjs/SafeArea.types.js.map | 1 + .../lib/commonjs/SafeAreaContext.js | 128 + .../lib/commonjs/SafeAreaContext.js.map | 1 + .../lib/commonjs/SafeAreaView.js | 26 + .../lib/commonjs/SafeAreaView.js.map | 1 + .../lib/commonjs/SafeAreaView.macos.js | 10 + .../lib/commonjs/SafeAreaView.macos.js.map | 1 + .../lib/commonjs/SafeAreaView.web.js | 83 + .../lib/commonjs/SafeAreaView.web.js.map | 1 + .../lib/commonjs/SafeAreaView.windows.js | 10 + .../lib/commonjs/SafeAreaView.windows.js.map | 1 + .../lib/commonjs/index.js | 50 + .../lib/commonjs/index.js.map | 1 + .../commonjs/specs/NativeSafeAreaContext.js | 13 + .../specs/NativeSafeAreaContext.js.map | 1 + .../commonjs/specs/NativeSafeAreaProvider.js | 11 + .../specs/NativeSafeAreaProvider.js.map | 1 + .../lib/commonjs/specs/NativeSafeAreaView.js | 13 + .../commonjs/specs/NativeSafeAreaView.js.map | 1 + .../module/CompatNativeSafeAreaProvider.js | 35 + .../CompatNativeSafeAreaProvider.js.map | 1 + .../lib/module/InitialWindow.js | 7 + .../lib/module/InitialWindow.js.map | 1 + .../lib/module/InitialWindow.native.js | 9 + .../lib/module/InitialWindow.native.js.map | 1 + .../lib/module/NativeSafeAreaProvider.js | 3 + .../lib/module/NativeSafeAreaProvider.js.map | 1 + .../module/NativeSafeAreaProvider.macos.js | 2 + .../NativeSafeAreaProvider.macos.js.map | 1 + .../lib/module/NativeSafeAreaProvider.web.js | 127 + .../module/NativeSafeAreaProvider.web.js.map | 1 + .../module/NativeSafeAreaProvider.windows.js | 2 + .../NativeSafeAreaProvider.windows.js.map | 1 + .../lib/module/SafeArea.types.js | 2 + .../lib/module/SafeArea.types.js.map | 1 + .../lib/module/SafeAreaContext.js | 111 + .../lib/module/SafeAreaContext.js.map | 1 + .../lib/module/SafeAreaView.js | 16 + .../lib/module/SafeAreaView.js.map | 1 + .../lib/module/SafeAreaView.macos.js | 3 + .../lib/module/SafeAreaView.macos.js.map | 1 + .../lib/module/SafeAreaView.web.js | 75 + .../lib/module/SafeAreaView.web.js.map | 1 + .../lib/module/SafeAreaView.windows.js | 3 + .../lib/module/SafeAreaView.windows.js.map | 1 + .../lib/module/index.js | 5 + .../lib/module/index.js.map | 1 + .../lib/module/specs/NativeSafeAreaContext.js | 4 + .../module/specs/NativeSafeAreaContext.js.map | 1 + .../module/specs/NativeSafeAreaProvider.js | 3 + .../specs/NativeSafeAreaProvider.js.map | 1 + .../lib/module/specs/NativeSafeAreaView.js | 5 + .../module/specs/NativeSafeAreaView.js.map | 1 + .../CompatNativeSafeAreaProvider.d.ts | 4 + .../CompatNativeSafeAreaProvider.d.ts.map | 1 + .../lib/typescript/InitialWindow.d.ts | 7 + .../lib/typescript/InitialWindow.d.ts.map | 1 + .../lib/typescript/InitialWindow.native.d.ts | 7 + .../typescript/InitialWindow.native.d.ts.map | 1 + .../typescript/NativeSafeAreaProvider.d.ts | 3 + .../NativeSafeAreaProvider.d.ts.map | 1 + .../NativeSafeAreaProvider.macos.d.ts | 2 + .../NativeSafeAreaProvider.macos.d.ts.map | 1 + .../NativeSafeAreaProvider.web.d.ts | 4 + .../NativeSafeAreaProvider.web.d.ts.map | 1 + .../NativeSafeAreaProvider.windows.d.ts | 2 + .../NativeSafeAreaProvider.windows.d.ts.map | 1 + .../lib/typescript/SafeArea.types.d.ts | 31 + .../lib/typescript/SafeArea.types.d.ts.map | 1 + .../lib/typescript/SafeAreaContext.d.ts | 33 + .../lib/typescript/SafeAreaContext.d.ts.map | 1 + .../lib/typescript/SafeAreaView.d.ts | 8 + .../lib/typescript/SafeAreaView.d.ts.map | 1 + .../lib/typescript/SafeAreaView.macos.d.ts | 3 + .../typescript/SafeAreaView.macos.d.ts.map | 1 + .../lib/typescript/SafeAreaView.web.d.ts | 4 + .../lib/typescript/SafeAreaView.web.d.ts.map | 1 + .../lib/typescript/SafeAreaView.windows.d.ts | 3 + .../typescript/SafeAreaView.windows.d.ts.map | 1 + .../lib/typescript/index.d.ts | 5 + .../lib/typescript/index.d.ts.map | 1 + .../specs/NativeSafeAreaContext.d.ts | 23 + .../specs/NativeSafeAreaContext.d.ts.map | 1 + .../specs/NativeSafeAreaProvider.d.ts | 22 + .../specs/NativeSafeAreaProvider.d.ts.map | 1 + .../typescript/specs/NativeSafeAreaView.d.ts | 9 + .../specs/NativeSafeAreaView.d.ts.map | 1 + .../node_modules/.bin/react-native | 1 + .../package.json | 136 + .../react-native-safe-area-context.podspec | 51 + .../react-native.config.js | 29 + .../src/CompatNativeSafeAreaProvider.tsx | 28 + .../src/InitialWindow.native.ts | 10 + .../src/InitialWindow.ts | 8 + .../src/NativeSafeAreaProvider.macos.tsx | 1 + .../src/NativeSafeAreaProvider.tsx | 3 + .../src/NativeSafeAreaProvider.web.tsx | 127 + .../src/NativeSafeAreaProvider.windows.tsx | 1 + .../src/SafeArea.types.ts | 38 + .../src/SafeAreaContext.tsx | 170 + .../src/SafeAreaView.macos.tsx | 3 + .../src/SafeAreaView.tsx | 23 + .../src/SafeAreaView.web.tsx | 85 + .../src/SafeAreaView.windows.tsx | 3 + .../src/index.tsx | 4 + .../src/specs/NativeSafeAreaContext.ts | 25 + .../src/specs/NativeSafeAreaProvider.ts | 29 + .../src/specs/NativeSafeAreaView.ts | 13 + .../node_modules/react-is/LICENSE | 21 + .../node_modules/react-is/README.md | 104 + .../react-is/cjs/react-is.development.js | 221 + .../react-is/cjs/react-is.production.min.js | 14 + .../node_modules/react-is/index.js | 7 + .../node_modules/react-is/package.json | 26 + .../react-is/umd/react-is.development.js | 220 + .../react-is/umd/react-is.production.min.js | 15 + .../webpack/node_modules/.bin/json5 | 1 - .../@expo/config/node_modules/.bin/json5 | 1 - iut-expo-starter/package.json | 2 + iut-expo-starter/yarn.lock | 20934 ++++++++------- 1142 files changed, 85992 insertions(+), 34845 deletions(-) delete mode 120000 iut-expo-starter/node_modules/.bin/resolve delete mode 120000 iut-expo-starter/node_modules/.bin/which delete mode 100644 iut-expo-starter/node_modules/.package-lock.json create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/.babelrc create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/.bowerrc create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/.editorconfig create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/.jscsrc create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/.jshintrc create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/.travis.yml create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/CHANGELOG.md create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/CONTRIBUTING.md create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/LICENSE.md create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/README.md create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/banner.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/bower.json create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/changelog.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/component.json create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js.map create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js.map create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.min.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.min.js.map create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/package.json create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/replace.config.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/rollup.config.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/browser.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/defaults.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.d.ts create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/index.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/input/mouse.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/input/pointerevent.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/input/singletouch.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touch.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touchmouse.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-delta-xy.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-input-data.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-interval-input-data.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/create-input-instance.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-angle.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-center.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-direction.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-distance.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-rotation.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-scale.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-velocity.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-constructor.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-consts.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-handler.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/simple-clone-input-data.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/manager.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/direction-str.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/get-recognizer-by-name-if-manager.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-constructor.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-consts.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/state-str.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/attribute.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pan.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pinch.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/press.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/rotate.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/swipe.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/tap.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/clean-touch-actions.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/get-touchaction-props.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-Consts.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-constructor.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/add-event-listeners.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/assign.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bind-fn.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bool-or-fn.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/deprecate.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/each.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/extend.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/get-window-for-element.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/has-parent.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/if-undefined.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-array.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-str.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/inherit.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/invoke-array-arg.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/merge.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/prefixed.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/remove-event-listeners.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/set-timeout-context.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/split-str.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/to-array.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-array.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-id.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/utils-consts.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/testrollup.config.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/index.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/assets/style.css create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/compute_touch_action.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/input.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/log.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/multiple.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/nested.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator-googlemaps.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/touchaction.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/visual.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/assets/utils.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pan.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pinch.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_swipe.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/index.html create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_enable.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_events.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_gestures.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_hammer.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_jquery_plugin.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_multiple_taps.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_nested_gesture_recognizers.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_propagation_bubble.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_require_failure.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_simultaneous_recognition.js create mode 100644 iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_utils.js delete mode 120000 iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/node-which delete mode 120000 iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/rimraf delete mode 120000 iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/@expo/osascript/node_modules/.bin/node-which delete mode 120000 iut-expo-starter/node_modules/@expo/package-manager/node_modules/.bin/node-which delete mode 120000 iut-expo-starter/node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/.bin/json5 create mode 100755 iut-expo-starter/node_modules/@types/hammerjs/LICENSE create mode 100755 iut-expo-starter/node_modules/@types/hammerjs/README.md create mode 100755 iut-expo-starter/node_modules/@types/hammerjs/index.d.ts create mode 100755 iut-expo-starter/node_modules/@types/hammerjs/package.json delete mode 120000 iut-expo-starter/node_modules/css-loader/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/expo-cli/node_modules/.bin/rimraf delete mode 120000 iut-expo-starter/node_modules/expo-cli/node_modules/@expo/config/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/expo-pwa/node_modules/.bin/semver delete mode 120000 iut-expo-starter/node_modules/expo/node_modules/.bin/semver delete mode 120000 iut-expo-starter/node_modules/express/node_modules/.bin/mime create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/CHANGELOG.md create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/LICENSE.md create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/README.md create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.js create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.min.js create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/package.json create mode 100644 iut-expo-starter/node_modules/hoist-non-react-statics/src/index.js delete mode 120000 iut-expo-starter/node_modules/html-webpack-plugin/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/mini-css-extract-plugin/node_modules/.bin/json5 create mode 100644 iut-expo-starter/node_modules/prop-types/LICENSE create mode 100644 iut-expo-starter/node_modules/prop-types/README.md create mode 100644 iut-expo-starter/node_modules/prop-types/checkPropTypes.js create mode 100644 iut-expo-starter/node_modules/prop-types/factory.js create mode 100644 iut-expo-starter/node_modules/prop-types/factoryWithThrowingShims.js create mode 100644 iut-expo-starter/node_modules/prop-types/factoryWithTypeCheckers.js create mode 100644 iut-expo-starter/node_modules/prop-types/index.js create mode 100644 iut-expo-starter/node_modules/prop-types/lib/ReactPropTypesSecret.js create mode 100644 iut-expo-starter/node_modules/prop-types/lib/has.js create mode 120000 iut-expo-starter/node_modules/prop-types/node_modules/.bin/loose-envify create mode 100644 iut-expo-starter/node_modules/prop-types/package.json create mode 100644 iut-expo-starter/node_modules/prop-types/prop-types.js create mode 100644 iut-expo-starter/node_modules/prop-types/prop-types.min.js delete mode 120000 iut-expo-starter/node_modules/react-dev-utils/node_modules/.bin/node-which create mode 100644 iut-expo-starter/node_modules/react-is/build-info.json create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/DrawerLayout/package.json create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/LICENSE create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/README.md create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/RNGestureHandler.podspec create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/Swipeable/package.json create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/build.gradle create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/gradle.properties create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/AndroidManifest.xml create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.mm create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGHTouchEventType.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.pbxproj create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerActionType.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerDirection.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.mm create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerState.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerStateManager.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.h create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.m create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/jest-utils/package.json create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/jestSetup.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js.map create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/ActionType.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/Directions.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/EnableExperimentalWebImplementation.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.android.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.macos.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.windows.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/State.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/TouchEventType.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/DrawerLayout.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureButtons.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/GenericTouchable.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableHighlight.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableOpacity.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/index.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/gestureHandlerRootHOC.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/FlingGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/ForceTouchGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/LongPressGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/NativeViewGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PanGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PinchGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/RotationGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/TapGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createNativeWrapper.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerCommon.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/GestureDetector.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/eventReceiver.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/flingGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/forceTouchGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureComposition.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureObjects.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/longPressGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/manualGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/nativeGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/panGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/pinchGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/rotationGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/tapGesture.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/handlersRegistry.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/index.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/init.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/index.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/jestUtils.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/mocks.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/typeUtils.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/utils.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/constants.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/RotationGestureDetector.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/ScaleGestureDetector.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/FlingGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/GestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/LongPressGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/ManualGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PanGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PinchGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/RotationGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/TapGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/interfaces.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/EventManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/InteractionManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/NodeManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerEventManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerTracker.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/TouchEventManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/utils.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DraggingGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/Errors.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/FlingGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/GestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/LongPressGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NodeManager.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PanGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PinchGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PressGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/RotationGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/TapGestureHandler.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/constants.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/utils.d.ts create mode 120000 iut-expo-starter/node_modules/react-native-gesture-handler/node_modules/.bin/react-native create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/package.json create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/ActionType.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/Directions.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/EnableExperimentalWebImplementation.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.android.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.web.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.web.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.macos.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.web.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.windows.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.web.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/State.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/TouchEventType.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/DrawerLayout.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureButtons.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.web.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.web.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/Swipeable.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/GenericTouchable.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableHighlight.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.android.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableOpacity.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableWithoutFeedback.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/index.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerButtonNativeComponent.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerRootViewNativeComponent.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/gestureHandlerRootHOC.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.web.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/FlingGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/ForceTouchGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/LongPressGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/NativeViewGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PanGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PinchGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.web.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/RotationGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/TapGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createHandler.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createNativeWrapper.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerCommon.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerTypesCompat.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/GestureDetector.tsx create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/eventReceiver.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/flingGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/forceTouchGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureComposition.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureObjects.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.web.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/longPressGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/manualGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/nativeGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/panGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/pinchGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/rotationGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/tapGesture.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/handlersRegistry.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/index.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/init.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/index.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/jestUtils.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/mocks.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/typeUtils.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/utils.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/constants.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/RotationGestureDetector.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/ScaleGestureDetector.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/FlingGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/GestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/LongPressGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/ManualGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/NativeViewGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PanGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PinchGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/RotationGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/TapGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/interfaces.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/EventManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/GestureHandlerOrchestrator.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/InteractionManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/NodeManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerEventManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerTracker.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/TouchEventManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web/utils.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DiscreteGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DraggingGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/Errors.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/FlingGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/GestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/IndiscreteGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/LongPressGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NativeViewGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NodeManager.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PanGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PinchGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PressGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/RotationGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/TapGestureHandler.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/constants.ts create mode 100644 iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/utils.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/LICENSE create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/README.md create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/build.gradle create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/gradle.properties create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/AndroidManifest.xml create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/EdgeInsets.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/Rect.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextModule.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProvider.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/safeareacontext.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/NativeSafeAreaContextSpec.java create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewComponentDescriptor.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.cpp create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.cpp create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.mm create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.mm create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.mm create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.h create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.m create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.pbxproj create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcuserdata/janicduplessis.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/xcuserdata/janicduplessis.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/jest/mock.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts.map create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts.map create mode 120000 iut-expo-starter/node_modules/react-native-safe-area-context/node_modules/.bin/react-native create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/package.json create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/react-native.config.js create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/CompatNativeSafeAreaProvider.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.native.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.macos.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.web.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.windows.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeArea.types.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaContext.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.macos.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.web.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.windows.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/index.tsx create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaContext.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaProvider.ts create mode 100644 iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaView.ts create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/LICENSE create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/README.md create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.development.js create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.production.min.js create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/index.js create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/package.json create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.development.js create mode 100644 iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.production.min.js delete mode 120000 iut-expo-starter/node_modules/webpack/node_modules/.bin/json5 delete mode 120000 iut-expo-starter/node_modules/xdl/node_modules/@expo/config/node_modules/.bin/json5 diff --git a/iut-expo-starter/App.tsx b/iut-expo-starter/App.tsx index 0329d0c9..b4771e19 100644 --- a/iut-expo-starter/App.tsx +++ b/iut-expo-starter/App.tsx @@ -1,18 +1,19 @@ import { StatusBar } from 'expo-status-bar'; -import { StyleSheet, Text, View } from 'react-native'; +import { SafeAreaView, StyleSheet, Text, View } from 'react-native'; +import CityList from './CityList'; +import { useSafeAreaInsets, SafeAreaProvider } from 'react-native-safe-area-context'; export default function App() { return ( - - Open up App.tsx to start working on your app! - - + + + ); } const styles = StyleSheet.create({ container: { - flex: 1, + height: "100%", backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', diff --git a/iut-expo-starter/CityList.tsx b/iut-expo-starter/CityList.tsx index 57d84261..572afff0 100644 --- a/iut-expo-starter/CityList.tsx +++ b/iut-expo-starter/CityList.tsx @@ -1,9 +1,28 @@ -import { View } from "react-native" +import { View, Text, StyleSheet } from "react-native" +import { FlatList } from "react-native-gesture-handler" +import { CITIES_DATA, City } from "./data/stub" +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + export default function CityList(props: any){ + const insets = useSafeAreaInsets(); + const statusBarHeight = insets.top; + return ( - - + + item.name} + renderItem={({item}) => {item.name}} + style={{width: "100%", alignSelf: "center"}} + /> ) -} \ No newline at end of file +} + + +const leStyle = StyleSheet.create({ + container: { + alignItems: 'center', + }, +}); \ No newline at end of file diff --git a/iut-expo-starter/node_modules/.bin/resolve b/iut-expo-starter/node_modules/.bin/resolve deleted file mode 120000 index b6afda6c..00000000 --- a/iut-expo-starter/node_modules/.bin/resolve +++ /dev/null @@ -1 +0,0 @@ -../resolve/bin/resolve \ No newline at end of file diff --git a/iut-expo-starter/node_modules/.bin/which b/iut-expo-starter/node_modules/.bin/which deleted file mode 120000 index f62471c8..00000000 --- a/iut-expo-starter/node_modules/.bin/which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/which \ No newline at end of file diff --git a/iut-expo-starter/node_modules/.package-lock.json b/iut-expo-starter/node_modules/.package-lock.json deleted file mode 100644 index 11ac0794..00000000 --- a/iut-expo-starter/node_modules/.package-lock.json +++ /dev/null @@ -1,21995 +0,0 @@ -{ - "name": "expo-init", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "license": "MIT", - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", - "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", - "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", - "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz", - "integrity": "sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.12", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz", - "integrity": "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-default-from": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", - "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", - "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz", - "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", - "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "license": "MIT", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", - "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-flow": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", - "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", - "license": "MIT", - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", - "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz", - "integrity": "sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", - "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz", - "integrity": "sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.12", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", - "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-flow-strip-types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/register": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", - "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==", - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@expo/apple-utils": { - "version": "0.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@expo/apple-utils/-/apple-utils-0.0.0-alpha.31.tgz", - "integrity": "sha512-lGJOS8eAPcZhaRl5GZFIg4ZNSRY1k10wYeYXjHUbHxbZGE9lkzrATY8OvrVpcu8qQh3lvPguel63V4mrnoAuOA==", - "license": "MIT", - "bin": { - "apple-utils": "bin.js" - } - }, - "node_modules/@expo/bunyan": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", - "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==", - "engines": [ - "node >=0.10.0" - ], - "license": "MIT", - "dependencies": { - "uuid": "^8.0.0" - }, - "optionalDependencies": { - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "node_modules/@expo/bunyan/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@expo/cli": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.4.11.tgz", - "integrity": "sha512-L9Ci9RBh0aPFEDF1AjDYPk54OgeUJIKzxF3lRgITm+lQpI3IEKjAc9LaYeQeO1mlZMUQmPkHArF8iyz1eOeVoQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.14.0", - "@expo/code-signing-certificates": "0.0.5", - "@expo/config": "~7.0.2", - "@expo/config-plugins": "~5.0.3", - "@expo/dev-server": "0.1.124", - "@expo/devcert": "^1.0.0", - "@expo/json-file": "^8.2.35", - "@expo/metro-config": "~0.5.0", - "@expo/osascript": "^2.0.31", - "@expo/package-manager": "~0.0.53", - "@expo/plist": "^0.0.18", - "@expo/prebuild-config": "5.0.7", - "@expo/rudder-sdk-node": "1.1.1", - "@expo/spawn-async": "1.5.0", - "@expo/xcpretty": "^4.2.1", - "@urql/core": "2.3.6", - "@urql/exchange-retry": "0.3.0", - "accepts": "^1.3.8", - "arg": "4.1.0", - "better-opn": "~3.0.2", - "bplist-parser": "^0.3.1", - "cacache": "^15.3.0", - "chalk": "^4.0.0", - "ci-info": "^3.3.0", - "debug": "^4.3.4", - "env-editor": "^0.4.1", - "form-data": "^3.0.1", - "freeport-async": "2.0.0", - "fs-extra": "~8.1.0", - "getenv": "^1.0.0", - "graphql": "15.8.0", - "graphql-tag": "^2.10.1", - "https-proxy-agent": "^5.0.1", - "internal-ip": "4.3.0", - "is-root": "^2.1.0", - "js-yaml": "^3.13.1", - "json-schema-deref-sync": "^0.13.0", - "md5-file": "^3.2.3", - "md5hex": "^1.0.0", - "minipass": "3.1.6", - "node-fetch": "^2.6.7", - "node-forge": "^1.3.1", - "npm-package-arg": "^7.0.0", - "ora": "3.4.0", - "pretty-bytes": "5.6.0", - "progress": "2.0.3", - "prompts": "^2.3.2", - "qrcode-terminal": "0.11.0", - "requireg": "^0.2.2", - "resolve-from": "^5.0.0", - "semver": "^6.3.0", - "send": "^0.18.0", - "slugify": "^1.3.4", - "structured-headers": "^0.4.1", - "tar": "^6.0.5", - "tempy": "^0.7.1", - "terminal-link": "^2.1.1", - "text-table": "^0.2.0", - "url-join": "4.0.0", - "uuid": "^3.4.0", - "wrap-ansi": "^7.0.0" - }, - "bin": { - "expo-internal": "build/bin/cli" - } - }, - "node_modules/@expo/cli/node_modules/@expo/config-plugins": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", - "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^47.0.0", - "@expo/json-file": "8.2.36", - "@expo/plist": "0.0.18", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.3.5", - "slash": "^3.0.0", - "xcode": "^3.0.1", - "xml2js": "0.4.23" - } - }, - "node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/config-types": { - "version": "47.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", - "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==", - "license": "MIT" - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server": { - "version": "0.1.124", - "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.124.tgz", - "integrity": "sha512-iHczVcf+rgWupCY/3b3ePIizNtzsy1O/w8jdKv3bKvoOfXiVIVOo4KGiVDpAJOahKiMOsRlbKeemB8OLNKzdSA==", - "license": "MIT", - "dependencies": { - "@expo/bunyan": "4.0.0", - "@expo/metro-config": "~0.5.1", - "@expo/osascript": "2.0.33", - "@expo/spawn-async": "^1.5.0", - "body-parser": "^1.20.1", - "chalk": "^4.0.0", - "connect": "^3.7.0", - "fs-extra": "9.0.0", - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1", - "node-fetch": "^2.6.0", - "open": "^8.3.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "serialize-error": "6.0.0", - "temp-dir": "^2.0.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server/node_modules/@expo/spawn-async": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz", - "integrity": "sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server/node_modules/fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server/node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/dev-server/node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", - "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "1.5.0", - "chalk": "^4.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "jimp-compact": "0.16.1", - "mime": "^2.4.4", - "node-fetch": "^2.6.0", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "tempy": "0.3.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "license": "MIT", - "dependencies": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/@expo/image-utils/node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/json-file": { - "version": "8.2.37", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", - "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/package-manager": { - "version": "0.0.57", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.57.tgz", - "integrity": "sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ==", - "license": "MIT", - "dependencies": { - "@expo/json-file": "8.2.36", - "@expo/spawn-async": "^1.5.0", - "ansi-regex": "^5.0.0", - "chalk": "^4.0.0", - "find-up": "^5.0.0", - "find-yarn-workspace-root": "~2.0.0", - "npm-package-arg": "^7.0.0", - "rimraf": "^3.0.2", - "split": "^1.0.1", - "sudo-prompt": "9.1.1" - } - }, - "node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/@expo/spawn-async": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz", - "integrity": "sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz", - "integrity": "sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==", - "license": "MIT", - "dependencies": { - "@expo/config": "~7.0.2", - "@expo/config-plugins": "~5.0.3", - "@expo/config-types": "^47.0.0", - "@expo/image-utils": "0.3.22", - "@expo/json-file": "8.2.36", - "debug": "^4.3.1", - "fs-extra": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "xml2js": "0.4.23" - }, - "peerDependencies": { - "expo-modules-autolinking": ">=0.8.1" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@expo/cli/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@expo/cli/node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/cli/node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@expo/cli/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@expo/cli/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@expo/cli/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@expo/cli/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/cli/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/cli/node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/@expo/cli/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/cli/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/cli/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/cli/node_modules/tempy": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", - "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", - "license": "MIT", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@expo/cli/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@expo/cli/node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@expo/code-signing-certificates": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", - "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", - "license": "MIT", - "dependencies": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" - } - }, - "node_modules/@expo/code-signing-certificates/node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/@expo/config": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", - "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~5.0.3", - "@expo/config-types": "^47.0.0", - "@expo/json-file": "8.2.36", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - } - }, - "node_modules/@expo/config-plugins": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-4.1.5.tgz", - "integrity": "sha512-RVvU40RtZt12HavuDAe+LDIq9lHj7sheOfMEHdmpJ/uTA8pgvkbc56XF6JHQD+yRr6+uhhb+JnAasGq49dsQbw==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^45.0.0", - "@expo/json-file": "8.2.36", - "@expo/plist": "0.0.18", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.3.5", - "slash": "^3.0.0", - "xcode": "^3.0.1", - "xml2js": "0.4.23" - } - }, - "node_modules/@expo/config-plugins/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/config-plugins/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/config-plugins/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/config-plugins/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/config-types": { - "version": "45.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz", - "integrity": "sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA==", - "license": "MIT" - }, - "node_modules/@expo/config/node_modules/@expo/config-plugins": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", - "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^47.0.0", - "@expo/json-file": "8.2.36", - "@expo/plist": "0.0.18", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.3.5", - "slash": "^3.0.0", - "xcode": "^3.0.1", - "xml2js": "0.4.23" - } - }, - "node_modules/@expo/config/node_modules/@expo/config-plugins/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/config/node_modules/@expo/config-types": { - "version": "47.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", - "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==", - "license": "MIT" - }, - "node_modules/@expo/config/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/config/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/config/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/config/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/dev-server": { - "version": "0.1.115", - "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.115.tgz", - "integrity": "sha512-kqr71GAXzBVmjT+qSmqckBKY6Y9lFf4Oy1S4aVygx72CNgyzVTw4CPqT5RsNhcvQEEdACgarczDbPnNkmrm7GQ==", - "license": "MIT", - "dependencies": { - "@expo/bunyan": "4.0.0", - "@expo/metro-config": "0.3.18", - "@expo/osascript": "2.0.33", - "body-parser": "1.19.0", - "chalk": "^4.0.0", - "connect": "^3.7.0", - "fs-extra": "9.0.0", - "node-fetch": "^2.6.0", - "open": "^8.3.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "serialize-error": "6.0.0", - "temp-dir": "^2.0.0" - } - }, - "node_modules/@expo/dev-server/node_modules/@expo/config": { - "version": "6.0.24", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz", - "integrity": "sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "4.1.5", - "@expo/config-types": "^45.0.0", - "@expo/json-file": "8.2.36", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - } - }, - "node_modules/@expo/dev-server/node_modules/@expo/metro-config": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.3.18.tgz", - "integrity": "sha512-DWtwV67kD8X2uOKIs5QyHlHD+6L6RAgudZZDBmu433ZvL62HAUYfjEi3+i0jeMiUqN85o1vbXg6xqWnBCpS50g==", - "license": "MIT", - "dependencies": { - "@expo/config": "6.0.24", - "@expo/json-file": "8.2.36", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "find-yarn-workspace-root": "~2.0.0", - "getenv": "^1.0.0", - "resolve-from": "^5.0.0", - "sucrase": "^3.20.0" - } - }, - "node_modules/@expo/dev-server/node_modules/@expo/metro-config/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/dev-server/node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@expo/dev-server/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@expo/dev-server/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/dev-server/node_modules/glob/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/@expo/dev-server/node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@expo/dev-server/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC" - }, - "node_modules/@expo/dev-server/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/dev-server/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/@expo/dev-server/node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@expo/dev-server/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/dev-server/node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "license": "ISC" - }, - "node_modules/@expo/dev-server/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@expo/dev-server/node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/@expo/devcert": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", - "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==", - "license": "MIT", - "dependencies": { - "application-config-path": "^0.1.0", - "command-exists": "^1.2.4", - "debug": "^3.1.0", - "eol": "^0.9.1", - "get-port": "^3.2.0", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "password-prompt": "^1.0.4", - "rimraf": "^2.6.2", - "sudo-prompt": "^8.2.0", - "tmp": "^0.0.33", - "tslib": "^2.4.0" - } - }, - "node_modules/@expo/devcert/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@expo/devcert/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/@expo/devcert/node_modules/sudo-prompt": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", - "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==", - "license": "MIT" - }, - "node_modules/@expo/devcert/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" - }, - "node_modules/@expo/image-utils": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.21.tgz", - "integrity": "sha512-Ha7pNcpl52RJIeYz3gR1ajOgPPl7WLZWiLqtLi94s9J0a7FvmNBMqd/VKrfHNj8QmtZxXcmXr7y7tPhZbVFg7w==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "1.5.0", - "chalk": "^4.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "jimp-compact": "0.16.1", - "mime": "^2.4.4", - "node-fetch": "^2.6.0", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "tempy": "0.3.0" - } - }, - "node_modules/@expo/image-utils/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/@expo/json-file/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@expo/metro-config": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz", - "integrity": "sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==", - "license": "MIT", - "dependencies": { - "@expo/config": "~7.0.2", - "@expo/json-file": "8.2.36", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "find-yarn-workspace-root": "~2.0.0", - "getenv": "^1.0.0", - "resolve-from": "^5.0.0", - "sucrase": "^3.20.0" - } - }, - "node_modules/@expo/metro-config/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/metro-config/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/osascript": { - "version": "2.0.33", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", - "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.5.0", - "exec-async": "^2.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/osascript/node_modules/@expo/spawn-async": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz", - "integrity": "sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/osascript/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@expo/osascript/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/osascript/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/osascript/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/osascript/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@expo/package-manager": { - "version": "0.0.56", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.56.tgz", - "integrity": "sha512-PGk34uz4XDyhoNIlPh2D+BDsiXYuW2jXavTiax8d32uvHlRO6FN0cAsqlWD6fx3H2hRn8cU/leTuc4M7pYovCQ==", - "license": "MIT", - "dependencies": { - "@expo/json-file": "8.2.36", - "@expo/spawn-async": "^1.5.0", - "ansi-regex": "^5.0.0", - "chalk": "^4.0.0", - "find-up": "^5.0.0", - "find-yarn-workspace-root": "~2.0.0", - "npm-package-arg": "^7.0.0", - "rimraf": "^3.0.2", - "split": "^1.0.1", - "sudo-prompt": "9.1.1" - } - }, - "node_modules/@expo/package-manager/node_modules/@expo/spawn-async": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz", - "integrity": "sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/package-manager/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@expo/package-manager/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/package-manager/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/package-manager/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/package-manager/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/package-manager/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@expo/plist": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", - "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "~0.7.0", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" - } - }, - "node_modules/@expo/prebuild-config": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-4.0.3.tgz", - "integrity": "sha512-ZRMn0a9Wo/coKXLMvizUytqtG5pniUHaBMSS28yFTcGVvyDJh2nFVkBf9po52mSkbm9rGp/Pev6GAf57m6S2BA==", - "license": "MIT", - "dependencies": { - "@expo/config": "6.0.24", - "@expo/config-plugins": "4.1.5", - "@expo/config-types": "^45.0.0", - "@expo/image-utils": "0.3.21", - "@expo/json-file": "8.2.36", - "debug": "^4.3.1", - "expo-modules-autolinking": "0.8.1", - "fs-extra": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "xml2js": "0.4.23" - } - }, - "node_modules/@expo/prebuild-config/node_modules/@expo/config": { - "version": "6.0.24", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz", - "integrity": "sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "4.1.5", - "@expo/config-types": "^45.0.0", - "@expo/json-file": "8.2.36", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - } - }, - "node_modules/@expo/prebuild-config/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@expo/prebuild-config/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/prebuild-config/node_modules/expo-modules-autolinking": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz", - "integrity": "sha512-S8qfaXCv//7tQWV9M+JKx3CF7ypYhDdSUbkUQdaVO/r8D76/aRTArY/aRw1yEfaAOzyK8C8diDToV1itl51DfQ==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "commander": "^7.2.0", - "fast-glob": "^3.2.5", - "find-up": "^5.0.0", - "fs-extra": "^9.1.0" - }, - "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" - } - }, - "node_modules/@expo/prebuild-config/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/prebuild-config/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/prebuild-config/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@expo/prebuild-config/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/prebuild-config/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/prebuild-config/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@expo/rudder-sdk-node": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", - "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", - "license": "MIT", - "dependencies": { - "@expo/bunyan": "^4.0.0", - "@segment/loosely-validate-event": "^2.0.0", - "fetch-retry": "^4.1.1", - "md5": "^2.2.1", - "node-fetch": "^2.6.1", - "remove-trailing-slash": "^0.1.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/rudder-sdk-node/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@expo/schemer": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@expo/schemer/-/schemer-1.4.4.tgz", - "integrity": "sha512-cZo7hhjuEpOl5qf8nidZPlusRX4GXWRh24pOkM6LP2FGLMNdfazcJj1TU6h3h9FY5G6xLfGxpDhF/JETL9Qj+A==", - "license": "MIT", - "dependencies": { - "ajv": "^8.1.0", - "ajv-formats": "^2.0.2", - "json-schema-traverse": "^1.0.0", - "lodash": "^4.17.21", - "probe-image-size": "^7.1.0", - "read-chunk": "^3.2.0" - } - }, - "node_modules/@expo/schemer/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@expo/schemer/node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@expo/schemer/node_modules/probe-image-size": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", - "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", - "license": "MIT", - "dependencies": { - "lodash.merge": "^4.6.2", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" - } - }, - "node_modules/@expo/sdk-runtime-versions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", - "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", - "license": "MIT" - }, - "node_modules/@expo/spawn-async": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", - "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/vector-icons": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", - "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==", - "license": "MIT" - }, - "node_modules/@expo/webpack-config": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@expo/webpack-config/-/webpack-config-0.17.4.tgz", - "integrity": "sha512-vn37RDhYowfLc2oRaXhmbI/9FStjQFXPONG3yRLfwUnA4dRtfXapJUSKHJKRwOy4fBBmTrb2tthtsdb4zeWmsw==", - "license": "MIT", - "dependencies": { - "@babel/core": "7.9.0", - "babel-loader": "8.1.0", - "chalk": "^4.0.0", - "clean-webpack-plugin": "^3.0.0", - "copy-webpack-plugin": "~6.0.3", - "css-loader": "~3.6.0", - "expo-pwa": "0.0.124", - "file-loader": "~6.0.0", - "find-yarn-workspace-root": "~2.0.0", - "getenv": "^1.0.0", - "html-loader": "~1.1.0", - "html-webpack-plugin": "~4.3.0", - "image-size": "^1.0.0", - "is-wsl": "^2.0.0", - "loader-utils": "^2.0.0", - "mini-css-extract-plugin": "^0.5.0", - "node-html-parser": "^1.2.12", - "optimize-css-assets-webpack-plugin": "^5.0.3", - "pnp-webpack-plugin": "^1.5.0", - "postcss-safe-parser": "^4.0.2", - "react-dev-utils": "~11.0.1", - "schema-utils": "^3.1.1", - "semver": "~7.3.2", - "style-loader": "~1.2.1", - "terser-webpack-plugin": "^3.0.6", - "url-loader": "~4.1.0", - "webpack": "4.43.0", - "webpack-dev-server": "3.11.0", - "webpack-manifest-plugin": "~2.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@expo/webpack-config/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@expo/webpack-config/node_modules/@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@expo/webpack-config/node_modules/@babel/core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@expo/webpack-config/node_modules/babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "license": "MIT", - "dependencies": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 6.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@expo/webpack-config/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@expo/webpack-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/webpack-config/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/@expo/webpack-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/webpack-config/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@expo/webpack-config/node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@expo/webpack-config/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/@expo/webpack-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/webpack-config/node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@expo/webpack-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/webpack-config/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/webpack-config/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@expo/webpack-config/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@expo/webpack-config/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@expo/webpack-config/node_modules/terser-webpack-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz", - "integrity": "sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA==", - "license": "MIT", - "dependencies": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.2.1", - "p-limit": "^3.0.2", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.8.0", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@expo/webpack-config/node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/@expo/webpack-config/node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@expo/webpack-config/node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@expo/xcpretty": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz", - "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/code-frame": "7.10.4", - "chalk": "^4.1.0", - "find-up": "^5.0.0", - "js-yaml": "^4.1.0" - }, - "bin": { - "excpretty": "build/cli.js" - } - }, - "node_modules/@expo/xcpretty/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/@expo/xcpretty/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "license": "MIT" - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.4.0.tgz", - "integrity": "sha512-RmQicJx9z6izyunr/9m7ncJc2NbvIdcrC2VGXl0A7fHsh6aMO38nC8353bzitg5RuEERoVV2pbbLMlhcBL67KQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.4.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.0.tgz", - "integrity": "sha512-1S2Dt5uQp7R0bGY/L2BpuwCSji7v12kY3o8zqwlkbYBmOY956SKk+zOWqmfhHSINegiAVqOXydAYuWpzX6TYsQ==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.4.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.20.tgz", - "integrity": "sha512-eknWrTHofQuPk2iuqDm1waA7V6xPlbgBoaaXEgYkClhLOnB0TtbW+srJaOToAgawPxPlHQzwypFA2bhZaUGP5A==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/schemas": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", - "integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@react-native-community/cli": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", - "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-clean": "^9.2.1", - "@react-native-community/cli-config": "^9.2.1", - "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-doctor": "^9.2.1", - "@react-native-community/cli-hermes": "^9.2.1", - "@react-native-community/cli-plugin-metro": "^9.2.1", - "@react-native-community/cli-server-api": "^9.2.1", - "@react-native-community/cli-tools": "^9.2.1", - "@react-native-community/cli-types": "^9.1.0", - "chalk": "^4.1.2", - "commander": "^9.4.0", - "execa": "^1.0.0", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "prompts": "^2.4.0", - "semver": "^6.3.0" - }, - "bin": { - "react-native": "build/bin.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@react-native-community/cli-clean": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", - "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "prompts": "^2.4.0" - } - }, - "node_modules/@react-native-community/cli-config": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", - "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "cosmiconfig": "^5.1.0", - "deepmerge": "^3.2.0", - "glob": "^7.1.3", - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli-debugger-ui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", - "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", - "license": "MIT", - "dependencies": { - "serve-static": "^1.13.1" - } - }, - "node_modules/@react-native-community/cli-doctor": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", - "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-config": "^9.2.1", - "@react-native-community/cli-platform-ios": "^9.3.0", - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "command-exists": "^1.2.8", - "envinfo": "^7.7.2", - "execa": "^1.0.0", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5", - "node-stream-zip": "^1.9.1", - "ora": "^5.4.1", - "prompts": "^2.4.0", - "semver": "^6.3.0", - "strip-ansi": "^5.2.0", - "sudo-prompt": "^9.0.0", - "wcwidth": "^1.0.1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-ios": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", - "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "glob": "^7.1.3", - "ora": "^5.4.1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/sudo-prompt": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", - "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "license": "MIT" - }, - "node_modules/@react-native-community/cli-hermes": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz", - "integrity": "sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-platform-android": "^9.3.1", - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/@react-native-community/cli-platform-android": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz", - "integrity": "sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.3", - "logkitty": "^0.7.1", - "slash": "^3.0.0" - } - }, - "node_modules/@react-native-community/cli-hermes/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", - "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.3", - "logkitty": "^0.7.1", - "slash": "^3.0.0" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", - "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "glob": "^7.1.3", - "ora": "^5.4.1" - } - }, - "node_modules/@react-native-community/cli-plugin-metro": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", - "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-server-api": "^9.2.1", - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "metro": "0.72.3", - "metro-config": "0.72.3", - "metro-core": "0.72.3", - "metro-react-native-babel-transformer": "0.72.3", - "metro-resolver": "0.72.3", - "metro-runtime": "0.72.3", - "readline": "^1.3.0" - } - }, - "node_modules/@react-native-community/cli-server-api": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", - "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", - "license": "MIT", - "dependencies": { - "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-tools": "^9.2.1", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.0", - "nocache": "^3.0.1", - "pretty-format": "^26.6.2", - "serve-static": "^1.13.1", - "ws": "^7.5.1" - } - }, - "node_modules/@react-native-community/cli-tools": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", - "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", - "license": "MIT", - "dependencies": { - "appdirsjs": "^1.2.4", - "chalk": "^4.1.2", - "find-up": "^5.0.0", - "mime": "^2.4.1", - "node-fetch": "^2.6.0", - "open": "^6.2.0", - "ora": "^5.4.1", - "semver": "^6.3.0", - "shell-quote": "^1.7.3" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@react-native-community/cli-tools/node_modules/open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-types": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", - "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", - "license": "MIT", - "dependencies": { - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@react-native-community/cli/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native/assets": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", - "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", - "license": "MIT" - }, - "node_modules/@react-native/normalize-color": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz", - "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==", - "license": "MIT" - }, - "node_modules/@react-native/polyfills": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", - "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", - "license": "MIT" - }, - "node_modules/@segment/loosely-validate-event": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", - "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", - "dependencies": { - "component-type": "^1.2.1", - "join-component": "^1.1.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "license": "BSD-3-Clause" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@sinclair/typebox": { - "version": "0.25.21", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", - "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==", - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "license": "MIT", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.0.27", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", - "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-native": { - "version": "0.70.9", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.9.tgz", - "integrity": "sha512-0C6sIo13ztzM2llaWdTq0Vpscx3VdU0T8F45kEurWv3l5n+BHm/Mkr8Z+N29eXDYGhTvCz5y2jegB8JyiVa5kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "license": "MIT" - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "license": "MIT" - }, - "node_modules/@types/tapable": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "license": "MIT" - }, - "node_modules/@types/uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", - "license": "MIT", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/@types/webpack": { - "version": "4.41.33", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", - "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/@types/webpack-sources": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - } - }, - "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "license": "MIT" - }, - "node_modules/@urql/core": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", - "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.0", - "wonka": "^4.0.14" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@urql/exchange-retry": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", - "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", - "license": "MIT", - "dependencies": { - "@urql/core": ">=2.3.1", - "wonka": "^4.0.14" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/@urql/exchange-retry/node_modules/@urql/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@urql/core/-/core-3.1.1.tgz", - "integrity": "sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q==", - "license": "MIT", - "dependencies": { - "wonka": "^6.1.2" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@urql/exchange-retry/node_modules/@urql/core/node_modules/wonka": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.1.2.tgz", - "integrity": "sha512-zNrXPMccg/7OEp9tSfFkMgTvhhowqasiSHdJ3eCZolXxVTV/aT6HUTofoZk9gwRbGoFey/Nss3JaZKUMKMbofg==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "license": "ISC" - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "license": "MIT", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", - "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/absolute-path": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", - "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==", - "license": "MIT" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "license": "MIT", - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "license": "MIT", - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ajv/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "license": "MIT" - }, - "node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "license": "MIT" - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-fragments": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", - "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "license": "MIT", - "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "node_modules/ansi-fragments/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-fragments/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==", - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/appdirsjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", - "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "license": "MIT" - }, - "node_modules/application-config-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", - "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==", - "license": "MIT" - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "license": "ISC" - }, - "node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "license": "ISC" - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "license": "MIT", - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "license": "MIT" - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "license": "MIT" - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.10.0" - } - }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-module-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", - "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", - "license": "MIT", - "dependencies": { - "find-babel-config": "^1.2.0", - "glob": "^7.1.6", - "pkg-up": "^3.1.0", - "reselect": "^4.0.0", - "resolve": "^1.13.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.11.tgz", - "integrity": "sha512-wSjYFaflJIzo3E/1vpzkx2HvKnodEEvYHv4rgxwloqOQY7wBC3RNRZ8Zhnlm77iaZg7W4Zp1d0iuVtVQHPxIdA==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "license": "MIT" - }, - "node_modules/babel-preset-expo": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz", - "integrity": "sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==", - "license": "MIT", - "dependencies": { - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-proposal-object-rest-spread": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.17", - "@babel/preset-env": "^7.12.9", - "babel-plugin-module-resolver": "^4.1.0", - "babel-plugin-react-native-web": "~0.18.2", - "metro-react-native-babel-preset": "0.72.3" - } - }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "license": "MIT", - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "license": "MIT", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "license": "MIT" - }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "license": "MIT", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "license": "MIT" - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "license": "MIT", - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/bonjour/node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", - "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", - "license": "MIT", - "dependencies": { - "stream-buffers": "2.2.x" - } - }, - "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", - "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "license": "MIT", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "license": "MIT" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "license": "MIT", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-rsa/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "license": "ISC", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/browserslist/node_modules/caniuse-lite": { - "version": "1.0.30001447", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz", - "integrity": "sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "license": "MIT", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "license": "MIT" - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "license": "MIT" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "license": "MIT" - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "license": "MIT" - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "license": "MIT", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/cacheable-request/node_modules/responselike/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "license": "MIT", - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", - "engines": { - "node": "*" - } - }, - "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001448", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz", - "integrity": "sha512-tq2YI+MJnooG96XpbTRYkBxLxklZPOdLmNIOdIhvf7SNJan6u5vCKum8iT7ZfCt70m1GPkuC7P3TtX6UuhupuA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "license": "MIT", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", - "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "license": "MIT", - "dependencies": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - }, - "engines": { - "node": ">=8.9.0" - }, - "peerDependencies": { - "webpack": "*" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "license": "MIT", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/coa/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "license": "MIT", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-convert/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "license": "MIT" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "license": "MIT" - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "license": "MIT" - }, - "node_modules/component-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", - "integrity": "sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg==", - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.4.tgz", - "integrity": "sha512-zCazfdYAh3q/O4VzZFiadWGpDA2zTs6FC6D7YTHD6H1J40pzo0H4z22h1NYMCl4ArQP4CK8y/KWqPrJ4rVkZ5A==", - "license": "MIT", - "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^2.7.0", - "serialize-javascript": "^4.0.0", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/core-js-compat": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", - "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-react-class": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", - "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "license": "MIT", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "engines": { - "node": ">4" - } - }, - "node_modules/css-in-js-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", - "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", - "license": "MIT", - "dependencies": { - "hyphenate-style-name": "^1.0.3" - } - }, - "node_modules/css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/css-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/css-loader/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "license": "MIT" - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "license": "MIT", - "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "license": "CC0-1.0" - }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", - "license": "MIT" - }, - "node_modules/dag-map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", - "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==", - "license": "MIT" - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/dayjs": { - "version": "1.11.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decache": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.4.0.tgz", - "integrity": "sha512-G8CyOswrO0mDcSf9t5dXS7D0Zw1wBqQPIkvYIkO3yzAEUzU0uEunAMz2BTBmJXJnd+WJEtmQKjQFrXXIXBxqgQ==", - "license": "MIT", - "dependencies": { - "callsite": "^1.0.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "license": "MIT", - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "license": "MIT" - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "license": "MIT", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", - "license": "MIT" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "license": "MIT" - }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "license": "MIT", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "license": "MIT", - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "license": "MIT", - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "license": "MIT", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "license": "MIT", - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domino": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", - "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==", - "license": "BSD-2-Clause" - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "license": "MIT" - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "license": "BSD-3-Clause" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "license": "ISC" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-editor": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", - "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eol": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", - "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", - "license": "MIT" - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "license": "MIT", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/errorhandler": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", - "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.7", - "escape-html": "~1.0.3" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "license": "MIT" - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/exec-async": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", - "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", - "license": "MIT" - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "license": "MIT", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expo": { - "version": "47.0.13", - "resolved": "https://registry.npmjs.org/expo/-/expo-47.0.13.tgz", - "integrity": "sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.14.0", - "@expo/cli": "0.4.11", - "@expo/config": "7.0.3", - "@expo/config-plugins": "5.0.4", - "@expo/vector-icons": "^13.0.0", - "babel-preset-expo": "~9.2.2", - "cross-spawn": "^6.0.5", - "expo-application": "~5.0.1", - "expo-asset": "~8.7.0", - "expo-constants": "~14.0.2", - "expo-file-system": "~15.1.1", - "expo-font": "~11.0.1", - "expo-keep-awake": "~11.0.1", - "expo-modules-autolinking": "1.0.2", - "expo-modules-core": "1.1.1", - "fbemitter": "^3.0.0", - "getenv": "^1.0.0", - "invariant": "^2.2.4", - "md5-file": "^3.2.3", - "node-fetch": "^2.6.7", - "pretty-format": "^26.5.2", - "uuid": "^3.4.0" - }, - "bin": { - "expo": "bin/cli.js" - }, - "optionalDependencies": { - "expo-error-recovery": "~4.0.1" - } - }, - "node_modules/expo-application": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz", - "integrity": "sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-asset": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz", - "integrity": "sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==", - "license": "MIT", - "dependencies": { - "blueimp-md5": "^2.10.0", - "expo-constants": "~14.0.0", - "expo-file-system": "~15.1.0", - "invariant": "^2.2.4", - "md5-file": "^3.2.3", - "path-browserify": "^1.0.0", - "url-parse": "^1.5.9" - } - }, - "node_modules/expo-cli": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/expo-cli/-/expo-cli-6.1.0.tgz", - "integrity": "sha512-yhbevPdwof7oyjQup/dEYbxYZCiK/vYYQVnZA3CbYxtz0TG6LcEumz1Pn5WhAwU6vGCSmKpsJ02r4O0/bwIB/Q==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "7.9.0", - "@expo/apple-utils": "0.0.0-alpha.31", - "@expo/bunyan": "4.0.0", - "@expo/config": "6.0.24", - "@expo/config-plugins": "4.1.5", - "@expo/dev-server": "0.1.115", - "@expo/json-file": "8.2.37", - "@expo/osascript": "2.0.33", - "@expo/package-manager": "0.0.56", - "@expo/plist": "0.0.20", - "@expo/prebuild-config": "4.0.3", - "@expo/spawn-async": "1.5.0", - "@expo/xcpretty": "^4.1.0", - "better-opn": "^3.0.1", - "boxen": "^5.0.1", - "bplist-parser": "0.2.0", - "cacache": "^15.3.0", - "chalk": "^4.0.0", - "cli-table3": "^0.6.0", - "command-exists": "^1.2.8", - "commander": "2.17.1", - "dateformat": "3.0.3", - "env-editor": "^0.4.1", - "find-up": "^5.0.0", - "find-yarn-workspace-root": "~2.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "got": "^11.1.4", - "hashids": "1.1.4", - "joi": "^17.4.0", - "js-yaml": "^3.13.1", - "keychain": "1.3.0", - "leven": "^3.1.0", - "lodash": "^4.17.19", - "minipass": "3.1.6", - "npm-package-arg": "6.1.0", - "ora": "3.4.0", - "pngjs": "3.4.0", - "progress": "2.0.3", - "prompts": "^2.3.2", - "qrcode-terminal": "0.11.0", - "read-last-lines": "1.6.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "strip-ansi": "^6.0.0", - "tar": "^6.0.5", - "tempy": "^0.7.1", - "terminal-link": "^2.1.1", - "turndown": "~7.0.0", - "untildify": "3.0.3", - "url-join": "4.0.0", - "uuid": "^8.0.0", - "wrap-ansi": "^7.0.0", - "xdl": "59.3.0" - }, - "bin": { - "expo": "bin/expo.js", - "expo-cli": "bin/expo.js" - }, - "engines": { - "node": ">=12 <=16" - } - }, - "node_modules/expo-cli/node_modules/@babel/runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", - "integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.13.4" - } - }, - "node_modules/expo-cli/node_modules/@expo/config": { - "version": "6.0.24", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz", - "integrity": "sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "4.1.5", - "@expo/config-types": "^45.0.0", - "@expo/json-file": "8.2.36", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - } - }, - "node_modules/expo-cli/node_modules/@expo/config/node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/expo-cli/node_modules/@expo/config/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/expo-cli/node_modules/@expo/json-file": { - "version": "8.2.37", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", - "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/expo-cli/node_modules/@expo/plist": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", - "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" - } - }, - "node_modules/expo-cli/node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/expo-cli/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/expo-cli/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/expo-cli/node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-cli/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "license": "MIT" - }, - "node_modules/expo-cli/node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-cli/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-cli/node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/expo-cli/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-cli/node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/expo-cli/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/expo-cli/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-cli/node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/expo-cli/node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/expo-cli/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-cli/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/npm-package-arg": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", - "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", - "license": "ISC", - "dependencies": { - "hosted-git-info": "^2.6.0", - "osenv": "^0.1.5", - "semver": "^5.5.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "node_modules/expo-cli/node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/expo-cli/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expo-cli/node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/ora/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expo-cli/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-cli/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-cli/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-cli/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo-cli/node_modules/tempy": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", - "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", - "license": "MIT", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo-cli/node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-cli/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/expo-constants": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz", - "integrity": "sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==", - "license": "MIT", - "dependencies": { - "@expo/config": "~7.0.2", - "uuid": "^3.3.2" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-error-recovery": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz", - "integrity": "sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==", - "license": "MIT", - "optional": true, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-file-system": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz", - "integrity": "sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==", - "license": "MIT", - "dependencies": { - "uuid": "^3.4.0" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-font": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz", - "integrity": "sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==", - "license": "MIT", - "dependencies": { - "fontfaceobserver": "^2.1.0" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-keep-awake": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz", - "integrity": "sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==", - "license": "MIT", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-modules-autolinking": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz", - "integrity": "sha512-skAUXERKw1gtSw8xsvft9DE0KVhBvw4dujAtgCZoG2l513fN7ds+B5+30ZVgZATMC+EjtlmjKXzhp5QS44DCFA==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "commander": "^7.2.0", - "fast-glob": "^3.2.5", - "find-up": "^5.0.0", - "fs-extra": "^9.1.0" - }, - "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" - } - }, - "node_modules/expo-modules-autolinking/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/expo-modules-autolinking/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-modules-autolinking/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/expo-modules-autolinking/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/expo-modules-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.1.1.tgz", - "integrity": "sha512-+AcaYmaWphIfkBcccu65dyOhWnpOJ3+SQpoI4lI/Plg1nNjOLuBjmrdVvpiJOvkN+CqbNGsJ5Yll8LLk+C107Q==", - "license": "MIT", - "dependencies": { - "compare-versions": "^3.4.0", - "invariant": "^2.2.4" - } - }, - "node_modules/expo-pwa": { - "version": "0.0.124", - "resolved": "https://registry.npmjs.org/expo-pwa/-/expo-pwa-0.0.124.tgz", - "integrity": "sha512-hYvQQhxATNTivWSRc9nrd1WVYJJnBG8P/SVrJ4PPu0pmsS7ZIvWt981IXYG461y9UWnTbXdZEG4UOt0Thak1Gg==", - "license": "MIT", - "dependencies": { - "@expo/image-utils": "0.3.23", - "chalk": "^4.0.0", - "commander": "2.20.0", - "update-check": "1.5.3" - }, - "bin": { - "expo-pwa": "build/cli.js" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-pwa/node_modules/@expo/image-utils": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz", - "integrity": "sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw==", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "1.5.0", - "chalk": "^4.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "jimp-compact": "0.16.1", - "mime": "^2.4.4", - "node-fetch": "^2.6.0", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "tempy": "0.3.0" - } - }, - "node_modules/expo-pwa/node_modules/commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "license": "MIT" - }, - "node_modules/expo-pwa/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-status-bar": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.2.tgz", - "integrity": "sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q==", - "license": "MIT" - }, - "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", - "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^47.0.0", - "@expo/json-file": "8.2.36", - "@expo/plist": "0.0.18", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.3.5", - "slash": "^3.0.0", - "xcode": "^3.0.1", - "xml2js": "0.4.23" - } - }, - "node_modules/expo/node_modules/@expo/config-types": { - "version": "47.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", - "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==", - "license": "MIT" - }, - "node_modules/expo/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/expo/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/expo/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", - "license": "MIT", - "dependencies": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "license": "MIT" - }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express/node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "license": "MIT", - "bin": { - "mime": "cli.js" - } - }, - "node_modules/express/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "license": "MIT", - "dependencies": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/express/node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express/node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-loops": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", - "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==", - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", - "license": "MIT", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fbemitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", - "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", - "license": "BSD-3-Clause", - "dependencies": { - "fbjs": "^3.0.0" - } - }, - "node_modules/fbjs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", - "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", - "license": "MIT", - "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - } - }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "license": "MIT" - }, - "node_modules/fbjs/node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "license": "MIT", - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/fetch-retry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", - "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==", - "license": "MIT" - }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "license": "ISC" - }, - "node_modules/file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT", - "optional": true - }, - "node_modules/filesize": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", - "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "license": "MIT", - "dependencies": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-babel-config/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/find-yarn-workspace-root/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-yarn-workspace-root/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-yarn-workspace-root/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/find-yarn-workspace-root/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/find-yarn-workspace-root/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/flow-parser": { - "version": "0.121.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", - "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fontfaceobserver": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", - "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", - "license": "BSD-2-Clause" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "engines": { - "node": ">=6.11.5", - "yarn": ">=1.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "license": "MIT", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-extra/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/fs-extra/node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "license": "MIT" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getenv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", - "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/got/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "license": "ISC" - }, - "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "license": "MIT", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/graphql-tag/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" - }, - "node_modules/gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "license": "MIT" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "license": "MIT", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hasbin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", - "integrity": "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==", - "license": "MIT", - "dependencies": { - "async": "~1.5" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hashids": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/hashids/-/hashids-1.1.4.tgz", - "integrity": "sha512-U/fnTE3edW0AV92ZI/BfEluMZuVcu3MDOopsN7jS+HqDYcarQo8rXQiWlsBlm0uX48/taYSdxRsfzh2HRg5Z6w==", - "license": "MIT" - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hermes-estree": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", - "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==", - "license": "MIT" - }, - "node_modules/hermes-parser": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", - "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.8.0" - } - }, - "node_modules/hermes-profile-transformer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", - "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", - "license": "MIT", - "dependencies": { - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/hermes-profile-transformer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "license": "MIT" - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "license": "MIT" - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "license": "MIT" - }, - "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "license": "MIT" - }, - "node_modules/html-loader": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.1.0.tgz", - "integrity": "sha512-zwLbEgy+i7sgIYTlxI9M7jwkn29IvdsV6f1y7a2aLv/w8l1RigVk0PFijBZLLFsdi2gvL8sf2VJhTjLlfnK8sA==", - "license": "MIT", - "dependencies": { - "html-minifier-terser": "^5.0.5", - "htmlparser2": "^4.1.0", - "loader-utils": "^2.0.0", - "parse-srcset": "^1.0.2", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/html-webpack-plugin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz", - "integrity": "sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w==", - "license": "MIT", - "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.15", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": ">=4.0.0 < 6.0.0" - } - }, - "node_modules/html-webpack-plugin/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "node_modules/htmlparser2/node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "license": "BSD-2-Clause" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC" - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "license": "MIT", - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "license": "MIT" - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", - "license": "BSD-3-Clause" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "license": "ISC", - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "license": "MIT" - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "license": "MIT", - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/immer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "license": "MIT", - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "license": "MIT" - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/inline-style-prefixer": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", - "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==", - "license": "MIT", - "dependencies": { - "css-in-js-utils": "^3.1.0", - "fast-loops": "^1.1.3" - } - }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "license": "MIT", - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "license": "MIT" - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "license": "MIT", - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-invalid-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", - "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", - "license": "MIT", - "dependencies": { - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-invalid-path/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-invalid-path/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "license": "MIT", - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "license": "MIT", - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-port-reachable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-2.0.1.tgz", - "integrity": "sha512-SqU55C5gkitgOhl2ccd2v23MbkbcOFa5e4aPo8h8VGqOifh7iDwG44bQBWGW/lZulTjl9AWIKP0NiUWpa+TtWA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-reachable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-reachable/-/is-reachable-4.0.0.tgz", - "integrity": "sha512-eCTBKm9K6nO3H1S3BrJBAqZJIVXKNdwDuGl6KHf1bnf/bn02BvEe+l+MypjsxbqZ7mt5oMhu+bS/mm7G2FRW3A==", - "license": "MIT", - "dependencies": { - "arrify": "^2.0.1", - "got": "^9.6.0", - "is-port-reachable": "^2.0.1", - "p-any": "^2.1.0", - "p-timeout": "^3.2.0", - "prepend-http": "^3.0.1", - "router-ips": "^1.0.0", - "url-parse": "^1.4.7" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-reachable/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-reachable/node_modules/prepend-http": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-3.0.1.tgz", - "integrity": "sha512-BLxfZh+m6UiAiCPZFJ4+vYoL7NrRs5XgCTRrjseATAggXhdZKKxn+JUNmuVYWY23bDHgaEHodxw8mnmtVEDtHw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "license": "ISC" - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-valid-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", - "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", - "license": "MIT", - "dependencies": { - "is-invalid-path": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "license": "MIT", - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jimp-compact": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", - "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", - "license": "MIT" - }, - "node_modules/joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/join-component": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", - "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsc-android": { - "version": "250230.2.1", - "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", - "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", - "license": "BSD-2-Clause" - }, - "node_modules/jscodeshift": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", - "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^3.1.10", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.20.4", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/jscodeshift/node_modules/flow-parser": { - "version": "0.198.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.198.1.tgz", - "integrity": "sha512-WgmXdj+QWApMqtnMTeG7bF6tpX/+jsH5r/i61ukFCSXVgsaldLa/KOy+hcwQ3dbxsMGYM5iLQme6Z0/s0z2OkQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "license": "MIT" - }, - "node_modules/json-schema-deref-sync": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", - "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", - "license": "MIT", - "dependencies": { - "clone": "^2.1.2", - "dag-map": "~1.0.0", - "is-valid-path": "^0.1.1", - "lodash": "^4.17.13", - "md5": "~2.2.0", - "memory-cache": "~0.2.0", - "traverse": "~0.6.6", - "valid-url": "~1.0.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/json-schema-deref-sync/node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/json-schema-deref-sync/node_modules/md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", - "license": "BSD-3-Clause", - "dependencies": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keychain": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/keychain/-/keychain-1.3.0.tgz", - "integrity": "sha512-VHdsIWwXNO1l+fqwNdYZ/dDGnaN60RLuOIgMnwL+2kE3woPvxpOpeusjfaMZbTFaQFwGnTTzFbVHqQrDqf1FnQ==", - "license": "MIT" - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "license": "ISC" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "license": "MIT", - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/latest-version/node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "license": "MIT", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/latest-version/node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "license": "MIT", - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "license": "MIT", - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "license": "MIT" - }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/logkitty": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", - "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "license": "MIT", - "dependencies": { - "ansi-fragments": "^0.2.1", - "dayjs": "^1.8.15", - "yargs": "^15.1.0" - }, - "bin": { - "logkitty": "bin/logkitty.js" - } - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "license": "BSD-3-Clause", - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "node_modules/md5-file": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", - "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", - "license": "MIT", - "dependencies": { - "buffer-alloc": "^1.1.0" - }, - "bin": { - "md5-file": "cli.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/md5hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", - "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==", - "license": "MIT" - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "license": "CC0-1.0" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "license": "MIT" - }, - "node_modules/memory-cache": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", - "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==", - "license": "BSD-2-Clause" - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "license": "MIT" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/metro": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz", - "integrity": "sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.14.0", - "@babel/generator": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.0.0", - "absolute-path": "^0.0.0", - "accepts": "^1.3.7", - "async": "^3.2.2", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "error-stack-parser": "^2.0.6", - "fs-extra": "^1.0.0", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.8.0", - "image-size": "^0.6.0", - "invariant": "^2.2.4", - "jest-worker": "^27.2.0", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.72.3", - "metro-cache": "0.72.3", - "metro-cache-key": "0.72.3", - "metro-config": "0.72.3", - "metro-core": "0.72.3", - "metro-file-map": "0.72.3", - "metro-hermes-compiler": "0.72.3", - "metro-inspector-proxy": "0.72.3", - "metro-minify-uglify": "0.72.3", - "metro-react-native-babel-preset": "0.72.3", - "metro-resolver": "0.72.3", - "metro-runtime": "0.72.3", - "metro-source-map": "0.72.3", - "metro-symbolicate": "0.72.3", - "metro-transform-plugins": "0.72.3", - "metro-transform-worker": "0.72.3", - "mime-types": "^2.1.27", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "rimraf": "^2.5.4", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", - "temp": "0.8.3", - "throat": "^5.0.0", - "ws": "^7.5.1", - "yargs": "^15.3.1" - }, - "bin": { - "metro": "src/cli.js" - } - }, - "node_modules/metro-babel-transformer": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz", - "integrity": "sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.14.0", - "hermes-parser": "0.8.0", - "metro-source-map": "0.72.3", - "nullthrows": "^1.1.1" - } - }, - "node_modules/metro-cache": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz", - "integrity": "sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==", - "license": "MIT", - "dependencies": { - "metro-core": "0.72.3", - "rimraf": "^2.5.4" - } - }, - "node_modules/metro-cache-key": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz", - "integrity": "sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==", - "license": "MIT" - }, - "node_modules/metro-config": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz", - "integrity": "sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==", - "license": "MIT", - "dependencies": { - "cosmiconfig": "^5.0.5", - "jest-validate": "^26.5.2", - "metro": "0.72.3", - "metro-cache": "0.72.3", - "metro-core": "0.72.3", - "metro-runtime": "0.72.3" - } - }, - "node_modules/metro-core": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz", - "integrity": "sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==", - "license": "MIT", - "dependencies": { - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.72.3" - } - }, - "node_modules/metro-file-map": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz", - "integrity": "sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "anymatch": "^3.0.3", - "debug": "^2.2.0", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.2.0", - "jest-worker": "^27.2.0", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "optionalDependencies": { - "fsevents": "^2.1.2" - } - }, - "node_modules/metro-file-map/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/metro-file-map/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/metro-file-map/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/metro-file-map/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/metro-file-map/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/metro-hermes-compiler": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz", - "integrity": "sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==", - "license": "MIT" - }, - "node_modules/metro-inspector-proxy": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz", - "integrity": "sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==", - "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "ws": "^7.5.1", - "yargs": "^15.3.1" - }, - "bin": { - "metro-inspector-proxy": "src/cli.js" - } - }, - "node_modules/metro-minify-uglify": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz", - "integrity": "sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==", - "license": "MIT", - "dependencies": { - "uglify-es": "^3.1.9" - } - }, - "node_modules/metro-react-native-babel-preset": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", - "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.14.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "react-refresh": "^0.4.0" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/metro-react-native-babel-transformer": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz", - "integrity": "sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.14.0", - "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.8.0", - "metro-babel-transformer": "0.72.3", - "metro-react-native-babel-preset": "0.72.3", - "metro-source-map": "0.72.3", - "nullthrows": "^1.1.1" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/metro-resolver": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz", - "integrity": "sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==", - "license": "MIT", - "dependencies": { - "absolute-path": "^0.0.0" - } - }, - "node_modules/metro-runtime": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz", - "integrity": "sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" - } - }, - "node_modules/metro-source-map": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz", - "integrity": "sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.0.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.72.3", - "nullthrows": "^1.1.1", - "ob1": "0.72.3", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - } - }, - "node_modules/metro-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro-symbolicate": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz", - "integrity": "sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==", - "license": "MIT", - "dependencies": { - "invariant": "^2.2.4", - "metro-source-map": "0.72.3", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, - "engines": { - "node": ">=8.3" - } - }, - "node_modules/metro-symbolicate/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro-transform-plugins": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz", - "integrity": "sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.14.0", - "@babel/generator": "^7.14.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.14.0", - "nullthrows": "^1.1.1" - } - }, - "node_modules/metro-transform-worker": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz", - "integrity": "sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.14.0", - "@babel/generator": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.4.0", - "metro": "0.72.3", - "metro-babel-transformer": "0.72.3", - "metro-cache": "0.72.3", - "metro-cache-key": "0.72.3", - "metro-hermes-compiler": "0.72.3", - "metro-source-map": "0.72.3", - "metro-transform-plugins": "0.72.3", - "nullthrows": "^1.1.1" - } - }, - "node_modules/metro/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/metro/node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "license": "MIT" - }, - "node_modules/metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "license": "MIT" - }, - "node_modules/metro/node_modules/fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "node_modules/metro/node_modules/image-size": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", - "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", - "license": "MIT", - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/metro/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/metro/node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro/node_modules/temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==", - "engines": [ - "node >=0.8.0" - ], - "license": "MIT", - "dependencies": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - } - }, - "node_modules/metro/node_modules/temp/node_modules/rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", - "license": "MIT", - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", - "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", - "license": "MIT", - "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.4.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "license": "BSD-2-Clause", - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "license": "MIT", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "license": "MIT", - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "license": "MIT" - }, - "node_modules/mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "license": "MIT", - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/mv/node_modules/glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "license": "ISC", - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "license": "ISC", - "dependencies": { - "glob": "^6.0.1" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "license": "MIT", - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "license": "MIT", - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" - }, - "node_modules/nested-error-stacks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", - "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/nocache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", - "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.10.5" - } - }, - "node_modules/node-fetch": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", - "integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-html-parser": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz", - "integrity": "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==", - "license": "MIT", - "dependencies": { - "he": "1.2.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "license": "MIT" - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "license": "MIT", - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "license": "MIT" - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", - "license": "MIT" - }, - "node_modules/node-stream-zip": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", - "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/antelle" - } - }, - "node_modules/normalize-css-color": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz", - "integrity": "sha512-jPJ/V7Cp1UytdidsPqviKEElFQJs22hUUgK5BOPHTwOonNCk7/2qOxhhqzEajmFrWJowADFfOFh1V+aWkRfy+w==", - "license": "BSD-3-Clause" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-package-arg": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", - "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", - "license": "ISC", - "dependencies": { - "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "license": "MIT" - }, - "node_modules/ob1": { - "version": "0.72.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz", - "integrity": "sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==", - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "license": "MIT", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "license": "MIT", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", - "license": "MIT", - "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/optimize-css-assets-webpack-plugin": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", - "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==", - "license": "MIT", - "dependencies": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "license": "MIT" - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "license": "ISC", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-any": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", - "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", - "license": "MIT", - "dependencies": { - "p-cancelable": "^2.0.0", - "p-some": "^4.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz", - "integrity": "sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA==", - "license": "MIT", - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-some": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", - "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz", - "integrity": "sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.4.0.tgz", - "integrity": "sha512-bd1T8OBG7hcvMd9c/udgv6u5v9wISP3Oyl9Cm7Weop8EFwrtcQDnS2sb6zhwqus2WslSr5wSTIPiTTpxxmPm7Q==", - "license": "MIT", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^3.4.0", - "registry-url": "^5.0.0", - "semver": "^6.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "license": "MIT", - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "license": "ISC", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parse-png": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", - "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", - "license": "MIT", - "dependencies": { - "pngjs": "^3.3.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", - "license": "MIT" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/password-prompt": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", - "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", - "license": "WTFPL", - "dependencies": { - "ansi-escapes": "^3.1.0", - "cross-spawn": "^6.0.5" - } - }, - "node_modules/password-prompt/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "license": "(WTFPL OR MIT)" - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/plist": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/plist/node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pnp-webpack-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", - "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", - "license": "MIT", - "dependencies": { - "ts-pnp": "^1.1.6" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "license": "MIT", - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-calc/node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-calc/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "license": "MIT", - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "license": "MIT", - "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "license": "MIT", - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "license": "ISC", - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "license": "MIT", - "dependencies": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "license": "ISC", - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "license": "ISC", - "dependencies": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "license": "MIT", - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "license": "MIT", - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "license": "MIT", - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.26" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "license": "MIT", - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "license": "MIT", - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "license": "MIT" - }, - "node_modules/postcss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "license": "ISC" - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "license": "MIT", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "license": "MIT" - }, - "node_modules/probe-image-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-6.0.0.tgz", - "integrity": "sha512-99PZ5+RU4gqiTfK5ZDMDkZtn6eL4WlKfFyVJV7lFQvH3iGmQ85DqMTOdxorERO26LHkevR2qsxnHp0x/2UDJPA==", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.0.0", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" - } - }, - "node_modules/probe-image-size/node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "license": "MIT", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "license": "ISC" - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "license": "MIT" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qrcode-terminal": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", - "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" - }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.3" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/react": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", - "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dev-utils": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", - "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "7.10.4", - "address": "1.1.2", - "browserslist": "4.14.2", - "chalk": "2.4.2", - "cross-spawn": "7.0.3", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.1.0", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "4.1.6", - "global-modules": "2.0.0", - "globby": "11.0.1", - "gzip-size": "5.1.1", - "immer": "8.0.1", - "is-root": "2.1.0", - "loader-utils": "2.0.0", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "prompts": "2.4.0", - "react-error-overlay": "^6.0.9", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-dev-utils/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", - "node-releases": "^1.1.61" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/react-dev-utils/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "license": "MIT" - }, - "node_modules/react-dev-utils/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/react-dev-utils/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "license": "MIT" - }, - "node_modules/react-dev-utils/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/react-devtools-core": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", - "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==", - "license": "MIT", - "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" - } - }, - "node_modules/react-dom": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", - "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.22.0" - }, - "peerDependencies": { - "react": "^18.1.0" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", - "license": "MIT" - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "license": "MIT" - }, - "node_modules/react-native": { - "version": "0.70.5", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", - "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==", - "license": "MIT", - "dependencies": { - "@jest/create-cache-key-function": "^29.0.3", - "@react-native-community/cli": "9.2.1", - "@react-native-community/cli-platform-android": "9.2.1", - "@react-native-community/cli-platform-ios": "9.2.1", - "@react-native/assets": "1.0.0", - "@react-native/normalize-color": "2.0.0", - "@react-native/polyfills": "2.0.0", - "abort-controller": "^3.0.0", - "anser": "^1.4.9", - "base64-js": "^1.1.2", - "event-target-shim": "^5.0.1", - "invariant": "^2.2.4", - "jsc-android": "^250230.2.1", - "memoize-one": "^5.0.0", - "metro-react-native-babel-transformer": "0.72.3", - "metro-runtime": "0.72.3", - "metro-source-map": "0.72.3", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1", - "pretty-format": "^26.5.2", - "promise": "^8.0.3", - "react-devtools-core": "4.24.0", - "react-native-codegen": "^0.70.6", - "react-native-gradle-plugin": "^0.70.3", - "react-refresh": "^0.4.0", - "react-shallow-renderer": "^16.15.0", - "regenerator-runtime": "^0.13.2", - "scheduler": "^0.22.0", - "stacktrace-parser": "^0.1.3", - "use-sync-external-store": "^1.0.0", - "whatwg-fetch": "^3.0.0", - "ws": "^6.1.4" - }, - "bin": { - "react-native": "cli.js" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "18.1.0" - } - }, - "node_modules/react-native-codegen": { - "version": "0.70.6", - "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", - "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.14.0", - "flow-parser": "^0.121.0", - "jscodeshift": "^0.13.1", - "nullthrows": "^1.1.1" - } - }, - "node_modules/react-native-gradle-plugin": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", - "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==", - "license": "MIT" - }, - "node_modules/react-native-web": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz", - "integrity": "sha512-aJpc4wrcPpWyybnSbTTh0kBfe6xJ+T55Fi9AVmPlkeY3iuyk+5OxWwhzuzj3nZwwCBbvuFeuffj7T9sgwwX8nQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.6", - "create-react-class": "^15.7.0", - "fbjs": "^3.0.4", - "inline-style-prefixer": "^6.0.1", - "normalize-css-color": "^1.0.2", - "postcss-value-parser": "^4.2.0", - "styleq": "^0.1.2" - }, - "peerDependencies": { - "react": "^17.0.2 || ^18.0.0", - "react-dom": "^17.0.2 || ^18.0.0" - } - }, - "node_modules/react-native-web/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/react-native/node_modules/@react-native/normalize-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", - "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", - "license": "MIT" - }, - "node_modules/react-native/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-last-lines": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/read-last-lines/-/read-last-lines-1.6.0.tgz", - "integrity": "sha512-PLKEiyUBMqRMvPu+vfL1XQmkRE5g/TurxrsoNEURqfHbP6eOJaE/2K6+H2IXSfc6/flG5LIj+MtxahclzVvsAA==", - "license": "MIT", - "dependencies": { - "mz": "^2.7.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readline": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", - "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "license": "BSD" - }, - "node_modules/recast": { - "version": "0.20.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", - "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", - "license": "MIT", - "dependencies": { - "ast-types": "0.14.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" - }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "license": "MIT", - "dependencies": { - "minimatch": "3.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "license": "MIT", - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "license": "MIT", - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "license": "ISC" - }, - "node_modules/remove-trailing-slash": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", - "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==", - "license": "MIT" - }, - "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "license": "ISC" - }, - "node_modules/requireg": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", - "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.5" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" - }, - "node_modules/reselect": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", - "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "license": "MIT" - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", - "license": "MIT", - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "license": "MIT" - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "license": "MIT", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "license": "MIT" - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/router-ips": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/router-ips/-/router-ips-1.0.0.tgz", - "integrity": "sha512-yBo6F52Un/WYioXbedBGvrKIiofbwt+4cUhdqDb9fNMJBI4D4jOy7jlxxaRVEvICPKU7xMmJDtDFR6YswX/sFQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "license": "MIT", - "optional": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "license": "MIT", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "license": "ISC" - }, - "node_modules/scheduler": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", - "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "license": "MIT" - }, - "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", - "license": "MIT", - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/send/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/serialize-error": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz", - "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.12.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", - "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" - }, - "node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/simple-plist": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", - "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", - "license": "MIT", - "dependencies": { - "bplist-creator": "0.1.0", - "bplist-parser": "0.3.1", - "plist": "^3.0.5" - } - }, - "node_modules/simple-plist/node_modules/bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/slugify": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", - "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "license": "MIT", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "license": "MIT", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "license": "MIT", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", - "license": "MIT", - "dependencies": { - "faye-websocket": "^0.10.0", - "uuid": "^3.4.0", - "websocket-driver": "0.6.5" - } - }, - "node_modules/sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sockjs-client/node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/sockjs-client/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/sockjs/node_modules/websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha512-oBx6ZM1Gs5q2jwZuSN/Qxyy/fbgomV8+vqsmipaPKB/74hjHlKuM07jNmRhn4qa2AdUwsgxrltq+gaPsHgcl0Q==", - "license": "MIT", - "dependencies": { - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "license": "MIT", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "license": "MIT" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "license": "MIT" - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "license": "MIT" - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "license": "MIT", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-buffers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", - "license": "Unlicense", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "license": "MIT", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", - "license": "MIT", - "dependencies": { - "debug": "2" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/structured-headers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", - "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", - "license": "MIT" - }, - "node_modules/style-loader": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", - "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.6" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/styleq": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", - "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==", - "license": "MIT" - }, - "node_modules/sucrase": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz", - "integrity": "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==", - "license": "MIT", - "dependencies": { - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sudo-prompt": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", - "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/svgo/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/svgo/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "license": "BSD-2-Clause" - }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/svgo/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/svgo/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/svgo/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", - "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/temp": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", - "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "license": "MIT", - "dependencies": { - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "license": "MIT", - "dependencies": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy/node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "license": "BSD-2-Clause", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "license": "MIT", - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC" - }, - "node_modules/terser-webpack-plugin/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "license": "MIT" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "license": "MIT" - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "license": "MIT", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "license": "BSD-3-Clause" - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "license": "MIT" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "license": "MIT", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, - "node_modules/ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "license": "0BSD" - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "license": "MIT" - }, - "node_modules/turndown": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.0.0.tgz", - "integrity": "sha512-G1FfxfR0mUNMeGjszLYl3kxtopC4O9DRRiMlMDDVHvU1jaBkGFg4qxIyjIk2aiKLHyDyZvZyu4qBO2guuYBy3Q==", - "license": "MIT", - "dependencies": { - "domino": "^2.1.6" - } - }, - "node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" - }, - "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "license": "BSD-2-Clause", - "dependencies": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-es/node_modules/commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "license": "MIT" - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "license": "MIT" - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "license": "MIT" - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "license": "MIT" - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "license": "MIT", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "license": "MIT", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/untildify": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", - "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-check": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.3.tgz", - "integrity": "sha512-6KLU4/dd0Tg/l0xwL+f9V7kEIPSL1vOIbnNnhSLiRDlj4AVG6Ks9Zoc9Jgt9kIgWFPZ/wp2AHgmG7xNf15TJOA==", - "license": "MIT", - "dependencies": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } - }, - "node_modules/update-check/node_modules/registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "license": "MIT", - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/update-check/node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "license": "MIT", - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "license": "MIT" - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "license": "MIT", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==", - "license": "MIT" - }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "license": "MIT", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "license": "MIT" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "license": "MIT", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC" - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" - }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "license": "ISC", - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/vlq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", - "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "license": "MIT" - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "license": "MIT" - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "license": "MIT", - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/watchpack/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/watchpack/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/watchpack/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "license": "MIT", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.1", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "license": "MIT", - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", - "license": "MIT", - "dependencies": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "license": "ISC", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "license": "MIT", - "dependencies": { - "retry": "^0.12.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/webpack-dev-server/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "license": "MIT", - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-manifest-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", - "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", - "license": "MIT", - "dependencies": { - "fs-extra": "^7.0.0", - "lodash": ">=3.5 <5", - "object.entries": "^1.1.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.11.5" - }, - "peerDependencies": { - "webpack": "2 || 3 || 4" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/webpack/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "license": "MIT" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/with-open-file": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", - "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wonka": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", - "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==", - "license": "MIT" - }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "license": "MIT", - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "license": "MIT", - "dependencies": { - "microevent.ts": "~0.1.1" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xcode": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", - "license": "Apache-2.0", - "dependencies": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/xcode/node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/xdl": { - "version": "59.3.0", - "resolved": "https://registry.npmjs.org/xdl/-/xdl-59.3.0.tgz", - "integrity": "sha512-+7HeQDo13SWNCktnmggutegmWBIgF5TzKLPpaZe3qhlTXRETdNvQUbuYfaETLlcwk372jzvO7navUgxUvFrpNA==", - "license": "MIT", - "dependencies": { - "@expo/bunyan": "4.0.0", - "@expo/config": "6.0.24", - "@expo/config-plugins": "4.1.5", - "@expo/dev-server": "0.1.115", - "@expo/devcert": "^1.0.0", - "@expo/json-file": "8.2.37", - "@expo/osascript": "2.0.33", - "@expo/package-manager": "0.0.56", - "@expo/plist": "0.0.20", - "@expo/rudder-sdk-node": "1.1.1", - "@expo/schemer": "1.4.4", - "@expo/sdk-runtime-versions": "^1.0.0", - "@expo/spawn-async": "1.5.0", - "@expo/webpack-config": "0.17.4", - "axios": "0.21.1", - "better-opn": "^3.0.1", - "boxen": "^5.0.1", - "bplist-parser": "^0.3.0", - "chalk": "^4.0.0", - "concat-stream": "1.6.2", - "decache": "4.4.0", - "express": "4.16.4", - "form-data": "^2.3.2", - "freeport-async": "2.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "hasbin": "1.2.3", - "internal-ip": "4.3.0", - "is-reachable": "^4.0.0", - "is-root": "^2.1.0", - "json-schema-deref-sync": "^0.13.0", - "latest-version": "5.1.0", - "lodash": "^4.17.19", - "md5hex": "1.0.0", - "minimatch": "3.0.4", - "mv": "2.1.1", - "node-forge": "0.10.0", - "nullthrows": "1.1.1", - "p-map": "3.0.0", - "p-retry": "4.1.0", - "p-timeout": "3.1.0", - "package-json": "6.4.0", - "pretty-bytes": "^5.3.0", - "probe-image-size": "~6.0.0", - "progress": "2.0.3", - "prompts": "^2.3.2", - "react-dev-utils": "~11.0.1", - "requireg": "^0.2.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "serialize-error": "6.0.0", - "source-map-support": "0.4.18", - "split": "1.0.1", - "strip-ansi": "^6.0.0", - "tar": "^6.0.5", - "terminal-link": "^2.1.1", - "text-table": "^0.2.0", - "tree-kill": "1.2.2", - "url-join": "4.0.0", - "uuid": "^8.0.0", - "webpack": "4.43.0", - "webpack-dev-server": "3.11.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/xdl/node_modules/@expo/config": { - "version": "6.0.24", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz", - "integrity": "sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "4.1.5", - "@expo/config-types": "^45.0.0", - "@expo/json-file": "8.2.36", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - } - }, - "node_modules/xdl/node_modules/@expo/config/node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/xdl/node_modules/@expo/config/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/xdl/node_modules/@expo/json-file": { - "version": "8.2.37", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", - "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" - } - }, - "node_modules/xdl/node_modules/@expo/plist": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", - "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" - } - }, - "node_modules/xdl/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/xdl/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/xdl/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/xdl/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/xdl/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/xdl/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/xdl/node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "license": "MIT", - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/xdl/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xml2js/node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlbuilder": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", - "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/iut-expo-starter/node_modules/.yarn-integrity b/iut-expo-starter/node_modules/.yarn-integrity index 334b2864..2dff7910 100644 --- a/iut-expo-starter/node_modules/.yarn-integrity +++ b/iut-expo-starter/node_modules/.yarn-integrity @@ -13,2018 +13,2029 @@ "expo-status-bar@~1.4.2", "expo@~47.0.12", "react-dom@18.1.0", + "react-native-gesture-handler@^2.9.0", + "react-native-safe-area-context@^4.5.0", "react-native-web@~0.18.9", "react-native@0.70.5", "react@18.1.0", "typescript@^4.6.3" ], "lockfileEntries": { - "@ampproject/remapping@^2.1.0": "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d", - "@babel/code-frame@7.10.4": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a", - "@babel/code-frame@^7.0.0": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a", - "@babel/code-frame@^7.18.6": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a", - "@babel/code-frame@^7.5.5": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a", - "@babel/code-frame@^7.8.3": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a", - "@babel/code-frame@~7.10.4": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a", - "@babel/compat-data@^7.17.7": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec", - "@babel/compat-data@^7.20.1": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec", - "@babel/compat-data@^7.20.5": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec", - "@babel/core@7.9.0": "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e", - "@babel/core@^7.12.9": "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d", - "@babel/core@^7.13.16": "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d", - "@babel/core@^7.14.0": "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d", - "@babel/generator@^7.14.0": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a", - "@babel/generator@^7.20.7": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a", - "@babel/generator@^7.9.0": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a", - "@babel/helper-annotate-as-pure@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb", - "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb", - "@babel/helper-compilation-targets@^7.17.7": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb", - "@babel/helper-compilation-targets@^7.18.9": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb", - "@babel/helper-compilation-targets@^7.20.0": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb", - "@babel/helper-compilation-targets@^7.20.7": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb", - "@babel/helper-create-class-features-plugin@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819", - "@babel/helper-create-class-features-plugin@^7.20.12": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819", - "@babel/helper-create-class-features-plugin@^7.20.5": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819", - "@babel/helper-create-class-features-plugin@^7.20.7": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819", - "@babel/helper-create-regexp-features-plugin@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca", - "@babel/helper-create-regexp-features-plugin@^7.20.5": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca", - "@babel/helper-define-polyfill-provider@^0.3.3": "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a", - "@babel/helper-environment-visitor@^7.18.9": "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be", - "@babel/helper-explode-assignable-expression@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096", - "@babel/helper-function-name@^7.18.9": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c", - "@babel/helper-function-name@^7.19.0": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c", - "@babel/helper-hoist-variables@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678", - "@babel/helper-member-expression-to-functions@^7.20.7": "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05", - "@babel/helper-module-imports@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e", - "@babel/helper-module-transforms@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0", - "@babel/helper-module-transforms@^7.20.11": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0", - "@babel/helper-module-transforms@^7.9.0": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0", - "@babel/helper-optimise-call-expression@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe", - "@babel/helper-plugin-utils@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.10.4": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.12.13": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.14.5": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.16.7": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.18.9": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.19.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.20.2": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.8.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-plugin-utils@^7.8.3": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629", - "@babel/helper-remap-async-to-generator@^7.18.9": "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519", - "@babel/helper-replace-supers@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331", - "@babel/helper-replace-supers@^7.20.7": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331", - "@babel/helper-simple-access@^7.20.2": "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9", - "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684", - "@babel/helper-split-export-declaration@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075", - "@babel/helper-string-parser@^7.19.4": "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63", - "@babel/helper-validator-identifier@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2", - "@babel/helper-validator-identifier@^7.19.1": "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2", - "@babel/helper-validator-option@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8", - "@babel/helper-wrap-function@^7.18.9": "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3", - "@babel/helpers@^7.20.7": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2", - "@babel/helpers@^7.9.0": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2", - "@babel/highlight@^7.10.4": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf", - "@babel/highlight@^7.18.6": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf", - "@babel/parser@^7.13.16": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088", - "@babel/parser@^7.14.0": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088", - "@babel/parser@^7.20.13": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088", - "@babel/parser@^7.20.7": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088", - "@babel/parser@^7.9.0": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1", - "@babel/plugin-proposal-async-generator-functions@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326", - "@babel/plugin-proposal-async-generator-functions@^7.20.1": "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326", - "@babel/plugin-proposal-class-properties@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3", - "@babel/plugin-proposal-class-properties@^7.13.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3", - "@babel/plugin-proposal-class-properties@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3", - "@babel/plugin-proposal-class-static-block@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7", - "@babel/plugin-proposal-decorators@^7.12.9": "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz#b6bea3b18e88443688fa7ed2cc06d2c60da9f4a7", - "@babel/plugin-proposal-dynamic-import@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94", - "@babel/plugin-proposal-export-default-from@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206", - "@babel/plugin-proposal-export-namespace-from@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203", - "@babel/plugin-proposal-json-strings@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b", - "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83", - "@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1", - "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1", - "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1", - "@babel/plugin-proposal-numeric-separator@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75", - "@babel/plugin-proposal-object-rest-spread@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a", - "@babel/plugin-proposal-object-rest-spread@^7.12.13": "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a", - "@babel/plugin-proposal-object-rest-spread@^7.20.2": "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a", - "@babel/plugin-proposal-optional-catch-binding@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb", - "@babel/plugin-proposal-optional-catch-binding@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb", - "@babel/plugin-proposal-optional-chaining@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55", - "@babel/plugin-proposal-optional-chaining@^7.13.12": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55", - "@babel/plugin-proposal-optional-chaining@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55", - "@babel/plugin-proposal-optional-chaining@^7.20.7": "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55", - "@babel/plugin-proposal-private-methods@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea", - "@babel/plugin-proposal-private-property-in-object@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135", - "@babel/plugin-proposal-unicode-property-regex@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e", - "@babel/plugin-proposal-unicode-property-regex@^7.4.4": "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e", - "@babel/plugin-syntax-async-generators@^7.8.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d", - "@babel/plugin-syntax-class-properties@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10", - "@babel/plugin-syntax-class-properties@^7.12.13": "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10", - "@babel/plugin-syntax-class-static-block@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406", - "@babel/plugin-syntax-decorators@^7.19.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599", - "@babel/plugin-syntax-dynamic-import@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3", - "@babel/plugin-syntax-dynamic-import@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3", - "@babel/plugin-syntax-export-default-from@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc", - "@babel/plugin-syntax-export-default-from@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc", - "@babel/plugin-syntax-export-namespace-from@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a", - "@babel/plugin-syntax-flow@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1", - "@babel/plugin-syntax-flow@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1", - "@babel/plugin-syntax-flow@^7.2.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1", - "@babel/plugin-syntax-import-assertions@^7.20.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4", - "@babel/plugin-syntax-json-strings@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a", - "@babel/plugin-syntax-jsx@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0", - "@babel/plugin-syntax-jsx@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0", - "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699", - "@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9", - "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9", - "@babel/plugin-syntax-numeric-separator@^7.10.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97", - "@babel/plugin-syntax-object-rest-spread@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871", - "@babel/plugin-syntax-object-rest-spread@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871", - "@babel/plugin-syntax-optional-catch-binding@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1", - "@babel/plugin-syntax-optional-chaining@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a", - "@babel/plugin-syntax-optional-chaining@^7.8.3": "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a", - "@babel/plugin-syntax-private-property-in-object@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad", - "@babel/plugin-syntax-top-level-await@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c", - "@babel/plugin-syntax-typescript@^7.20.0": "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7", - "@babel/plugin-transform-arrow-functions@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551", - "@babel/plugin-transform-arrow-functions@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551", - "@babel/plugin-transform-async-to-generator@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354", - "@babel/plugin-transform-async-to-generator@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354", - "@babel/plugin-transform-block-scoped-functions@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8", - "@babel/plugin-transform-block-scoped-functions@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8", - "@babel/plugin-transform-block-scoping@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a", - "@babel/plugin-transform-block-scoping@^7.20.2": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz#9f5a3424bd112a3f32fe0cf9364fbb155cff262a", - "@babel/plugin-transform-classes@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073", - "@babel/plugin-transform-classes@^7.20.2": "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073", - "@babel/plugin-transform-computed-properties@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa", - "@babel/plugin-transform-computed-properties@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa", - "@babel/plugin-transform-destructuring@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454", - "@babel/plugin-transform-destructuring@^7.20.2": "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454", - "@babel/plugin-transform-dotall-regex@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8", - "@babel/plugin-transform-dotall-regex@^7.4.4": "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8", - "@babel/plugin-transform-duplicate-keys@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e", - "@babel/plugin-transform-exponentiation-operator@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd", - "@babel/plugin-transform-exponentiation-operator@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd", - "@babel/plugin-transform-flow-strip-types@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f", - "@babel/plugin-transform-flow-strip-types@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f", - "@babel/plugin-transform-for-of@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1", - "@babel/plugin-transform-for-of@^7.18.8": "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1", - "@babel/plugin-transform-function-name@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0", - "@babel/plugin-transform-function-name@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0", - "@babel/plugin-transform-literals@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc", - "@babel/plugin-transform-literals@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc", - "@babel/plugin-transform-member-expression-literals@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e", - "@babel/plugin-transform-member-expression-literals@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e", - "@babel/plugin-transform-modules-amd@^7.19.6": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a", - "@babel/plugin-transform-modules-commonjs@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607", - "@babel/plugin-transform-modules-commonjs@^7.13.8": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607", - "@babel/plugin-transform-modules-commonjs@^7.19.6": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607", - "@babel/plugin-transform-modules-systemjs@^7.19.6": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e", - "@babel/plugin-transform-modules-umd@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9", - "@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8", - "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8", - "@babel/plugin-transform-new-target@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8", - "@babel/plugin-transform-object-super@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c", - "@babel/plugin-transform-object-super@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c", - "@babel/plugin-transform-parameters@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f", - "@babel/plugin-transform-parameters@^7.20.1": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f", - "@babel/plugin-transform-parameters@^7.20.7": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f", - "@babel/plugin-transform-property-literals@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3", - "@babel/plugin-transform-property-literals@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3", - "@babel/plugin-transform-react-display-name@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415", - "@babel/plugin-transform-react-jsx-self@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7", - "@babel/plugin-transform-react-jsx-source@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86", - "@babel/plugin-transform-react-jsx@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz#f950f0b0c36377503d29a712f16287cedf886cbb", - "@babel/plugin-transform-react-jsx@^7.12.17": "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz#f950f0b0c36377503d29a712f16287cedf886cbb", - "@babel/plugin-transform-regenerator@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d", - "@babel/plugin-transform-reserved-words@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a", - "@babel/plugin-transform-runtime@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194", - "@babel/plugin-transform-shorthand-properties@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9", - "@babel/plugin-transform-shorthand-properties@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9", - "@babel/plugin-transform-spread@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e", - "@babel/plugin-transform-spread@^7.19.0": "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e", - "@babel/plugin-transform-sticky-regex@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc", - "@babel/plugin-transform-sticky-regex@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc", - "@babel/plugin-transform-template-literals@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e", - "@babel/plugin-transform-template-literals@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e", - "@babel/plugin-transform-typeof-symbol@^7.18.9": "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0", - "@babel/plugin-transform-typescript@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz#e3581b356b8694f6ff450211fe6774eaff8d25ab", - "@babel/plugin-transform-typescript@^7.5.0": "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz#e3581b356b8694f6ff450211fe6774eaff8d25ab", - "@babel/plugin-transform-unicode-escapes@^7.18.10": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246", - "@babel/plugin-transform-unicode-regex@^7.0.0": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca", - "@babel/plugin-transform-unicode-regex@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca", - "@babel/preset-env@^7.12.9": "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506", - "@babel/preset-flow@^7.13.13": "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb", - "@babel/preset-modules@^0.1.5": "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9", - "@babel/preset-typescript@^7.13.0": "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399", - "@babel/register@^7.13.16": "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c", - "@babel/runtime@7.9.0": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b", - "@babel/runtime@^7.0.0": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b", - "@babel/runtime@^7.14.0": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b", - "@babel/runtime@^7.18.6": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b", - "@babel/runtime@^7.8.4": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b", - "@babel/template@^7.0.0": "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8", - "@babel/template@^7.18.10": "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8", - "@babel/template@^7.20.7": "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8", - "@babel/template@^7.8.6": "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8", - "@babel/traverse@^7.14.0": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/traverse@^7.20.10": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/traverse@^7.20.12": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/traverse@^7.20.13": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/traverse@^7.20.5": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/traverse@^7.20.7": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/traverse@^7.9.0": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473", - "@babel/types@^7.0.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.18.6": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.18.9": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.19.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.20.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.20.2": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.20.5": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.20.7": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.4.4": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@babel/types@^7.9.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f", - "@colors/colors@1.5.0": "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9", - "@expo/apple-utils@0.0.0-alpha.31": "https://registry.yarnpkg.com/@expo/apple-utils/-/apple-utils-0.0.0-alpha.31.tgz#ab18640c384ba4b088e4490977a12f6f41a1e2a0", - "@expo/bunyan@4.0.0": "https://registry.yarnpkg.com/@expo/bunyan/-/bunyan-4.0.0.tgz#be0c1de943c7987a9fbd309ea0b1acd605890c7b", - "@expo/bunyan@^4.0.0": "https://registry.yarnpkg.com/@expo/bunyan/-/bunyan-4.0.0.tgz#be0c1de943c7987a9fbd309ea0b1acd605890c7b", - "@expo/cli@0.4.11": "https://registry.yarnpkg.com/@expo/cli/-/cli-0.4.11.tgz#b5284b6c8c74eea2b8c410c681f2eddb33b2dda3", - "@expo/code-signing-certificates@0.0.5": "https://registry.yarnpkg.com/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz#a693ff684fb20c4725dade4b88a6a9f96b02496c", - "@expo/config-plugins@4.1.5": "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-4.1.5.tgz#9d357d2cda9c095e511b51583ede8a3b76174068", - "@expo/config-plugins@5.0.4": "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-5.0.4.tgz#216fea6558fe66615af1370de55193f4181cb23e", - "@expo/config-plugins@~5.0.3": "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-5.0.4.tgz#216fea6558fe66615af1370de55193f4181cb23e", - "@expo/config-types@^45.0.0": "https://registry.yarnpkg.com/@expo/config-types/-/config-types-45.0.0.tgz#963c2fdce8fbcbd003758b92ed8a25375f437ef6", - "@expo/config-types@^47.0.0": "https://registry.yarnpkg.com/@expo/config-types/-/config-types-47.0.0.tgz#99eeabe0bba7a776e0f252b78beb0c574692c38d", - "@expo/config@6.0.24": "https://registry.yarnpkg.com/@expo/config/-/config-6.0.24.tgz#3602da8fdfa817e290a52fb328fc8ed9d6bc61e7", - "@expo/config@7.0.3": "https://registry.yarnpkg.com/@expo/config/-/config-7.0.3.tgz#c9c634e76186de25e296485e51418f1e52966e6e", - "@expo/config@~7.0.2": "https://registry.yarnpkg.com/@expo/config/-/config-7.0.3.tgz#c9c634e76186de25e296485e51418f1e52966e6e", - "@expo/dev-server@0.1.115": "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.1.115.tgz#d64a3caee6ee8023976233767272cfb4f81e39c3", - "@expo/dev-server@0.1.124": "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.1.124.tgz#81fca9eff42893a7cb9d51315f2c0dcf860c5eec", - "@expo/devcert@^1.0.0": "https://registry.yarnpkg.com/@expo/devcert/-/devcert-1.1.0.tgz#d148eb9180db6753c438192e73a123fb13b662ac", - "@expo/image-utils@0.3.21": "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.21.tgz#dabe772135a66671939f87389e11f23e54341e1e", - "@expo/image-utils@0.3.22": "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.22.tgz#3a45fb2e268d20fcc761c87bca3aca7fd8e24260", - "@expo/image-utils@0.3.23": "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.23.tgz#f14fd7e1f5ff6f8e4911a41e27dd274470665c3f", - "@expo/json-file@8.2.36": "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.36.tgz#62a505cb7f30a34d097386476794680a3f7385ff", - "@expo/json-file@8.2.37": "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.37.tgz#9c02d3b42134907c69cc0a027b18671b69344049", - "@expo/json-file@^8.2.35": "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.37.tgz#9c02d3b42134907c69cc0a027b18671b69344049", - "@expo/metro-config@0.3.18": "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.3.18.tgz#72705b3a0a3fb863b1a068f2b5f4cb43828cb26b", - "@expo/metro-config@~0.5.0": "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.5.2.tgz#9474454dcf8c2e3d66231f36f8bbbae5e9e0c3dc", - "@expo/metro-config@~0.5.1": "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.5.2.tgz#9474454dcf8c2e3d66231f36f8bbbae5e9e0c3dc", - "@expo/osascript@2.0.33": "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.0.33.tgz#e9dcc8da54466c11939074aa71a006024ea884b1", - "@expo/osascript@^2.0.31": "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.0.33.tgz#e9dcc8da54466c11939074aa71a006024ea884b1", - "@expo/package-manager@0.0.56": "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-0.0.56.tgz#214a8db48752cde968827c20c5b54a88187b5422", - "@expo/package-manager@~0.0.53": "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-0.0.57.tgz#1cd71da0632c52a9a001b45e5d0d7e1e16de97d3", - "@expo/plist@0.0.18": "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.18.tgz#9abcde78df703a88f6d9fa1a557ee2f045d178b0", - "@expo/plist@0.0.20": "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.20.tgz#a6b3124438031c02b762bad5a47b70584d3c0072", - "@expo/plist@^0.0.18": "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.18.tgz#9abcde78df703a88f6d9fa1a557ee2f045d178b0", - "@expo/prebuild-config@4.0.3": "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-4.0.3.tgz#35b9065d733ff1949b9b2f891633323948707ea6", - "@expo/prebuild-config@5.0.7": "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz#4658b66126c4d32c7b6302571e458a71811b07aa", - "@expo/rudder-sdk-node@1.1.1": "https://registry.yarnpkg.com/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz#6aa575f346833eb6290282118766d4919c808c6a", - "@expo/schemer@1.4.4": "https://registry.yarnpkg.com/@expo/schemer/-/schemer-1.4.4.tgz#f47a2418b6bb3f02044ec2a04f82357c723597b7", - "@expo/sdk-runtime-versions@^1.0.0": "https://registry.yarnpkg.com/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz#d7ebd21b19f1c6b0395e50d78da4416941c57f7c", - "@expo/spawn-async@1.5.0": "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.5.0.tgz#799827edd8c10ef07eb1a2ff9dcfe081d596a395", - "@expo/spawn-async@^1.5.0": "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.0.tgz#3ab6082b24318cccc4e73b13464da91325555500", - "@expo/vector-icons@^13.0.0": "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-13.0.0.tgz#e2989b85e95a82bce216f88cf8fb583ab050ec95", - "@expo/webpack-config@0.17.4": "https://registry.yarnpkg.com/@expo/webpack-config/-/webpack-config-0.17.4.tgz#c2cb670a8f431dc76a645d183a38465ed235e3a7", - "@expo/xcpretty@^4.1.0": "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.2.2.tgz#7890f86b017015be8a20242ae74fe6ed4b80a92c", - "@expo/xcpretty@^4.2.1": "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.2.2.tgz#7890f86b017015be8a20242ae74fe6ed4b80a92c", - "@gar/promisify@^1.0.1": "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6", - "@graphql-typed-document-node/core@^3.1.0": "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052", - "@hapi/hoek@^9.0.0": "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb", - "@hapi/topo@^5.0.0": "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012", - "@jest/create-cache-key-function@^29.0.3": "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.4.0.tgz#f90999474d13c85ee2c7c3f1e3015f2b65380f59", - "@jest/schemas@^29.4.0": "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.0.tgz#0d6ad358f295cc1deca0b643e6b4c86ebd539f17", - "@jest/types@^26.6.2": "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e", - "@jest/types@^27.5.1": "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80", - "@jest/types@^29.4.0": "https://registry.yarnpkg.com/@jest/types/-/types-29.4.0.tgz#569115f2438cacf3cff92521c7d624fbb683de3d", - "@jridgewell/gen-mapping@^0.1.0": "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996", - "@jridgewell/gen-mapping@^0.3.2": "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9", - "@jridgewell/resolve-uri@3.1.0": "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78", - "@jridgewell/set-array@^1.0.0": "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72", - "@jridgewell/set-array@^1.0.1": "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72", - "@jridgewell/sourcemap-codec@1.4.14": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24", - "@jridgewell/sourcemap-codec@^1.4.10": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24", - "@jridgewell/trace-mapping@^0.3.9": "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985", - "@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5", - "@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b", - "@nodelib/fs.stat@^2.0.2": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b", - "@nodelib/fs.walk@^1.2.3": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a", - "@npmcli/fs@^1.0.0": "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257", - "@npmcli/move-file@^1.0.1": "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674", - "@react-native-community/cli-clean@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz#198c5dd39c432efb5374582073065ff75d67d018", - "@react-native-community/cli-config@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-9.2.1.tgz#54eb026d53621ccf3a9df8b189ac24f6e56b8750", - "@react-native-community/cli-debugger-ui@^9.0.0": "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz#ea5c5dad6008bccd840d858e160d42bb2ced8793", - "@react-native-community/cli-doctor@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz#8817a3fd564453467def5b5bc8aecdc4205eff50", - "@react-native-community/cli-hermes@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz#569d27c1effd684ba451ad4614e29a99228cec49", - "@react-native-community/cli-platform-android@9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz#cd73cb6bbaeb478cafbed10bd12dfc01b484d488", - "@react-native-community/cli-platform-android@^9.3.1": "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz#378cd72249653cc74672094400657139f21bafb8", - "@react-native-community/cli-platform-ios@9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz#d90740472216ffae5527dfc5f49063ede18a621f", - "@react-native-community/cli-platform-ios@^9.3.0": "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz#45abde2a395fddd7cf71e8b746c1dc1ee2260f9a", - "@react-native-community/cli-plugin-metro@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz#0ec207e78338e0cc0a3cbe1b43059c24afc66158", - "@react-native-community/cli-server-api@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz#41ac5916b21d324bccef447f75600c03b2f54fbe", - "@react-native-community/cli-tools@^9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz#c332324b1ea99f9efdc3643649bce968aa98191c", - "@react-native-community/cli-types@^9.1.0": "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-9.1.0.tgz#dcd6a0022f62790fe1f67417f4690db938746aab", - "@react-native-community/cli@9.2.1": "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-9.2.1.tgz#15cc32531fc323d4232d57b1f2d7c571816305ac", - "@react-native/assets@1.0.0": "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e", - "@react-native/normalize-color@2.0.0": "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567", - "@react-native/normalize-color@^2.0.0": "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91", - "@react-native/polyfills@2.0.0": "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa", - "@segment/loosely-validate-event@^2.0.0": "https://registry.yarnpkg.com/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz#87dfc979e5b4e7b82c5f1d8b722dfd5d77644681", - "@sideway/address@^4.1.3": "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0", - "@sideway/formula@^3.0.0": "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f", - "@sideway/pinpoint@^2.0.0": "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df", - "@sinclair/typebox@^0.25.16": "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.21.tgz#763b05a4b472c93a8db29b2c3e359d55b29ce272", - "@sindresorhus/is@^0.14.0": "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea", - "@sindresorhus/is@^4.0.0": "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f", - "@szmarczak/http-timer@^1.1.2": "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421", - "@szmarczak/http-timer@^4.0.5": "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807", - "@types/cacheable-request@^6.0.1": "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183", - "@types/glob@^7.1.1": "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb", - "@types/html-minifier-terser@^5.0.0": "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57", - "@types/http-cache-semantics@*": "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812", - "@types/istanbul-lib-coverage@*": "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44", - "@types/istanbul-lib-coverage@^2.0.0": "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44", - "@types/istanbul-lib-report@*": "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686", - "@types/istanbul-reports@^3.0.0": "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff", - "@types/json-schema@^7.0.5": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3", - "@types/json-schema@^7.0.8": "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3", - "@types/keyv@^3.1.4": "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6", - "@types/minimatch@*": "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca", - "@types/node@*": "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f", - "@types/prop-types@*": "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf", - "@types/q@^1.5.1": "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df", - "@types/react-native@~0.70.6": "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.70.9.tgz#7d9d11960a4ab78c874e77af895f83d2817aac96", - "@types/react@*": "https://registry.yarnpkg.com/@types/react/-/react-18.0.27.tgz#d9425abe187a00f8a5ec182b010d4fd9da703b71", - "@types/react@~18.0.14": "https://registry.yarnpkg.com/@types/react/-/react-18.0.27.tgz#d9425abe187a00f8a5ec182b010d4fd9da703b71", - "@types/responselike@^1.0.0": "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29", - "@types/retry@^0.12.0": "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a", - "@types/scheduler@*": "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39", - "@types/source-list-map@*": "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9", - "@types/tapable@^1": "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310", - "@types/tapable@^1.0.5": "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310", - "@types/uglify-js@*": "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5", - "@types/webpack-sources@*": "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b", - "@types/webpack@^4.4.31": "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc", - "@types/webpack@^4.41.8": "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc", - "@types/yargs-parser@*": "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b", - "@types/yargs@^15.0.0": "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158", - "@types/yargs@^16.0.0": "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3", - "@types/yargs@^17.0.8": "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.20.tgz#107f0fcc13bd4a524e352b41c49fe88aab5c54d5", - "@urql/core@2.3.6": "https://registry.yarnpkg.com/@urql/core/-/core-2.3.6.tgz#ee0a6f8fde02251e9560c5f17dce5cd90f948552", - "@urql/core@>=2.3.1": "https://registry.yarnpkg.com/@urql/core/-/core-3.1.1.tgz#a49cd572360d01f2469a786b294fba2269a65e53", - "@urql/exchange-retry@0.3.0": "https://registry.yarnpkg.com/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz#13252108b5a111aab45f9982f4db18d1a286e423", - "@webassemblyjs/ast@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964", - "@webassemblyjs/floating-point-hex-parser@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4", - "@webassemblyjs/helper-api-error@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2", - "@webassemblyjs/helper-buffer@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00", - "@webassemblyjs/helper-code-frame@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27", - "@webassemblyjs/helper-fsm@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8", - "@webassemblyjs/helper-module-context@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07", - "@webassemblyjs/helper-wasm-bytecode@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790", - "@webassemblyjs/helper-wasm-section@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346", - "@webassemblyjs/ieee754@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4", - "@webassemblyjs/leb128@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95", - "@webassemblyjs/utf8@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab", - "@webassemblyjs/wasm-edit@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf", - "@webassemblyjs/wasm-gen@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c", - "@webassemblyjs/wasm-opt@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61", - "@webassemblyjs/wasm-parser@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e", - "@webassemblyjs/wast-parser@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914", - "@webassemblyjs/wast-printer@1.9.0": "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899", - "@xmldom/xmldom@~0.7.0": "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.9.tgz#7f9278a50e737920e21b297b8a35286e9942c056", - "@xmldom/xmldom@~0.7.7": "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.9.tgz#7f9278a50e737920e21b297b8a35286e9942c056", - "@xtuc/ieee754@^1.2.0": "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790", - "@xtuc/long@4.2.2": "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d", - "abort-controller@^3.0.0": "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392", - "absolute-path@^0.0.0": "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7", - "accepts@^1.3.7": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", - "accepts@^1.3.8": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", - "accepts@~1.3.4": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", - "accepts@~1.3.5": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", - "accepts@~1.3.7": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", - "accepts@~1.3.8": "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e", - "acorn@^6.4.1": "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6", - "address@1.1.2": "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6", - "address@^1.0.1": "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e", - "agent-base@6": "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77", - "aggregate-error@^3.0.0": "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a", - "ajv-errors@^1.0.0": "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d", - "ajv-formats@^2.0.2": "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520", - "ajv-keywords@^3.1.0": "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d", - "ajv-keywords@^3.4.1": "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d", - "ajv-keywords@^3.5.2": "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d", - "ajv@^6.1.0": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", - "ajv@^6.10.2": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", - "ajv@^6.12.4": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", - "ajv@^6.12.5": "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4", - "ajv@^8.0.0": "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1", - "ajv@^8.1.0": "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1", - "alphanum-sort@^1.0.0": "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3", - "anser@^1.4.9": "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b", - "ansi-align@^3.0.0": "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59", - "ansi-colors@^3.0.0": "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf", - "ansi-escapes@^3.1.0": "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b", - "ansi-escapes@^4.2.1": "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e", - "ansi-fragments@^0.2.1": "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e", - "ansi-html@0.0.7": "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e", - "ansi-regex@^2.0.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df", - "ansi-regex@^4.1.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed", - "ansi-regex@^5.0.0": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304", - "ansi-regex@^5.0.1": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304", - "ansi-styles@^3.2.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d", - "ansi-styles@^3.2.1": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d", - "ansi-styles@^4.0.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", - "ansi-styles@^4.1.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", - "any-promise@^1.0.0": "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f", - "anymatch@^2.0.0": "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb", - "anymatch@^3.0.0": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e", - "anymatch@^3.0.3": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e", - "anymatch@~3.1.2": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e", - "appdirsjs@^1.2.4": "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3", - "application-config-path@^0.1.0": "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.1.tgz#8b5ac64ff6afdd9bd70ce69f6f64b6998f5f756e", - "aproba@^1.1.1": "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a", - "arg@4.1.0": "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0", - "argparse@^1.0.7": "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911", - "argparse@^2.0.1": "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38", - "arr-diff@^4.0.0": "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520", - "arr-flatten@^1.1.0": "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1", - "arr-union@^3.1.0": "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4", - "array-flatten@1.1.1": "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2", - "array-flatten@^2.1.0": "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099", - "array-union@^1.0.1": "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39", - "array-union@^2.1.0": "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d", - "array-uniq@^1.0.1": "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6", - "array-unique@^0.3.2": "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428", - "array.prototype.reduce@^1.0.5": "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac", - "arrify@^2.0.1": "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa", - "asap@~2.0.3": "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46", - "asap@~2.0.6": "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46", - "asn1.js@^5.2.0": "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07", - "assert@^1.1.1": "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb", - "assign-symbols@^1.0.0": "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367", - "ast-types@0.14.2": "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd", - "astral-regex@^1.0.0": "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9", - "async-each@^1.0.1": "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf", - "async-limiter@~1.0.0": "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd", - "async@^2.6.4": "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221", - "async@^3.2.2": "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c", - "async@~1.5": "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a", - "asynckit@^0.4.0": "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79", - "at-least-node@^1.0.0": "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2", - "atob@^2.1.2": "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9", - "available-typed-arrays@^1.0.5": "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7", - "axios@0.21.1": "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8", - "babel-core@^7.0.0-bridge.0": "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece", - "babel-loader@8.1.0": "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3", - "babel-plugin-module-resolver@^4.1.0": "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2", - "babel-plugin-polyfill-corejs2@^0.3.3": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122", - "babel-plugin-polyfill-corejs3@^0.6.0": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a", - "babel-plugin-polyfill-regenerator@^0.4.1": "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747", - "babel-plugin-react-native-web@~0.18.2": "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.11.tgz#e53f6f3ba1f663fe325cb7bec817fd8d7c2d710d", - "babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0": "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf", - "babel-preset-expo@~9.2.2": "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz#3f3819a224bbc32cefebb5d97a40c950a2f7ae2e", - "babel-preset-fbjs@^3.4.0": "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c", - "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee", - "base64-js@^1.0.2": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "base64-js@^1.1.2": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "base64-js@^1.2.3": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "base64-js@^1.3.1": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "base64-js@^1.5.1": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "base@^0.11.1": "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f", - "batch@0.6.1": "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16", - "better-opn@^3.0.1": "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817", - "better-opn@~3.0.2": "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817", - "big-integer@1.6.x": "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686", - "big-integer@^1.6.44": "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686", - "big.js@^5.2.2": "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328", - "binary-extensions@^1.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65", - "binary-extensions@^2.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d", - "bindings@^1.5.0": "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df", - "bl@^4.1.0": "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a", - "bluebird@^3.5.5": "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f", - "blueimp-md5@^2.10.0": "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0", - "bn.js@^4.0.0": "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88", - "bn.js@^4.1.0": "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88", - "bn.js@^4.11.9": "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88", - "bn.js@^5.0.0": "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70", - "bn.js@^5.1.1": "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70", - "body-parser@1.18.3": "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4", - "body-parser@1.19.0": "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a", - "body-parser@1.20.1": "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668", - "body-parser@^1.20.1": "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668", - "bonjour@^3.5.0": "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5", - "boolbase@^1.0.0": "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e", - "boolbase@~1.0.0": "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e", - "boxen@^5.0.1": "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50", - "bplist-creator@0.1.0": "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e", - "bplist-parser@0.2.0": "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e", - "bplist-parser@0.3.1": "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1", - "bplist-parser@^0.3.0": "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.2.tgz#3ac79d67ec52c4c107893e0237eb787cbacbced7", - "bplist-parser@^0.3.1": "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.2.tgz#3ac79d67ec52c4c107893e0237eb787cbacbced7", - "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", - "braces@^2.3.1": "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729", - "braces@^2.3.2": "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729", - "braces@^3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107", - "braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107", - "brorand@^1.0.1": "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f", - "brorand@^1.1.0": "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f", - "browserify-aes@^1.0.0": "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48", - "browserify-aes@^1.0.4": "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48", - "browserify-cipher@^1.0.0": "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0", - "browserify-des@^1.0.0": "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c", - "browserify-rsa@^4.0.0": "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d", - "browserify-rsa@^4.0.1": "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d", - "browserify-sign@^4.0.0": "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3", - "browserify-zlib@^0.2.0": "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f", - "browserslist@4.14.2": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce", - "browserslist@^4.0.0": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987", - "browserslist@^4.21.3": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987", - "browserslist@^4.21.4": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987", - "bser@2.1.1": "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05", - "buffer-alloc-unsafe@^1.1.0": "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0", - "buffer-alloc@^1.1.0": "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec", - "buffer-fill@^1.0.0": "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c", - "buffer-from@^1.0.0": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5", - "buffer-indexof@^1.0.0": "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c", - "buffer-xor@^1.0.3": "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9", - "buffer@^4.3.0": "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8", - "buffer@^5.5.0": "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0", - "builtin-status-codes@^3.0.0": "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8", - "builtins@^1.0.3": "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88", - "bytes@3.0.0": "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048", - "bytes@3.1.0": "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6", - "bytes@3.1.2": "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5", - "cacache@^12.0.2": "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c", - "cacache@^15.0.5": "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb", - "cacache@^15.3.0": "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb", - "cache-base@^1.0.1": "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2", - "cacheable-lookup@^5.0.3": "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005", - "cacheable-request@^6.0.0": "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912", - "cacheable-request@^7.0.2": "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27", - "call-bind@^1.0.0": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c", - "call-bind@^1.0.2": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c", - "caller-callsite@^2.0.0": "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134", - "caller-path@^2.0.0": "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4", - "callsite@^1.0.0": "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20", - "callsites@^2.0.0": "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50", - "camel-case@^4.1.1": "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a", - "camelcase@^5.0.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320", - "camelcase@^5.3.1": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320", - "camelcase@^6.0.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a", - "camelcase@^6.2.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a", - "caniuse-api@^3.0.0": "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0", - "caniuse-lite@^1.0.0": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz#ca7550b1587c92a392a2b377cd9c508b3b4395bf", - "caniuse-lite@^1.0.30001125": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz#ca7550b1587c92a392a2b377cd9c508b3b4395bf", - "caniuse-lite@^1.0.30001400": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz#ef1f39ae38d839d7176713735a8e467a0a2523bd", - "chalk@2.4.2": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", - "chalk@^2.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", - "chalk@^2.0.1": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", - "chalk@^2.4.1": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", - "chalk@^2.4.2": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424", - "chalk@^4.0.0": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", - "chalk@^4.1.0": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", - "chalk@^4.1.2": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01", - "charenc@0.0.2": "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667", - "charenc@~0.0.1": "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667", - "chokidar@^2.1.8": "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917", - "chokidar@^3.4.1": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd", - "chownr@^1.1.1": "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b", - "chownr@^2.0.0": "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece", - "chrome-trace-event@^1.0.2": "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac", - "ci-info@^2.0.0": "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46", - "ci-info@^3.2.0": "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f", - "ci-info@^3.3.0": "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f", - "cipher-base@^1.0.0": "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de", - "cipher-base@^1.0.1": "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de", - "cipher-base@^1.0.3": "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de", - "class-utils@^0.3.5": "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463", - "clean-css@^4.2.3": "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178", - "clean-stack@^2.0.0": "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b", - "clean-webpack-plugin@^3.0.0": "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b", - "cli-boxes@^2.2.1": "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f", - "cli-cursor@^2.1.0": "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5", - "cli-cursor@^3.1.0": "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307", - "cli-spinners@^2.0.0": "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a", - "cli-spinners@^2.5.0": "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a", - "cli-table3@^0.6.0": "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2", - "cliui@^5.0.0": "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5", - "cliui@^6.0.0": "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1", - "clone-deep@^4.0.1": "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387", - "clone-response@^1.0.2": "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3", - "clone@^1.0.2": "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e", - "clone@^2.1.2": "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f", - "coa@^2.0.2": "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3", - "collection-visit@^1.0.0": "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0", - "color-convert@^1.9.0": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8", - "color-convert@^1.9.3": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8", - "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3", - "color-name@1.1.3": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25", - "color-name@^1.0.0": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", - "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", - "color-string@^1.6.0": "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4", - "color@^3.0.0": "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164", - "colorette@^1.0.7": "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40", - "combined-stream@^1.0.6": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f", - "combined-stream@^1.0.8": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f", - "command-exists@^1.2.4": "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69", - "command-exists@^1.2.8": "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69", - "commander@2.17.1": "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf", - "commander@2.20.0": "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422", - "commander@^2.20.0": "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33", - "commander@^4.0.0": "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068", - "commander@^4.1.1": "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068", - "commander@^7.2.0": "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7", - "commander@^9.4.0": "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30", - "commander@~2.13.0": "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c", - "commondir@^1.0.1": "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b", - "compare-versions@^3.4.0": "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62", - "component-emitter@^1.2.1": "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0", - "component-type@^1.2.1": "https://registry.yarnpkg.com/component-type/-/component-type-1.2.1.tgz#8a47901700238e4fc32269771230226f24b415a9", - "compressible@~2.0.16": "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba", - "compression@^1.7.1": "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f", - "compression@^1.7.4": "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f", - "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "concat-stream@1.6.2": "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34", - "concat-stream@^1.5.0": "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34", - "connect-history-api-fallback@^1.6.0": "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc", - "connect@^3.6.5": "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8", - "connect@^3.7.0": "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8", - "console-browserify@^1.1.0": "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336", - "constants-browserify@^1.0.0": "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75", - "content-disposition@0.5.2": "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4", - "content-disposition@0.5.4": "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe", - "content-type@~1.0.4": "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b", - "convert-source-map@^1.7.0": "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f", - "cookie-signature@1.0.6": "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c", - "cookie@0.3.1": "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb", - "cookie@0.5.0": "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b", - "copy-concurrently@^1.0.0": "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0", - "copy-descriptor@^0.1.0": "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d", - "copy-webpack-plugin@~6.0.3": "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.4.tgz#7b7d7f7f290aa21b3411d02525859b89988a200b", - "core-js-compat@^3.25.1": "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.27.2.tgz#607c50ad6db8fd8326af0b2883ebb987be3786da", - "core-util-is@~1.0.0": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85", - "cosmiconfig@^5.0.0": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a", - "cosmiconfig@^5.0.5": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a", - "cosmiconfig@^5.1.0": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a", - "create-ecdh@^4.0.0": "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e", - "create-hash@^1.1.0": "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196", - "create-hash@^1.1.2": "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196", - "create-hash@^1.2.0": "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196", - "create-hmac@^1.1.0": "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff", - "create-hmac@^1.1.4": "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff", - "create-hmac@^1.1.7": "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff", - "create-react-class@^15.7.0": "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e", - "cross-fetch@^3.1.5": "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f", - "cross-spawn@7.0.3": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6", - "cross-spawn@^6.0.0": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4", - "cross-spawn@^6.0.5": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4", - "cross-spawn@^7.0.3": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6", - "crypt@0.0.2": "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b", - "crypt@~0.0.1": "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b", - "crypto-browserify@^3.11.0": "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec", - "crypto-random-string@^1.0.0": "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e", - "crypto-random-string@^2.0.0": "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5", - "css-color-names@0.0.4": "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0", - "css-color-names@^0.0.4": "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0", - "css-declaration-sorter@^4.0.1": "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22", - "css-in-js-utils@^3.1.0": "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb", - "css-loader@~3.6.0": "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645", - "css-select-base-adapter@^0.1.1": "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7", - "css-select@^2.0.0": "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef", - "css-select@^4.1.3": "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b", - "css-tree@1.0.0-alpha.37": "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22", - "css-tree@^1.1.2": "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d", - "css-what@^3.2.1": "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4", - "css-what@^6.0.1": "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4", - "cssesc@^3.0.0": "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee", - "cssnano-preset-default@^4.0.8": "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff", - "cssnano-util-get-arguments@^4.0.0": "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f", - "cssnano-util-get-match@^4.0.0": "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d", - "cssnano-util-raw-cache@^4.0.1": "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282", - "cssnano-util-same-parent@^4.0.0": "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3", - "cssnano@^4.1.10": "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99", - "csso@^4.0.2": "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529", - "csstype@^3.0.2": "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9", - "cyclist@^1.0.1": "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9", - "dag-map@~1.0.0": "https://registry.yarnpkg.com/dag-map/-/dag-map-1.0.2.tgz#e8379f041000ed561fc515475c1ed2c85eece8d7", - "dateformat@3.0.3": "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae", - "dayjs@^1.8.15": "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2", - "debug@2": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", - "debug@2.6.9": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", - "debug@4": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", - "debug@^2.2.0": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", - "debug@^2.3.3": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", - "debug@^2.6.0": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f", - "debug@^3.1.0": "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a", - "debug@^3.2.5": "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a", - "debug@^3.2.6": "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a", - "debug@^3.2.7": "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a", - "debug@^4.1.0": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", - "debug@^4.1.1": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", - "debug@^4.3.1": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", - "debug@^4.3.2": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", - "debug@^4.3.4": "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865", - "decache@4.4.0": "https://registry.yarnpkg.com/decache/-/decache-4.4.0.tgz#6f6df6b85d7e7c4410a932ffc26489b78e9acd13", - "decamelize@^1.2.0": "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290", - "decode-uri-component@^0.2.0": "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9", - "decompress-response@^3.3.0": "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3", - "decompress-response@^6.0.0": "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc", - "deep-equal@^1.0.1": "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a", - "deep-extend@^0.6.0": "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac", - "deepmerge@^3.2.0": "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7", - "deepmerge@^4.0.0": "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955", - "default-gateway@^4.2.0": "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b", - "defaults@^1.0.3": "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a", - "defer-to-connect@^1.0.1": "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591", - "defer-to-connect@^2.0.0": "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587", - "define-lazy-prop@^2.0.0": "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f", - "define-properties@^1.1.2": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1", - "define-properties@^1.1.3": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1", - "define-properties@^1.1.4": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1", - "define-property@^0.2.5": "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116", - "define-property@^1.0.0": "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6", - "define-property@^2.0.2": "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d", - "del@^4.1.1": "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4", - "del@^6.0.0": "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a", - "delayed-stream@~1.0.0": "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619", - "denodeify@^1.2.1": "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631", - "depd@2.0.0": "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df", - "depd@~1.1.2": "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9", - "des.js@^1.0.0": "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843", - "destroy@1.2.0": "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015", - "destroy@~1.0.4": "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80", - "detect-node@^2.0.4": "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1", - "detect-port-alt@1.1.6": "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275", - "diffie-hellman@^5.0.0": "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875", - "dir-glob@^3.0.1": "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f", - "dns-equal@^1.0.0": "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d", - "dns-packet@^1.3.1": "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f", - "dns-txt@^2.0.2": "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6", - "dom-converter@^0.2.0": "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768", - "dom-serializer@0": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51", - "dom-serializer@^1.0.1": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30", - "domain-browser@^1.1.1": "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda", - "domelementtype@1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f", - "domelementtype@^2.0.1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d", - "domelementtype@^2.2.0": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d", - "domhandler@^3.0.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a", - "domhandler@^4.0.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c", - "domhandler@^4.2.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c", - "domhandler@^4.3.1": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c", - "domino@^2.1.6": "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe", - "domutils@^1.7.0": "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a", - "domutils@^2.0.0": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135", - "domutils@^2.5.2": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135", - "domutils@^2.8.0": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135", - "dot-case@^3.0.4": "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751", - "dot-prop@^5.2.0": "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88", - "duplexer3@^0.1.4": "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e", - "duplexer@^0.1.1": "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6", - "duplexify@^3.4.2": "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309", - "duplexify@^3.6.0": "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309", - "ee-first@1.1.1": "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d", - "electron-to-chromium@^1.3.564": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592", - "electron-to-chromium@^1.4.251": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592", - "elliptic@^6.5.3": "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb", - "emoji-regex@^7.0.1": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156", - "emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37", - "emojis-list@^3.0.0": "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78", - "encodeurl@~1.0.2": "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59", - "end-of-stream@^1.0.0": "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0", - "end-of-stream@^1.1.0": "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0", - "enhanced-resolve@^4.1.0": "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec", - "entities@^2.0.0": "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55", - "env-editor@^0.4.1": "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861", - "envinfo@^7.7.2": "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475", - "eol@^0.9.1": "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd", - "errno@^0.1.3": "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f", - "errno@~0.1.7": "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f", - "error-ex@^1.3.1": "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf", - "error-stack-parser@^2.0.6": "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286", - "errorhandler@^1.5.0": "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91", - "es-abstract@^1.17.2": "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6", - "es-abstract@^1.19.0": "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6", - "es-abstract@^1.20.4": "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6", - "es-array-method-boxes-properly@^1.0.0": "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e", - "es-set-tostringtag@^2.0.1": "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8", - "es-to-primitive@^1.2.1": "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a", - "escalade@^3.0.2": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40", - "escalade@^3.1.1": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40", - "escape-html@~1.0.3": "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988", - "escape-string-regexp@2.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344", - "escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", - "eslint-scope@^4.0.3": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848", - "esprima@^4.0.0": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71", - "esprima@~4.0.0": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71", - "esrecurse@^4.1.0": "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921", - "estraverse@^4.1.1": "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d", - "estraverse@^5.2.0": "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123", - "esutils@^2.0.2": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64", - "etag@~1.8.1": "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887", - "event-target-shim@^5.0.0": "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789", - "event-target-shim@^5.0.1": "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789", - "eventemitter3@^4.0.0": "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f", - "events@^3.0.0": "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400", - "eventsource@^1.0.7": "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.2.tgz#bc75ae1c60209e7cb1541231980460343eaea7c2", - "evp_bytestokey@^1.0.0": "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02", - "evp_bytestokey@^1.0.3": "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02", - "exec-async@^2.2.0": "https://registry.yarnpkg.com/exec-async/-/exec-async-2.2.0.tgz#c7c5ad2eef3478d38390c6dd3acfe8af0efc8301", - "execa@^1.0.0": "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8", - "expand-brackets@^2.1.4": "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622", - "expo-application@~5.0.1": "https://registry.yarnpkg.com/expo-application/-/expo-application-5.0.1.tgz#628aeee74697d7aa39d0c0173dbf9383e06e53e9", - "expo-asset@~8.7.0": "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.7.0.tgz#325804e0bb21dac1e83b1e8d937d9a9257dae4a0", - "expo-cli@^6.1.0": "https://registry.yarnpkg.com/expo-cli/-/expo-cli-6.1.0.tgz#e24ef3cd39c8d5123127fecad6f7145e5fd72f53", - "expo-constants@~14.0.0": "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.0.2.tgz#2cb1dec8f41a64c2fc5b4eecaf77d7661cad01cc", - "expo-constants@~14.0.2": "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.0.2.tgz#2cb1dec8f41a64c2fc5b4eecaf77d7661cad01cc", - "expo-error-recovery@~4.0.1": "https://registry.yarnpkg.com/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz#3e3333e134c992c234539d3773fe78915c883755", - "expo-file-system@~15.1.0": "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.1.1.tgz#724090f83ff1e6378cadc0a64b83552f769eb16b", - "expo-file-system@~15.1.1": "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.1.1.tgz#724090f83ff1e6378cadc0a64b83552f769eb16b", - "expo-font@~11.0.1": "https://registry.yarnpkg.com/expo-font/-/expo-font-11.0.1.tgz#0758ce4e505995d0193a33e3c4325b35bf1fb7f7", - "expo-keep-awake@~11.0.1": "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz#ee354465892a94040ffe09901b85b469e7d54fb3", - "expo-modules-autolinking@0.8.1": "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz#533c38192847d2272e9af986f8f4c58aae6dfff3", - "expo-modules-autolinking@1.0.2": "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz#f072f342ab797e43b16ddcdef251fcd4db851e1a", - "expo-modules-core@1.1.1": "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.1.1.tgz#06502379274bdcb356fcbe225c3c6bc4926e462c", - "expo-pwa@0.0.124": "https://registry.yarnpkg.com/expo-pwa/-/expo-pwa-0.0.124.tgz#684e68aea6c7f95864a8cde17a57e223ed017199", - "expo-status-bar@~1.4.2": "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.4.2.tgz#14f2b9a6dc7d550578421f07e0046f5fafc2b403", - "expo@~47.0.12": "https://registry.yarnpkg.com/expo/-/expo-47.0.13.tgz#f53f82e7f9e209f8a8b25f2493f58439958368cb", - "express@4.16.4": "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e", - "express@^4.17.1": "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59", - "extend-shallow@^2.0.1": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f", - "extend-shallow@^3.0.0": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8", - "extend-shallow@^3.0.2": "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8", - "extglob@^2.0.4": "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543", - "fast-deep-equal@^3.1.1": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", - "fast-glob@^3.1.1": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80", - "fast-glob@^3.2.4": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80", - "fast-glob@^3.2.5": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80", - "fast-glob@^3.2.9": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80", - "fast-json-stable-stringify@^2.0.0": "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633", - "fast-loops@^1.1.3": "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75", - "fastq@^1.6.0": "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a", - "faye-websocket@^0.10.0": "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4", - "faye-websocket@~0.11.1": "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da", - "fb-watchman@^2.0.0": "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c", - "fbemitter@^3.0.0": "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3", - "fbjs-css-vars@^1.0.0": "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8", - "fbjs@^3.0.0": "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6", - "fbjs@^3.0.4": "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6", - "fetch-retry@^4.1.1": "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-4.1.1.tgz#fafe0bb22b54f4d0a9c788dff6dd7f8673ca63f3", - "figgy-pudding@^3.5.1": "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e", - "file-loader@~6.0.0": "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f", - "file-uri-to-path@1.0.0": "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd", - "filesize@6.1.0": "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00", - "fill-range@^4.0.0": "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7", - "fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40", - "finalhandler@1.1.1": "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105", - "finalhandler@1.1.2": "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d", - "finalhandler@1.2.0": "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32", - "find-babel-config@^1.2.0": "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2", - "find-cache-dir@^2.0.0": "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7", - "find-cache-dir@^2.1.0": "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7", - "find-cache-dir@^3.3.1": "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b", - "find-up@4.1.0": "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19", - "find-up@^3.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73", - "find-up@^4.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19", - "find-up@^4.1.0": "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19", - "find-up@^5.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc", - "find-up@~5.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc", - "find-yarn-workspace-root@~2.0.0": "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd", - "flow-parser@0.*": "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.198.1.tgz#56a77de3637c0f39284d4a112868f0cbfaa72012", - "flow-parser@^0.121.0": "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f", - "flush-write-stream@^1.0.0": "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8", - "follow-redirects@^1.0.0": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13", - "follow-redirects@^1.10.0": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13", - "fontfaceobserver@^2.1.0": "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz#5fb392116e75d5024b7ec8e4f2ce92106d1488c8", - "for-each@^0.3.3": "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e", - "for-in@^1.0.2": "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80", - "fork-ts-checker-webpack-plugin@4.1.6": "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5", - "form-data@^2.3.2": "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4", - "form-data@^3.0.1": "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f", - "forwarded@0.2.0": "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811", - "fragment-cache@^0.2.1": "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19", - "freeport-async@2.0.0": "https://registry.yarnpkg.com/freeport-async/-/freeport-async-2.0.0.tgz#6adf2ec0c629d11abff92836acd04b399135bab4", - "fresh@0.5.2": "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7", - "from2@^2.1.0": "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af", - "fs-extra@9.0.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3", - "fs-extra@^1.0.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950", - "fs-extra@^7.0.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9", - "fs-extra@^8.1.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0", - "fs-extra@^9.0.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d", - "fs-extra@^9.1.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d", - "fs-extra@~8.1.0": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0", - "fs-minipass@^2.0.0": "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb", - "fs-write-stream-atomic@^1.0.8": "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9", - "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", - "fsevents@^1.2.7": "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38", - "fsevents@^2.1.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a", - "fsevents@~2.3.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a", - "function-bind@^1.1.1": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d", - "function.prototype.name@^1.1.5": "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621", - "functions-have-names@^1.2.2": "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834", - "gensync@^1.0.0-beta.1": "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0", - "gensync@^1.0.0-beta.2": "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0", - "get-caller-file@^2.0.1": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e", - "get-intrinsic@^1.0.2": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", - "get-intrinsic@^1.1.1": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", - "get-intrinsic@^1.1.3": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f", - "get-port@^3.2.0": "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc", - "get-stream@^4.0.0": "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5", - "get-stream@^4.1.0": "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5", - "get-stream@^5.1.0": "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3", - "get-symbol-description@^1.0.0": "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6", - "get-value@^2.0.3": "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28", - "get-value@^2.0.6": "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28", - "getenv@^1.0.0": "https://registry.yarnpkg.com/getenv/-/getenv-1.0.0.tgz#874f2e7544fbca53c7a4738f37de8605c3fcfc31", - "glob-parent@^3.1.0": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae", - "glob-parent@^5.1.1": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4", - "glob-parent@^5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4", - "glob-parent@~5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4", - "glob@7.1.6": "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6", - "glob@^6.0.1": "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22", - "glob@^7.0.3": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", - "glob@^7.1.2": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", - "glob@^7.1.3": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", - "glob@^7.1.4": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", - "glob@^7.1.6": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b", - "global-modules@2.0.0": "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780", - "global-prefix@^3.0.0": "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97", - "globals@^11.1.0": "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e", - "globalthis@^1.0.3": "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf", - "globby@11.0.1": "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357", - "globby@^11.0.1": "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b", - "globby@^6.1.0": "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c", - "gopd@^1.0.1": "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c", - "got@^11.1.4": "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a", - "got@^9.6.0": "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85", - "graceful-fs@^4.1.11": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.1.15": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.1.2": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.1.3": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.1.6": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.1.9": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.2.0": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.2.4": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graceful-fs@^4.2.9": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c", - "graphql-tag@^2.10.1": "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1", - "graphql@15.8.0": "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38", - "gzip-size@5.1.1": "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274", - "handle-thing@^2.0.0": "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e", - "has-bigints@^1.0.1": "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa", - "has-bigints@^1.0.2": "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa", - "has-flag@^3.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd", - "has-flag@^4.0.0": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b", - "has-property-descriptors@^1.0.0": "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861", - "has-proto@^1.0.1": "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0", - "has-symbols@^1.0.1": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8", - "has-symbols@^1.0.2": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8", - "has-symbols@^1.0.3": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8", - "has-tostringtag@^1.0.0": "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25", - "has-value@^0.3.1": "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f", - "has-value@^1.0.0": "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177", - "has-values@^0.1.4": "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771", - "has-values@^1.0.0": "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f", - "has@^1.0.0": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796", - "has@^1.0.3": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796", - "hasbin@1.2.3": "https://registry.yarnpkg.com/hasbin/-/hasbin-1.2.3.tgz#78c5926893c80215c2b568ae1fd3fcab7a2696b0", - "hash-base@^3.0.0": "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33", - "hash.js@^1.0.0": "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42", - "hash.js@^1.0.3": "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42", - "hashids@1.1.4": "https://registry.yarnpkg.com/hashids/-/hashids-1.1.4.tgz#e4ff92ad66b684a3bd6aace7c17d66618ee5fa21", - "he@1.2.0": "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f", - "he@^1.2.0": "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f", - "hermes-estree@0.8.0": "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.8.0.tgz#530be27243ca49f008381c1f3e8b18fb26bf9ec0", - "hermes-parser@0.8.0": "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.8.0.tgz#116dceaba32e45b16d6aefb5c4c830eaeba2d257", - "hermes-profile-transformer@^0.0.6": "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b", - "hex-color-regex@^1.1.0": "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e", - "hmac-drbg@^1.0.1": "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1", - "hosted-git-info@^2.6.0": "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9", - "hosted-git-info@^3.0.2": "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d", - "hpack.js@^2.1.6": "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2", - "hsl-regex@^1.0.0": "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e", - "hsla-regex@^1.0.0": "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38", - "html-entities@^1.3.1": "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc", - "html-loader@~1.1.0": "https://registry.yarnpkg.com/html-loader/-/html-loader-1.1.0.tgz#91915f4d274caa9d46d1c3dc847cd82bfc037dbd", - "html-minifier-terser@^5.0.1": "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054", - "html-minifier-terser@^5.0.5": "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054", - "html-webpack-plugin@~4.3.0": "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd", - "htmlparser2@^4.1.0": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78", - "htmlparser2@^6.1.0": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7", - "http-cache-semantics@^4.0.0": "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a", - "http-deceiver@^1.2.7": "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87", - "http-errors@1.6.3": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d", - "http-errors@1.7.2": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f", - "http-errors@2.0.0": "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3", - "http-errors@~1.6.2": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d", - "http-errors@~1.6.3": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d", - "http-parser-js@>=0.5.1": "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3", - "http-proxy-middleware@0.19.1": "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a", - "http-proxy@^1.17.0": "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549", - "http2-wrapper@^1.0.0-beta.5.2": "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d", - "https-browserify@^1.0.0": "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73", - "https-proxy-agent@^5.0.1": "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6", - "hyphenate-style-name@^1.0.3": "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d", - "iconv-lite@0.4.23": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63", - "iconv-lite@0.4.24": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b", - "iconv-lite@^0.4.4": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b", - "icss-utils@^4.0.0": "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467", - "icss-utils@^4.1.1": "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467", - "ieee754@^1.1.13": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352", - "ieee754@^1.1.4": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352", - "iferr@^0.1.5": "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501", - "ignore@^5.1.4": "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324", - "ignore@^5.2.0": "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324", - "image-size@^0.6.0": "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2", - "image-size@^1.0.0": "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486", - "immer@8.0.1": "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656", - "import-fresh@^2.0.0": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546", - "import-local@^2.0.0": "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d", - "imurmurhash@^0.1.4": "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea", - "indent-string@^4.0.0": "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251", - "indexes-of@^1.0.1": "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607", - "infer-owner@^1.0.3": "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467", - "infer-owner@^1.0.4": "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467", - "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", - "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "inherits@2.0.1": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "inherits@2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de", - "inherits@2.0.4": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "inherits@^2.0.1": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "inherits@^2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "inherits@^2.0.4": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "inherits@~2.0.1": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "inherits@~2.0.3": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "ini@^1.3.5": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c", - "ini@~1.3.0": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c", - "inline-style-prefixer@^6.0.1": "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44", - "internal-ip@4.3.0": "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907", - "internal-ip@^4.3.0": "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907", - "internal-slot@^1.0.4": "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3", - "invariant@^2.2.4": "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6", - "ip-regex@^2.1.0": "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9", - "ip@^1.1.0": "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48", - "ip@^1.1.5": "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48", - "ipaddr.js@1.9.1": "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3", - "ipaddr.js@^1.9.0": "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3", - "is-absolute-url@^2.0.0": "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6", - "is-absolute-url@^3.0.3": "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698", - "is-accessor-descriptor@^0.1.6": "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6", - "is-accessor-descriptor@^1.0.0": "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656", - "is-arguments@^1.0.4": "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b", - "is-array-buffer@^3.0.1": "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a", - "is-arrayish@^0.2.1": "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d", - "is-arrayish@^0.3.1": "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03", - "is-bigint@^1.0.1": "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3", - "is-binary-path@^1.0.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898", - "is-binary-path@~2.1.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09", - "is-boolean-object@^1.1.0": "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719", - "is-buffer@^1.1.5": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", - "is-buffer@~1.1.1": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", - "is-buffer@~1.1.6": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", - "is-callable@^1.1.3": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055", - "is-callable@^1.1.4": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055", - "is-callable@^1.2.7": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055", - "is-color-stop@^1.0.0": "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345", - "is-core-module@^2.9.0": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144", - "is-data-descriptor@^0.1.4": "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56", - "is-data-descriptor@^1.0.0": "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7", - "is-date-object@^1.0.1": "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f", - "is-descriptor@^0.1.0": "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca", - "is-descriptor@^1.0.0": "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec", - "is-descriptor@^1.0.2": "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec", - "is-directory@^0.3.1": "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1", - "is-docker@^2.0.0": "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa", - "is-docker@^2.1.1": "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa", - "is-extendable@^0.1.0": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89", - "is-extendable@^0.1.1": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89", - "is-extendable@^1.0.1": "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4", - "is-extglob@^1.0.0": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0", - "is-extglob@^2.1.0": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2", - "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2", - "is-fullwidth-code-point@^2.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f", - "is-fullwidth-code-point@^3.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d", - "is-glob@^2.0.0": "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863", - "is-glob@^3.1.0": "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a", - "is-glob@^4.0.0": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", - "is-glob@^4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", - "is-glob@~4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084", - "is-interactive@^1.0.0": "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e", - "is-invalid-path@^0.1.0": "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34", - "is-negative-zero@^2.0.2": "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150", - "is-number-object@^1.0.4": "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc", - "is-number@^3.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195", - "is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b", - "is-obj@^2.0.0": "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982", - "is-path-cwd@^2.0.0": "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb", - "is-path-cwd@^2.2.0": "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb", - "is-path-in-cwd@^2.0.0": "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb", - "is-path-inside@^2.1.0": "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2", - "is-path-inside@^3.0.2": "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283", - "is-plain-object@^2.0.3": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", - "is-plain-object@^2.0.4": "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", - "is-port-reachable@^2.0.1": "https://registry.yarnpkg.com/is-port-reachable/-/is-port-reachable-2.0.1.tgz#e0778d0733beac1ade3ba72a5fe77db50a59926b", - "is-reachable@^4.0.0": "https://registry.yarnpkg.com/is-reachable/-/is-reachable-4.0.0.tgz#dcd6fe1d011eb1298030723979b785ce55186400", - "is-regex@^1.0.4": "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958", - "is-regex@^1.1.4": "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958", - "is-resolvable@^1.0.0": "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88", - "is-root@2.1.0": "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c", - "is-root@^2.1.0": "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c", - "is-shared-array-buffer@^1.0.2": "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79", - "is-stream@^1.1.0": "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44", - "is-stream@^2.0.0": "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077", - "is-string@^1.0.5": "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd", - "is-string@^1.0.7": "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd", - "is-symbol@^1.0.2": "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c", - "is-symbol@^1.0.3": "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c", - "is-typed-array@^1.1.10": "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f", - "is-typed-array@^1.1.9": "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f", - "is-unicode-supported@^0.1.0": "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7", - "is-valid-path@^0.1.1": "https://registry.yarnpkg.com/is-valid-path/-/is-valid-path-0.1.1.tgz#110f9ff74c37f663e1ec7915eb451f2db93ac9df", - "is-weakref@^1.0.2": "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2", - "is-windows@^1.0.2": "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d", - "is-wsl@^1.1.0": "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d", - "is-wsl@^2.0.0": "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271", - "is-wsl@^2.1.1": "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271", - "is-wsl@^2.2.0": "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271", - "isarray@1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", - "isarray@^1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", - "isarray@~1.0.0": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", - "isexe@^2.0.0": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10", - "isobject@^2.0.0": "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89", - "isobject@^3.0.0": "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df", - "isobject@^3.0.1": "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df", - "jest-get-type@^26.3.0": "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0", - "jest-regex-util@^27.0.6": "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95", - "jest-serializer@^27.0.6": "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64", - "jest-util@^27.2.0": "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9", - "jest-validate@^26.5.2": "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec", - "jest-worker@^26.2.1": "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed", - "jest-worker@^27.2.0": "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0", - "jimp-compact@0.16.1": "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3", - "joi@^17.2.1": "https://registry.yarnpkg.com/joi/-/joi-17.7.0.tgz#591a33b1fe1aca2bc27f290bcad9b9c1c570a6b3", - "joi@^17.4.0": "https://registry.yarnpkg.com/joi/-/joi-17.7.0.tgz#591a33b1fe1aca2bc27f290bcad9b9c1c570a6b3", - "join-component@^1.1.0": "https://registry.yarnpkg.com/join-component/-/join-component-1.1.0.tgz#b8417b750661a392bee2c2537c68b2a9d4977cd5", - "js-tokens@^3.0.0 || ^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", - "js-tokens@^4.0.0": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", - "js-yaml@^3.13.1": "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537", - "js-yaml@^4.1.0": "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602", - "jsc-android@^250230.2.1": "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83", - "jscodeshift@^0.13.1": "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef", - "jsesc@^2.5.1": "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4", - "jsesc@~0.5.0": "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d", - "json-buffer@3.0.0": "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898", - "json-buffer@3.0.1": "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13", - "json-parse-better-errors@^1.0.1": "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9", - "json-parse-better-errors@^1.0.2": "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9", - "json-schema-deref-sync@^0.13.0": "https://registry.yarnpkg.com/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz#cb08b4ff435a48b5a149652d7750fdd071009823", - "json-schema-traverse@^0.4.1": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660", - "json-schema-traverse@^1.0.0": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2", - "json3@^3.3.2": "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81", - "json5@^0.5.1": "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821", - "json5@^1.0.1": "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593", - "json5@^2.1.2": "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283", - "json5@^2.2.2": "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283", - "jsonfile@^2.1.0": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8", - "jsonfile@^4.0.0": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb", - "jsonfile@^6.0.1": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae", - "keychain@1.3.0": "https://registry.yarnpkg.com/keychain/-/keychain-1.3.0.tgz#ccb8ddc64a62f34d541ac25e612186442a432410", - "keyv@^3.0.0": "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9", - "keyv@^4.0.0": "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56", - "killable@^1.0.1": "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892", - "kind-of@^3.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64", - "kind-of@^3.0.3": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64", - "kind-of@^3.2.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64", - "kind-of@^4.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57", - "kind-of@^5.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d", - "kind-of@^6.0.0": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd", - "kind-of@^6.0.2": "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd", - "klaw@^1.0.0": "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439", - "kleur@^3.0.3": "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e", - "last-call-webpack-plugin@^3.0.0": "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555", - "latest-version@5.1.0": "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face", - "leven@^3.1.0": "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2", - "lines-and-columns@^1.1.6": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632", - "loader-runner@^2.4.0": "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357", - "loader-utils@2.0.0": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0", - "loader-utils@^1.1.0": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3", - "loader-utils@^1.2.3": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3", - "loader-utils@^1.4.0": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3", - "loader-utils@^2.0.0": "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c", - "locate-path@^3.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e", - "locate-path@^5.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0", - "locate-path@^6.0.0": "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286", - "lodash.debounce@^4.0.8": "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af", - "lodash.memoize@^4.1.2": "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe", - "lodash.merge@^4.6.2": "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a", - "lodash.throttle@^4.1.1": "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4", - "lodash.uniq@^4.5.0": "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773", - "lodash@>=3.5 <5": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.11": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.13": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.14": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.15": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.19": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.20": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.21": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.4": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "lodash@^4.17.5": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c", - "log-symbols@^2.2.0": "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a", - "log-symbols@^4.1.0": "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503", - "logkitty@^0.7.1": "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7", - "loglevel@^1.6.8": "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4", - "loose-envify@^1.0.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", - "loose-envify@^1.1.0": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", - "loose-envify@^1.3.1": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf", - "lower-case@^2.0.2": "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28", - "lowercase-keys@^1.0.0": "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f", - "lowercase-keys@^1.0.1": "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f", - "lowercase-keys@^2.0.0": "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479", - "lru-cache@^5.1.1": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920", - "lru-cache@^6.0.0": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94", - "make-dir@^2.0.0": "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5", - "make-dir@^2.1.0": "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5", - "make-dir@^3.0.2": "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f", - "makeerror@1.0.12": "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a", - "map-cache@^0.2.2": "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf", - "map-visit@^1.0.0": "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f", - "md5-file@^3.2.3": "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f", - "md5.js@^1.3.4": "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f", - "md5@^2.2.1": "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f", - "md5@~2.2.0": "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9", - "md5hex@1.0.0": "https://registry.yarnpkg.com/md5hex/-/md5hex-1.0.0.tgz#ed74b477a2ee9369f75efee2f08d5915e52a42e8", - "md5hex@^1.0.0": "https://registry.yarnpkg.com/md5hex/-/md5hex-1.0.0.tgz#ed74b477a2ee9369f75efee2f08d5915e52a42e8", - "mdn-data@2.0.14": "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50", - "mdn-data@2.0.4": "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b", - "media-typer@0.3.0": "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748", - "memoize-one@^5.0.0": "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e", - "memory-cache@~0.2.0": "https://registry.yarnpkg.com/memory-cache/-/memory-cache-0.2.0.tgz#7890b01d52c00c8ebc9d533e1f8eb17e3034871a", - "memory-fs@^0.4.1": "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552", - "memory-fs@^0.5.0": "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c", - "merge-descriptors@1.0.1": "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61", - "merge-stream@^2.0.0": "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60", - "merge2@^1.3.0": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae", - "merge2@^1.4.1": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae", - "methods@~1.1.2": "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee", - "metro-babel-transformer@0.72.3": "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz#2c60493a4eb7a8d20cc059f05e0e505dc1684d01", - "metro-cache-key@0.72.3": "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.72.3.tgz#dcc3055b6cb7e35b84b4fe736a148affb4ecc718", - "metro-cache@0.72.3": "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.72.3.tgz#fd079f90b12a81dd5f1567c607c13b14ae282690", - "metro-config@0.72.3": "https://registry.yarnpkg.com/metro-config/-/metro-config-0.72.3.tgz#c2f1a89537c79cec516b1229aa0550dfa769e2ee", - "metro-core@0.72.3": "https://registry.yarnpkg.com/metro-core/-/metro-core-0.72.3.tgz#e3a276d54ecc8fe667127347a1bfd3f8c0009ccb", - "metro-file-map@0.72.3": "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.72.3.tgz#94f6d4969480aa7f47cfe2c5f365ad4e85051f12", - "metro-hermes-compiler@0.72.3": "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz#e9ab4d25419eedcc72c73842c8da681a4a7e691e", - "metro-inspector-proxy@0.72.3": "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz#8d7ff4240fc414af5b72d86dac2485647fc3cf09", - "metro-minify-uglify@0.72.3": "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz#a9d4cd27933b29cfe95d8406b40d185567a93d39", - "metro-react-native-babel-preset@0.72.3": "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz#e549199fa310fef34364fdf19bd210afd0c89432", - "metro-react-native-babel-transformer@0.72.3": "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz#f8eda8c07c0082cbdbef47a3293edc41587c6b5a", - "metro-resolver@0.72.3": "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.72.3.tgz#c64ce160454ac850a15431509f54a587cb006540", - "metro-runtime@0.72.3": "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.72.3.tgz#1485ed7b5f06d09ebb40c83efcf8accc8d30b8b9", - "metro-source-map@0.72.3": "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.72.3.tgz#5efcf354413804a62ff97864e797f60ef3cc689e", - "metro-symbolicate@0.72.3": "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz#093d4f8c7957bcad9ca2ab2047caa90b1ee1b0c1", - "metro-transform-plugins@0.72.3": "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz#b00e5a9f24bff7434ea7a8e9108eebc8386b9ee4", - "metro-transform-worker@0.72.3": "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz#bdc6cc708ea114bc085e11d675b8ff626d7e6db7", - "metro@0.72.3": "https://registry.yarnpkg.com/metro/-/metro-0.72.3.tgz#eb587037d62f48a0c33c8d88f26666b4083bb61e", - "microevent.ts@~0.1.1": "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0", - "micromatch@^3.1.10": "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23", - "micromatch@^3.1.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23", - "micromatch@^4.0.2": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6", - "micromatch@^4.0.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6", - "miller-rabin@^4.0.0": "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d", - "mime-db@1.52.0": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70", - "mime-db@>= 1.43.0 < 2": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70", - "mime-types@^2.1.12": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", - "mime-types@^2.1.27": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", - "mime-types@~2.1.17": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", - "mime-types@~2.1.24": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", - "mime-types@~2.1.34": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a", - "mime@1.4.1": "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6", - "mime@1.6.0": "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1", - "mime@^2.4.1": "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367", - "mime@^2.4.4": "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367", - "mimic-fn@^1.0.0": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022", - "mimic-fn@^2.1.0": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b", - "mimic-response@^1.0.0": "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b", - "mimic-response@^1.0.1": "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b", - "mimic-response@^3.1.0": "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9", - "mini-css-extract-plugin@^0.5.0": "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0", - "minimalistic-assert@^1.0.0": "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7", - "minimalistic-assert@^1.0.1": "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7", - "minimalistic-crypto-utils@^1.0.1": "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a", - "minimatch@2 || 3": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", - "minimatch@3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083", - "minimatch@^3.0.2": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", - "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", - "minimatch@^3.1.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b", - "minimist@^1.2.0": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18", - "minimist@^1.2.6": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18", - "minipass-collect@^1.0.2": "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617", - "minipass-flush@^1.0.5": "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373", - "minipass-pipeline@^1.2.2": "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c", - "minipass@3.1.6": "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee", - "minipass@^3.0.0": "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a", - "minipass@^3.1.1": "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a", - "minipass@^4.0.0": "https://registry.yarnpkg.com/minipass/-/minipass-4.0.0.tgz#7cebb0f9fa7d56f0c5b17853cbe28838a8dbbd3b", - "minizlib@^2.1.1": "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931", - "mississippi@^3.0.0": "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022", - "mixin-deep@^1.2.0": "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566", - "mkdirp@^0.5.1": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6", - "mkdirp@^0.5.3": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6", - "mkdirp@^0.5.6": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6", - "mkdirp@^1.0.3": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e", - "mkdirp@^1.0.4": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e", - "mkdirp@~0.5.1": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6", - "move-concurrently@^1.0.1": "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92", - "ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8", - "ms@2.1.2": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009", - "ms@2.1.3": "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2", - "ms@^2.1.1": "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2", - "multicast-dns-service-types@^1.1.0": "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901", - "multicast-dns@^6.0.1": "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229", - "mv@2.1.1": "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2", - "mv@~2": "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2", - "mz@^2.7.0": "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32", - "nan@^2.12.1": "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb", - "nanomatch@^1.2.9": "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119", - "ncp@~2.0.0": "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3", - "needle@^2.5.2": "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684", - "negotiator@0.6.3": "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd", - "neo-async@^2.5.0": "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f", - "neo-async@^2.6.1": "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f", - "nested-error-stacks@~2.0.1": "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b", - "nice-try@^1.0.4": "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366", - "no-case@^3.0.4": "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d", - "nocache@^3.0.1": "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79", - "node-dir@^0.1.17": "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5", - "node-fetch@2.6.7": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad", - "node-fetch@^2.2.0": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e", - "node-fetch@^2.6.0": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e", - "node-fetch@^2.6.1": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e", - "node-fetch@^2.6.7": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e", - "node-forge@0.10.0": "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3", - "node-forge@^0.10.0": "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3", - "node-forge@^1.2.1": "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3", - "node-forge@^1.3.1": "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3", - "node-html-parser@^1.2.12": "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c", - "node-int64@^0.4.0": "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b", - "node-libs-browser@^2.2.1": "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425", - "node-releases@^1.1.61": "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e", - "node-releases@^2.0.6": "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae", - "node-stream-zip@^1.9.1": "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea", - "normalize-css-color@^1.0.2": "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d", - "normalize-path@^2.1.1": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9", - "normalize-path@^3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", - "normalize-path@~3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", - "normalize-url@^3.0.0": "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559", - "normalize-url@^4.1.0": "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a", - "normalize-url@^6.0.1": "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a", - "npm-package-arg@6.1.0": "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1", - "npm-package-arg@^7.0.0": "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-7.0.0.tgz#52cdf08b491c0c59df687c4c925a89102ef794a5", - "npm-run-path@^2.0.0": "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f", - "nth-check@^1.0.2": "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c", - "nth-check@^2.0.1": "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d", - "nullthrows@1.1.1": "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1", - "nullthrows@^1.1.1": "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1", - "ob1@0.72.3": "https://registry.yarnpkg.com/ob1/-/ob1-0.72.3.tgz#fc1efcfe156f12ed23615f2465a796faad8b91e4", - "object-assign@^4.0.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", - "object-assign@^4.1.0": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", - "object-assign@^4.1.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863", - "object-copy@^0.1.0": "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c", - "object-inspect@^1.12.2": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9", - "object-inspect@^1.9.0": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9", - "object-is@^1.0.1": "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac", - "object-keys@^1.1.1": "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e", - "object-visit@^1.0.0": "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb", - "object.assign@^4.1.4": "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f", - "object.entries@^1.1.0": "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23", - "object.getownpropertydescriptors@^2.0.3": "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3", - "object.getownpropertydescriptors@^2.1.0": "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3", - "object.pick@^1.3.0": "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747", - "object.values@^1.1.0": "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d", - "obuf@^1.0.0": "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e", - "obuf@^1.1.2": "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e", - "on-finished@2.4.1": "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f", - "on-finished@~2.3.0": "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947", - "on-headers@~1.0.2": "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f", - "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", - "once@^1.3.1": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", - "once@^1.4.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", - "onetime@^2.0.0": "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4", - "onetime@^5.1.0": "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e", - "open@^6.2.0": "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9", - "open@^7.0.2": "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321", - "open@^8.0.4": "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8", - "open@^8.3.0": "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8", - "opn@^5.5.0": "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc", - "optimize-css-assets-webpack-plugin@^5.0.3": "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a", - "ora@3.4.0": "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318", - "ora@^5.4.1": "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18", - "os-browserify@^0.3.0": "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27", - "os-homedir@^1.0.0": "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3", - "os-tmpdir@^1.0.0": "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274", - "os-tmpdir@~1.0.2": "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274", - "osenv@^0.1.5": "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410", - "p-any@^2.1.0": "https://registry.yarnpkg.com/p-any/-/p-any-2.1.0.tgz#719489408e14f5f941a748f1e817f5c71cab35cb", - "p-cancelable@^1.0.0": "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc", - "p-cancelable@^2.0.0": "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf", - "p-finally@^1.0.0": "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae", - "p-limit@^2.0.0": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1", - "p-limit@^2.2.0": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1", - "p-limit@^3.0.2": "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b", - "p-locate@^3.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4", - "p-locate@^4.1.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07", - "p-locate@^5.0.0": "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834", - "p-map@3.0.0": "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d", - "p-map@^2.0.0": "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175", - "p-map@^4.0.0": "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b", - "p-retry@4.1.0": "https://registry.yarnpkg.com/p-retry/-/p-retry-4.1.0.tgz#9ce7cef2069e84bf590df3b8ec18d740109338d6", - "p-retry@^3.0.1": "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328", - "p-some@^4.0.0": "https://registry.yarnpkg.com/p-some/-/p-some-4.1.0.tgz#28e73bc1e0d62db54c2ed513acd03acba30d5c04", - "p-timeout@3.1.0": "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.1.0.tgz#198c1f503bb973e9b9727177a276c80afd6851f3", - "p-timeout@^3.2.0": "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe", - "p-try@^2.0.0": "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6", - "p-try@^2.1.0": "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6", - "package-json@6.4.0": "https://registry.yarnpkg.com/package-json/-/package-json-6.4.0.tgz#4f626976604f4a9a41723ce1792b204a60b1b61e", - "package-json@^6.3.0": "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0", - "pako@~1.0.5": "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf", - "parallel-transform@^1.1.0": "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc", - "param-case@^3.0.3": "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5", - "parse-asn1@^5.0.0": "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4", - "parse-asn1@^5.1.5": "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4", - "parse-json@^4.0.0": "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0", - "parse-png@^2.1.0": "https://registry.yarnpkg.com/parse-png/-/parse-png-2.1.0.tgz#2a42ad719fedf90f81c59ebee7ae59b280d6b338", - "parse-srcset@^1.0.2": "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1", - "parseurl@~1.3.2": "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4", - "parseurl@~1.3.3": "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4", - "pascal-case@^3.1.2": "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb", - "pascalcase@^0.1.1": "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14", - "password-prompt@^1.0.4": "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923", - "path-browserify@0.0.1": "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a", - "path-browserify@^1.0.0": "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd", - "path-dirname@^1.0.0": "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0", - "path-exists@^3.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515", - "path-exists@^4.0.0": "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3", - "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", - "path-is-inside@^1.0.2": "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53", - "path-key@^2.0.0": "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40", - "path-key@^2.0.1": "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40", - "path-key@^3.1.0": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375", - "path-parse@^1.0.5": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735", - "path-parse@^1.0.7": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735", - "path-to-regexp@0.1.7": "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c", - "path-type@^4.0.0": "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b", - "pbkdf2@^3.0.3": "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075", - "picocolors@^0.2.1": "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f", - "picocolors@^1.0.0": "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c", - "picomatch@^2.0.4": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", - "picomatch@^2.2.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", - "picomatch@^2.2.3": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", - "picomatch@^2.3.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42", - "pify@^2.0.0": "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c", - "pify@^4.0.1": "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231", - "pinkie-promise@^2.0.0": "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa", - "pinkie@^2.0.0": "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870", - "pirates@^4.0.1": "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b", - "pirates@^4.0.5": "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b", - "pkg-dir@^3.0.0": "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3", - "pkg-dir@^4.1.0": "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3", - "pkg-up@3.1.0": "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5", - "pkg-up@^3.1.0": "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5", - "plist@^3.0.5": "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3", - "pngjs@3.4.0": "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f", - "pngjs@^3.3.0": "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f", - "pnp-webpack-plugin@^1.5.0": "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz#65741384f6d8056f36e2255a8d67ffc20866f5c9", - "portfinder@^1.0.26": "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81", - "posix-character-classes@^0.1.0": "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab", - "postcss-calc@^7.0.1": "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e", - "postcss-colormin@^4.0.3": "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381", - "postcss-convert-values@^4.0.1": "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f", - "postcss-discard-comments@^4.0.2": "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033", - "postcss-discard-duplicates@^4.0.2": "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb", - "postcss-discard-empty@^4.0.1": "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765", - "postcss-discard-overridden@^4.0.1": "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57", - "postcss-merge-longhand@^4.0.11": "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24", - "postcss-merge-rules@^4.0.3": "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650", - "postcss-minify-font-values@^4.0.2": "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6", - "postcss-minify-gradients@^4.0.2": "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471", - "postcss-minify-params@^4.0.2": "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874", - "postcss-minify-selectors@^4.0.2": "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8", - "postcss-modules-extract-imports@^2.0.0": "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e", - "postcss-modules-local-by-default@^3.0.2": "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0", - "postcss-modules-scope@^2.2.0": "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee", - "postcss-modules-values@^3.0.0": "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10", - "postcss-normalize-charset@^4.0.1": "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4", - "postcss-normalize-display-values@^4.0.2": "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a", - "postcss-normalize-positions@^4.0.2": "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f", - "postcss-normalize-repeat-style@^4.0.2": "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c", - "postcss-normalize-string@^4.0.2": "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c", - "postcss-normalize-timing-functions@^4.0.2": "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9", - "postcss-normalize-unicode@^4.0.1": "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb", - "postcss-normalize-url@^4.0.1": "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1", - "postcss-normalize-whitespace@^4.0.2": "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82", - "postcss-ordered-values@^4.1.2": "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee", - "postcss-reduce-initial@^4.0.3": "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df", - "postcss-reduce-transforms@^4.0.2": "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29", - "postcss-safe-parser@^4.0.2": "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96", - "postcss-selector-parser@^3.0.0": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270", - "postcss-selector-parser@^6.0.0": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc", - "postcss-selector-parser@^6.0.2": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc", - "postcss-svgo@^4.0.3": "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e", - "postcss-unique-selectors@^4.0.1": "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac", - "postcss-value-parser@^3.0.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281", - "postcss-value-parser@^4.0.2": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514", - "postcss-value-parser@^4.1.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514", - "postcss-value-parser@^4.2.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514", - "postcss@^7.0.0": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.1": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.14": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.26": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.27": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.32": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.5": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "postcss@^7.0.6": "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309", - "prepend-http@^2.0.0": "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897", - "prepend-http@^3.0.1": "https://registry.yarnpkg.com/prepend-http/-/prepend-http-3.0.1.tgz#3e724d58fd5867465b300bb9615009fa2f8ee3b6", - "pretty-bytes@5.6.0": "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb", - "pretty-bytes@^5.3.0": "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb", - "pretty-error@^2.1.1": "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6", - "pretty-format@^26.5.2": "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93", - "pretty-format@^26.6.2": "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93", - "probe-image-size@^7.1.0": "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.3.tgz#d49c64be540ec8edea538f6f585f65a9b3ab4309", - "probe-image-size@~6.0.0": "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-6.0.0.tgz#4a85b19d5af4e29a8de7d53a9aa036f6fd02f5f4", - "process-nextick-args@~2.0.0": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2", - "process@^0.11.10": "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182", - "progress@2.0.3": "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8", - "promise-inflight@^1.0.1": "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3", - "promise@^7.1.1": "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf", - "promise@^8.0.3": "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a", - "prompts@2.4.0": "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7", - "prompts@^2.3.2": "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069", - "prompts@^2.4.0": "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069", - "proxy-addr@~2.0.4": "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025", - "proxy-addr@~2.0.7": "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025", - "prr@~1.0.1": "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476", - "public-encrypt@^4.0.0": "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0", - "pump@^2.0.0": "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909", - "pump@^3.0.0": "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64", - "pumpify@^1.3.3": "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce", - "punycode@1.3.2": "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d", - "punycode@^1.2.4": "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e", - "punycode@^2.1.0": "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f", - "q@^1.1.2": "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7", - "qrcode-terminal@0.11.0": "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz#ffc6c28a2fc0bfb47052b47e23f4f446a5fbdb9e", - "qs@6.11.0": "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a", - "qs@6.5.2": "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36", - "qs@6.7.0": "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc", - "querystring-es3@^0.2.0": "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73", - "querystring@0.2.0": "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620", - "querystringify@^2.1.1": "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6", - "queue-microtask@^1.2.2": "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243", - "queue@6.0.2": "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65", - "quick-lru@^5.1.1": "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932", - "randombytes@^2.0.0": "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a", - "randombytes@^2.0.1": "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a", - "randombytes@^2.0.5": "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a", - "randombytes@^2.1.0": "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a", - "randomfill@^1.0.3": "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458", - "range-parser@^1.2.1": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031", - "range-parser@~1.2.0": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031", - "range-parser@~1.2.1": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031", - "raw-body@2.3.3": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3", - "raw-body@2.4.0": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332", - "raw-body@2.5.1": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857", - "rc@1.2.8": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", - "rc@^1.0.1": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", - "rc@^1.1.6": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", - "rc@^1.2.8": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", - "rc@~1.2.7": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed", - "react-dev-utils@~11.0.1": "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a", - "react-devtools-core@4.24.0": "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.0.tgz#7daa196bdc64f3626b3f54f2ff2b96f7c4fdf017", - "react-dom@18.1.0": "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f", - "react-error-overlay@^6.0.9": "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb", - "react-is@^16.12.0 || ^17.0.0 || ^18.0.0": "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b", - "react-is@^17.0.1": "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0", - "react-native-codegen@^0.70.6": "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.70.6.tgz#2ce17d1faad02ad4562345f8ee7cbe6397eda5cb", - "react-native-gradle-plugin@^0.70.3": "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz#cbcf0619cbfbddaa9128701aa2d7b4145f9c4fc8", - "react-native-web@~0.18.9": "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.18.11.tgz#3559c5b34fd628a2e9ab50ee8d2209d416b4accf", - "react-native@0.70.5": "https://registry.yarnpkg.com/react-native/-/react-native-0.70.5.tgz#f60540b21d338891086e0a834e331c124dd1f55c", - "react-refresh@^0.4.0": "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53", - "react-shallow-renderer@^16.15.0": "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457", - "react@18.1.0": "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890", - "read-chunk@^3.2.0": "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca", - "read-last-lines@1.6.0": "https://registry.yarnpkg.com/read-last-lines/-/read-last-lines-1.6.0.tgz#d6e418d7cd3095aab5c3a81b0e5432fab70fe95c", - "readable-stream@1 || 2": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.0.0": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.0.1": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.0.2": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.1.5": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.2.2": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.3.3": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^2.3.6": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readable-stream@^3.0.6": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "readable-stream@^3.4.0": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "readable-stream@^3.6.0": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "readable-stream@~2.3.6": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "readdirp@^2.2.1": "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525", - "readdirp@~3.6.0": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7", - "readline@^1.3.0": "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c", - "recast@^0.20.4": "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae", - "recursive-readdir@2.2.2": "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f", - "regenerate-unicode-properties@^10.1.0": "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c", - "regenerate@^1.4.2": "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a", - "regenerator-runtime@^0.13.11": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9", - "regenerator-runtime@^0.13.2": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9", - "regenerator-runtime@^0.13.4": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9", - "regenerator-transform@^0.15.1": "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56", - "regex-not@^1.0.0": "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c", - "regex-not@^1.0.2": "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c", - "regexp.prototype.flags@^1.2.0": "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac", - "regexp.prototype.flags@^1.4.3": "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac", - "regexpu-core@^5.2.1": "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc", - "registry-auth-token@3.3.2": "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20", - "registry-auth-token@^3.4.0": "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e", - "registry-auth-token@^4.0.0": "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac", - "registry-url@3.1.0": "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942", - "registry-url@^5.0.0": "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009", - "regjsgen@^0.7.1": "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6", - "regjsparser@^0.9.1": "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709", - "relateurl@^0.2.7": "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9", - "remove-trailing-separator@^1.0.1": "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef", - "remove-trailing-slash@^0.1.0": "https://registry.yarnpkg.com/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz#be2285a59f39c74d1bce4f825950061915e3780d", - "renderkid@^2.0.4": "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609", - "repeat-element@^1.1.2": "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9", - "repeat-string@^1.6.1": "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637", - "require-directory@^2.1.1": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42", - "require-from-string@^2.0.2": "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909", - "require-main-filename@^2.0.0": "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b", - "requireg@^0.2.2": "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830", - "requires-port@^1.0.0": "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff", - "reselect@^4.0.0": "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42", - "resolve-alpn@^1.0.0": "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9", - "resolve-cwd@^2.0.0": "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a", - "resolve-from@^3.0.0": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748", - "resolve-from@^5.0.0": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69", - "resolve-url@^0.2.1": "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a", - "resolve@^1.13.1": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177", - "resolve@^1.14.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177", - "resolve@^1.3.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177", - "resolve@~1.7.1": "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3", - "responselike@^1.0.2": "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7", - "responselike@^2.0.0": "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc", - "restore-cursor@^2.0.0": "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf", - "restore-cursor@^3.1.0": "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e", - "ret@~0.1.10": "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc", - "retry@^0.12.0": "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b", - "reusify@^1.0.4": "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76", - "rgb-regex@^1.0.1": "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1", - "rgba-regex@^1.0.0": "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3", - "rimraf@^2.5.4": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", - "rimraf@^2.6.2": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", - "rimraf@^2.6.3": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec", - "rimraf@^3.0.2": "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a", - "rimraf@~2.2.6": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582", - "rimraf@~2.4.0": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da", - "rimraf@~2.6.2": "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab", - "ripemd160@^2.0.0": "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c", - "ripemd160@^2.0.1": "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c", - "router-ips@^1.0.0": "https://registry.yarnpkg.com/router-ips/-/router-ips-1.0.0.tgz#44e00858ebebc0133d58e40b2cd8a1fbb04203f5", - "run-parallel@^1.1.9": "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee", - "run-queue@^1.0.0": "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47", - "run-queue@^1.0.3": "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47", - "safe-buffer@5.1.2": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", - "safe-buffer@5.2.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@>=5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@^5.0.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@^5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@^5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@^5.1.2": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@^5.2.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-buffer@~5.1.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", - "safe-buffer@~5.1.1": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", - "safe-buffer@~5.2.0": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "safe-json-stringify@~1": "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd", - "safe-regex-test@^1.0.0": "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295", - "safe-regex@^1.1.0": "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e", - "safer-buffer@>= 2.1.2 < 3": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", - "safer-buffer@^2.1.0": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", - "sax@>=0.6.0": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", - "sax@^1.2.4": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", - "sax@~1.2.4": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", - "scheduler@^0.22.0": "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8", - "schema-utils@^1.0.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770", - "schema-utils@^2.6.5": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7", - "schema-utils@^2.6.6": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7", - "schema-utils@^2.7.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7", - "schema-utils@^3.0.0": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281", - "schema-utils@^3.1.1": "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281", - "select-hose@^2.0.0": "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca", - "selfsigned@^1.10.7": "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574", - "semver@7.3.2": "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938", - "semver@^5.4.1": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7", - "semver@^5.5.0": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7", - "semver@^5.6.0": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7", - "semver@^6.0.0": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", - "semver@^6.1.1": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", - "semver@^6.1.2": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", - "semver@^6.2.0": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", - "semver@^6.3.0": "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", - "semver@^7.3.5": "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798", - "semver@~7.3.2": "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798", - "send@0.16.2": "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1", - "send@0.18.0": "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be", - "send@^0.18.0": "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be", - "serialize-error@6.0.0": "https://registry.yarnpkg.com/serialize-error/-/serialize-error-6.0.0.tgz#ccfb887a1dd1c48d6d52d7863b92544331fd752b", - "serialize-error@^2.1.0": "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a", - "serialize-javascript@^4.0.0": "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa", - "serve-index@^1.9.1": "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239", - "serve-static@1.13.2": "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1", - "serve-static@1.15.0": "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540", - "serve-static@^1.13.1": "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540", - "set-blocking@^2.0.0": "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7", - "set-value@^2.0.0": "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b", - "set-value@^2.0.1": "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b", - "setimmediate@^1.0.4": "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285", - "setimmediate@^1.0.5": "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285", - "setprototypeof@1.1.0": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656", - "setprototypeof@1.1.1": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683", - "setprototypeof@1.2.0": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424", - "sha.js@^2.4.0": "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7", - "sha.js@^2.4.8": "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7", - "shallow-clone@^3.0.0": "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3", - "shebang-command@^1.2.0": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea", - "shebang-command@^2.0.0": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea", - "shebang-regex@^1.0.0": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3", - "shebang-regex@^3.0.0": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172", - "shell-quote@1.7.2": "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2", - "shell-quote@^1.6.1": "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8", - "shell-quote@^1.7.3": "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8", - "side-channel@^1.0.4": "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf", - "signal-exit@^3.0.0": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9", - "signal-exit@^3.0.2": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9", - "simple-plist@^1.1.0": "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017", - "simple-swizzle@^0.2.2": "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a", - "sisteransi@^1.0.5": "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed", - "slash@^3.0.0": "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634", - "slice-ansi@^2.0.0": "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636", - "slugify@^1.3.4": "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8", - "snapdragon-node@^2.0.1": "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b", - "snapdragon-util@^3.0.1": "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2", - "snapdragon@^0.8.1": "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d", - "sockjs-client@1.4.0": "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5", - "sockjs@0.3.20": "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855", - "source-list-map@^2.0.0": "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34", - "source-map-resolve@^0.5.0": "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a", - "source-map-support@0.4.18": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f", - "source-map-support@^0.5.16": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f", - "source-map-support@~0.5.12": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f", - "source-map-url@^0.4.0": "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56", - "source-map@^0.5.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc", - "source-map@^0.5.6": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc", - "source-map@^0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "source-map@^0.6.1": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "source-map@^0.7.3": "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656", - "source-map@~0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "source-map@~0.6.1": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "spdy-transport@^3.0.0": "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31", - "spdy@^4.0.2": "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b", - "split-string@^3.0.1": "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2", - "split-string@^3.0.2": "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2", - "split@1.0.1": "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9", - "split@^1.0.1": "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9", - "sprintf-js@~1.0.2": "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c", - "ssri@^6.0.1": "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5", - "ssri@^8.0.1": "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af", - "stable@^0.1.8": "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf", - "stackframe@^1.3.4": "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310", - "stacktrace-parser@^0.1.3": "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a", - "static-extend@^0.1.1": "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6", - "statuses@2.0.1": "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63", - "statuses@>= 1.4.0 < 2": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c", - "statuses@>= 1.5.0 < 2": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c", - "statuses@~1.4.0": "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087", - "statuses@~1.5.0": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c", - "stream-browserify@^2.0.1": "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b", - "stream-buffers@2.2.x": "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4", - "stream-each@^1.1.0": "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae", - "stream-http@^2.7.2": "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc", - "stream-parser@~0.3.1": "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773", - "stream-shift@^1.0.0": "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d", - "string-width@^3.0.0": "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961", - "string-width@^3.1.0": "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961", - "string-width@^4.0.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010", - "string-width@^4.1.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010", - "string-width@^4.2.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010", - "string-width@^4.2.2": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010", - "string.prototype.trimend@^1.0.6": "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533", - "string.prototype.trimstart@^1.0.6": "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4", - "string_decoder@^1.0.0": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "string_decoder@^1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "string_decoder@~1.1.1": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8", - "strip-ansi@6.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532", - "strip-ansi@^3.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf", - "strip-ansi@^5.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae", - "strip-ansi@^5.1.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae", - "strip-ansi@^5.2.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae", - "strip-ansi@^6.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9", - "strip-ansi@^6.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9", - "strip-eof@^1.0.0": "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf", - "strip-json-comments@~2.0.1": "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a", - "structured-headers@^0.4.1": "https://registry.yarnpkg.com/structured-headers/-/structured-headers-0.4.1.tgz#77abd9410622c6926261c09b9d16cf10592694d1", - "style-loader@~1.2.1": "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a", - "stylehacks@^4.0.0": "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5", - "styleq@^0.1.2": "https://registry.yarnpkg.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71", - "sucrase@^3.20.0": "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d", - "sudo-prompt@9.1.1": "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0", - "sudo-prompt@^8.2.0": "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e", - "sudo-prompt@^9.0.0": "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd", - "supports-color@^5.3.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f", - "supports-color@^6.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3", - "supports-color@^7.0.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da", - "supports-color@^7.1.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da", - "supports-color@^8.0.0": "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c", - "supports-hyperlinks@^2.0.0": "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624", - "supports-preserve-symlinks-flag@^1.0.0": "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09", - "svgo@^1.0.0": "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167", - "tapable@^1.0.0": "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2", - "tapable@^1.1.3": "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2", - "tar@^6.0.2": "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b", - "tar@^6.0.5": "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b", - "temp-dir@^1.0.0": "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d", - "temp-dir@^2.0.0": "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e", - "temp@0.8.3": "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59", - "temp@^0.8.4": "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2", - "tempy@0.3.0": "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8", - "tempy@^0.7.1": "https://registry.yarnpkg.com/tempy/-/tempy-0.7.1.tgz#5a654e6dbd1747cdd561efb112350b55cd9c1d46", - "terminal-link@^2.1.1": "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994", - "terser-webpack-plugin@^1.4.3": "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b", - "terser-webpack-plugin@^3.0.6": "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz#91e6d39571460ed240c0cf69d295bcf30ebf98cb", - "terser@^4.1.2": "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f", - "terser@^4.6.3": "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f", - "terser@^4.8.0": "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f", - "text-table@0.2.0": "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4", - "text-table@^0.2.0": "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4", - "thenify-all@^1.0.0": "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726", - "thenify@>= 3.1.0 < 4": "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f", - "throat@^5.0.0": "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b", - "through2@^2.0.0": "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd", - "through2@^2.0.1": "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd", - "through@2": "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5", - "thunky@^1.0.2": "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d", - "timers-browserify@^2.0.4": "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee", - "timsort@^0.3.0": "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4", - "tmp@^0.0.33": "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9", - "tmpl@1.0.5": "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc", - "to-arraybuffer@^1.0.0": "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43", - "to-fast-properties@^2.0.0": "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e", - "to-object-path@^0.3.0": "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af", - "to-readable-stream@^1.0.0": "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771", - "to-regex-range@^2.1.0": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38", - "to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4", - "to-regex@^3.0.1": "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce", - "to-regex@^3.0.2": "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce", - "toidentifier@1.0.0": "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553", - "toidentifier@1.0.1": "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35", - "tr46@~0.0.3": "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a", - "traverse@~0.6.6": "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe", - "tree-kill@1.2.2": "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc", - "ts-interface-checker@^0.1.9": "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699", - "ts-pnp@^1.1.6": "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92", - "tslib@^2.0.1": "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e", - "tslib@^2.0.3": "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf", - "tslib@^2.1.0": "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e", - "tslib@^2.4.0": "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e", - "tty-browserify@0.0.0": "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6", - "turndown@~7.0.0": "https://registry.yarnpkg.com/turndown/-/turndown-7.0.0.tgz#19b2a6a2d1d700387a1e07665414e4af4fec5225", - "type-fest@^0.12.0": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee", - "type-fest@^0.16.0": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860", - "type-fest@^0.20.2": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4", - "type-fest@^0.21.3": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37", - "type-fest@^0.3.0": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1", - "type-fest@^0.3.1": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1", - "type-fest@^0.7.1": "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48", - "type-is@~1.6.16": "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131", - "type-is@~1.6.17": "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131", - "type-is@~1.6.18": "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131", - "typed-array-length@^1.0.4": "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb", - "typedarray@^0.0.6": "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777", - "typescript@^4.6.3": "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78", - "ua-parser-js@^0.7.30": "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532", - "uglify-es@^3.1.9": "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677", - "unbox-primitive@^1.0.2": "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e", - "unicode-canonical-property-names-ecmascript@^2.0.0": "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc", - "unicode-match-property-ecmascript@^2.0.0": "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3", - "unicode-match-property-value-ecmascript@^2.1.0": "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0", - "unicode-property-aliases-ecmascript@^2.0.0": "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd", - "union-value@^1.0.0": "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847", - "uniq@^1.0.1": "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff", - "uniqs@^2.0.0": "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02", - "unique-filename@^1.1.1": "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230", - "unique-slug@^2.0.0": "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c", - "unique-string@^1.0.0": "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a", - "unique-string@^2.0.0": "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d", - "universalify@^0.1.0": "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66", - "universalify@^1.0.0": "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d", - "universalify@^2.0.0": "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717", - "unpipe@1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec", - "unpipe@~1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec", - "unquote@~1.1.1": "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544", - "unset-value@^1.0.0": "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559", - "untildify@3.0.3": "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9", - "upath@^1.1.1": "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894", - "update-browserslist-db@^1.0.9": "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3", - "update-check@1.5.3": "https://registry.yarnpkg.com/update-check/-/update-check-1.5.3.tgz#45240fcfb8755a7c7fa68bbdd9eda026a41639ed", - "uri-js@^4.2.2": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e", - "urix@^0.1.0": "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72", - "url-join@4.0.0": "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a", - "url-loader@~4.1.0": "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2", - "url-parse-lax@^3.0.0": "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c", - "url-parse@^1.4.3": "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1", - "url-parse@^1.4.7": "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1", - "url-parse@^1.5.9": "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1", - "url@^0.11.0": "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1", - "use-sync-external-store@^1.0.0": "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a", - "use@^3.1.0": "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f", - "util-deprecate@^1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "util-deprecate@^1.0.2": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "util-deprecate@~1.0.1": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "util.promisify@1.0.0": "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030", - "util.promisify@~1.0.0": "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee", - "util@0.10.3": "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9", - "util@^0.11.0": "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61", - "utila@~0.4": "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c", - "utils-merge@1.0.1": "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713", - "uuid@^3.3.2": "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee", - "uuid@^3.4.0": "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee", - "uuid@^7.0.3": "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b", - "uuid@^8.0.0": "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2", - "uuid@^8.3.2": "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2", - "valid-url@~1.0.9": "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200", - "validate-npm-package-name@^3.0.0": "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e", - "vary@~1.1.2": "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc", - "vendors@^1.0.0": "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e", - "vlq@^1.0.0": "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468", - "vm-browserify@^1.0.1": "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0", - "walker@^1.0.7": "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f", - "watchpack-chokidar2@^2.0.1": "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957", - "watchpack@^1.6.1": "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453", - "wbuf@^1.1.0": "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df", - "wbuf@^1.7.3": "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df", - "wcwidth@^1.0.1": "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8", - "webidl-conversions@^3.0.0": "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871", - "webpack-dev-middleware@^3.7.2": "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5", - "webpack-dev-server@3.11.0": "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c", - "webpack-log@^2.0.0": "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f", - "webpack-manifest-plugin@~2.2.0": "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16", - "webpack-sources@^1.1.0": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933", - "webpack-sources@^1.4.0": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933", - "webpack-sources@^1.4.1": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933", - "webpack-sources@^1.4.3": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933", - "webpack@4.43.0": "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6", - "websocket-driver@0.6.5": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36", - "websocket-driver@>=0.5.1": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760", - "websocket-extensions@>=0.1.1": "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42", - "whatwg-fetch@^3.0.0": "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c", - "whatwg-url@^5.0.0": "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d", - "which-boxed-primitive@^1.0.2": "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6", - "which-module@^2.0.0": "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a", - "which-typed-array@^1.1.9": "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6", - "which@^1.2.9": "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a", - "which@^1.3.1": "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a", - "which@^2.0.1": "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1", - "widest-line@^3.1.0": "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca", - "with-open-file@^0.1.6": "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729", - "wonka@^4.0.14": "https://registry.yarnpkg.com/wonka/-/wonka-4.0.15.tgz#9aa42046efa424565ab8f8f451fcca955bf80b89", - "wonka@^6.1.2": "https://registry.yarnpkg.com/wonka/-/wonka-6.1.2.tgz#2c66fa5b26a12f002a03619b988258313d0b5352", - "worker-farm@^1.7.0": "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8", - "worker-rpc@^0.1.0": "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5", - "wrap-ansi@^5.1.0": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09", - "wrap-ansi@^6.2.0": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53", - "wrap-ansi@^7.0.0": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43", - "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", - "write-file-atomic@^2.3.0": "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481", - "ws@^6.1.4": "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e", - "ws@^6.2.1": "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e", - "ws@^7": "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591", - "ws@^7.5.1": "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591", - "xcode@^3.0.1": "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c", - "xdl@59.3.0": "https://registry.yarnpkg.com/xdl/-/xdl-59.3.0.tgz#d60bd59e2118c033dd669a1ae869726bb075c7c9", - "xml2js@0.4.23": "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66", - "xmlbuilder@^14.0.0": "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c", - "xmlbuilder@^15.1.1": "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5", - "xmlbuilder@~11.0.0": "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3", - "xtend@^4.0.0": "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54", - "xtend@~4.0.1": "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54", - "y18n@^4.0.0": "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf", - "yallist@^3.0.2": "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd", - "yallist@^4.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72", - "yargs-parser@^13.1.2": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38", - "yargs-parser@^18.1.2": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0", - "yargs@^13.3.2": "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd", - "yargs@^15.1.0": "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8", - "yargs@^15.3.1": "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8", - "yocto-queue@^0.1.0": "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + "@ampproject/remapping@^2.1.0": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "@babel/code-frame@7.10.4": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "@babel/code-frame@^7.0.0": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "@babel/code-frame@^7.18.6": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "@babel/code-frame@^7.5.5": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "@babel/code-frame@^7.8.3": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "@babel/code-frame@~7.10.4": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "@babel/compat-data@^7.17.7": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "@babel/compat-data@^7.20.1": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "@babel/compat-data@^7.20.5": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "@babel/core@7.9.0": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "@babel/core@^7.12.9": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "@babel/core@^7.13.16": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "@babel/core@^7.14.0": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "@babel/generator@^7.14.0": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "@babel/generator@^7.20.7": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "@babel/generator@^7.9.0": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "@babel/helper-annotate-as-pure@^7.18.6": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "@babel/helper-compilation-targets@^7.17.7": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "@babel/helper-compilation-targets@^7.18.9": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "@babel/helper-compilation-targets@^7.20.0": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "@babel/helper-compilation-targets@^7.20.7": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "@babel/helper-create-class-features-plugin@^7.18.6": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "@babel/helper-create-class-features-plugin@^7.20.12": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "@babel/helper-create-class-features-plugin@^7.20.5": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "@babel/helper-create-class-features-plugin@^7.20.7": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "@babel/helper-create-regexp-features-plugin@^7.18.6": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "@babel/helper-create-regexp-features-plugin@^7.20.5": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "@babel/helper-define-polyfill-provider@^0.3.3": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "@babel/helper-environment-visitor@^7.18.9": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "@babel/helper-explode-assignable-expression@^7.18.6": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "@babel/helper-function-name@^7.18.9": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "@babel/helper-function-name@^7.19.0": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "@babel/helper-hoist-variables@^7.18.6": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "@babel/helper-member-expression-to-functions@^7.20.7": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "@babel/helper-module-imports@^7.18.6": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "@babel/helper-module-transforms@^7.18.6": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "@babel/helper-module-transforms@^7.20.11": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "@babel/helper-module-transforms@^7.9.0": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "@babel/helper-optimise-call-expression@^7.18.6": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "@babel/helper-plugin-utils@^7.0.0": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.10.4": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.12.13": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.14.5": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.16.7": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.18.6": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.18.9": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.19.0": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.20.2": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.8.0": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-plugin-utils@^7.8.3": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "@babel/helper-remap-async-to-generator@^7.18.9": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "@babel/helper-replace-supers@^7.18.6": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "@babel/helper-replace-supers@^7.20.7": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "@babel/helper-simple-access@^7.20.2": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "@babel/helper-split-export-declaration@^7.18.6": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "@babel/helper-string-parser@^7.19.4": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "@babel/helper-validator-identifier@^7.18.6": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "@babel/helper-validator-identifier@^7.19.1": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "@babel/helper-validator-option@^7.18.6": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "@babel/helper-wrap-function@^7.18.9": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "@babel/helpers@^7.20.7": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "@babel/helpers@^7.9.0": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "@babel/highlight@^7.10.4": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "@babel/highlight@^7.18.6": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "@babel/parser@^7.13.16": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "@babel/parser@^7.14.0": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "@babel/parser@^7.20.13": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "@babel/parser@^7.20.7": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "@babel/parser@^7.9.0": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "@babel/plugin-proposal-async-generator-functions@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "@babel/plugin-proposal-async-generator-functions@^7.20.1": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "@babel/plugin-proposal-class-properties@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "@babel/plugin-proposal-class-properties@^7.13.0": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "@babel/plugin-proposal-class-properties@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "@babel/plugin-proposal-class-static-block@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "@babel/plugin-proposal-decorators@^7.12.9": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz", + "@babel/plugin-proposal-dynamic-import@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "@babel/plugin-proposal-export-default-from@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz", + "@babel/plugin-proposal-export-namespace-from@^7.18.9": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "@babel/plugin-proposal-json-strings@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "@babel/plugin-proposal-numeric-separator@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "@babel/plugin-proposal-object-rest-spread@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "@babel/plugin-proposal-object-rest-spread@^7.12.13": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "@babel/plugin-proposal-object-rest-spread@^7.20.2": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "@babel/plugin-proposal-optional-catch-binding@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "@babel/plugin-proposal-optional-catch-binding@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "@babel/plugin-proposal-optional-chaining@^7.0.0": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "@babel/plugin-proposal-optional-chaining@^7.13.12": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "@babel/plugin-proposal-optional-chaining@^7.18.9": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "@babel/plugin-proposal-optional-chaining@^7.20.7": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "@babel/plugin-proposal-private-methods@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "@babel/plugin-proposal-private-property-in-object@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "@babel/plugin-proposal-unicode-property-regex@^7.18.6": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "@babel/plugin-proposal-unicode-property-regex@^7.4.4": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "@babel/plugin-syntax-async-generators@^7.8.4": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "@babel/plugin-syntax-class-properties@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "@babel/plugin-syntax-class-properties@^7.12.13": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "@babel/plugin-syntax-class-static-block@^7.14.5": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "@babel/plugin-syntax-decorators@^7.19.0": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", + "@babel/plugin-syntax-dynamic-import@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "@babel/plugin-syntax-dynamic-import@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "@babel/plugin-syntax-export-default-from@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz", + "@babel/plugin-syntax-export-default-from@^7.18.6": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz", + "@babel/plugin-syntax-export-namespace-from@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "@babel/plugin-syntax-flow@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "@babel/plugin-syntax-flow@^7.18.6": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "@babel/plugin-syntax-flow@^7.2.0": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "@babel/plugin-syntax-import-assertions@^7.20.0": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "@babel/plugin-syntax-json-strings@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "@babel/plugin-syntax-jsx@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "@babel/plugin-syntax-jsx@^7.18.6": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "@babel/plugin-syntax-numeric-separator@^7.10.4": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "@babel/plugin-syntax-object-rest-spread@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "@babel/plugin-syntax-object-rest-spread@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "@babel/plugin-syntax-optional-catch-binding@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "@babel/plugin-syntax-optional-chaining@^7.0.0": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "@babel/plugin-syntax-optional-chaining@^7.8.3": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "@babel/plugin-syntax-private-property-in-object@^7.14.5": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "@babel/plugin-syntax-top-level-await@^7.14.5": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "@babel/plugin-syntax-typescript@^7.20.0": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "@babel/plugin-transform-arrow-functions@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "@babel/plugin-transform-arrow-functions@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "@babel/plugin-transform-async-to-generator@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "@babel/plugin-transform-async-to-generator@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "@babel/plugin-transform-block-scoped-functions@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "@babel/plugin-transform-block-scoped-functions@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "@babel/plugin-transform-block-scoping@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "@babel/plugin-transform-block-scoping@^7.20.2": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "@babel/plugin-transform-classes@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "@babel/plugin-transform-classes@^7.20.2": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "@babel/plugin-transform-computed-properties@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "@babel/plugin-transform-computed-properties@^7.18.9": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "@babel/plugin-transform-destructuring@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "@babel/plugin-transform-destructuring@^7.20.2": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "@babel/plugin-transform-dotall-regex@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "@babel/plugin-transform-dotall-regex@^7.4.4": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "@babel/plugin-transform-duplicate-keys@^7.18.9": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "@babel/plugin-transform-exponentiation-operator@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "@babel/plugin-transform-exponentiation-operator@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "@babel/plugin-transform-flow-strip-types@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "@babel/plugin-transform-flow-strip-types@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", + "@babel/plugin-transform-for-of@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "@babel/plugin-transform-for-of@^7.18.8": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "@babel/plugin-transform-function-name@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "@babel/plugin-transform-function-name@^7.18.9": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "@babel/plugin-transform-literals@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "@babel/plugin-transform-literals@^7.18.9": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "@babel/plugin-transform-member-expression-literals@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "@babel/plugin-transform-member-expression-literals@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "@babel/plugin-transform-modules-amd@^7.19.6": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "@babel/plugin-transform-modules-commonjs@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "@babel/plugin-transform-modules-commonjs@^7.13.8": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "@babel/plugin-transform-modules-commonjs@^7.19.6": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "@babel/plugin-transform-modules-systemjs@^7.19.6": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "@babel/plugin-transform-modules-umd@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "@babel/plugin-transform-new-target@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "@babel/plugin-transform-object-super@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "@babel/plugin-transform-object-super@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "@babel/plugin-transform-parameters@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "@babel/plugin-transform-parameters@^7.20.1": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "@babel/plugin-transform-parameters@^7.20.7": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "@babel/plugin-transform-property-literals@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "@babel/plugin-transform-property-literals@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "@babel/plugin-transform-react-display-name@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "@babel/plugin-transform-react-jsx-self@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "@babel/plugin-transform-react-jsx-source@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "@babel/plugin-transform-react-jsx@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz", + "@babel/plugin-transform-react-jsx@^7.12.17": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz", + "@babel/plugin-transform-regenerator@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "@babel/plugin-transform-reserved-words@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "@babel/plugin-transform-runtime@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "@babel/plugin-transform-shorthand-properties@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "@babel/plugin-transform-shorthand-properties@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "@babel/plugin-transform-spread@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "@babel/plugin-transform-spread@^7.19.0": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "@babel/plugin-transform-sticky-regex@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "@babel/plugin-transform-sticky-regex@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "@babel/plugin-transform-template-literals@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "@babel/plugin-transform-template-literals@^7.18.9": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "@babel/plugin-transform-typeof-symbol@^7.18.9": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "@babel/plugin-transform-typescript@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz", + "@babel/plugin-transform-typescript@^7.5.0": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz", + "@babel/plugin-transform-unicode-escapes@^7.18.10": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "@babel/plugin-transform-unicode-regex@^7.0.0": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "@babel/plugin-transform-unicode-regex@^7.18.6": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "@babel/preset-env@^7.12.9": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "@babel/preset-flow@^7.13.13": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", + "@babel/preset-modules@^0.1.5": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "@babel/preset-typescript@^7.13.0": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "@babel/register@^7.13.16": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", + "@babel/runtime@7.9.0": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", + "@babel/runtime@^7.0.0": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "@babel/runtime@^7.14.0": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "@babel/runtime@^7.18.6": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "@babel/runtime@^7.8.4": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "@babel/template@^7.0.0": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "@babel/template@^7.18.10": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "@babel/template@^7.20.7": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "@babel/template@^7.8.6": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "@babel/traverse@^7.14.0": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/traverse@^7.20.10": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/traverse@^7.20.12": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/traverse@^7.20.13": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/traverse@^7.20.5": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/traverse@^7.20.7": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/traverse@^7.9.0": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "@babel/types@^7.0.0": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.18.6": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.18.9": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.19.0": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.20.0": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.20.2": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.20.5": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.20.7": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.4.4": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@babel/types@^7.9.0": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "@colors/colors@1.5.0": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "@egjs/hammerjs@^2.0.17": "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124", + "@expo/apple-utils@0.0.0-alpha.31": "https://registry.npmjs.org/@expo/apple-utils/-/apple-utils-0.0.0-alpha.31.tgz", + "@expo/bunyan@4.0.0": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", + "@expo/bunyan@^4.0.0": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", + "@expo/cli@0.4.11": "https://registry.npmjs.org/@expo/cli/-/cli-0.4.11.tgz", + "@expo/code-signing-certificates@0.0.5": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "@expo/config-plugins@4.1.5": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-4.1.5.tgz", + "@expo/config-plugins@5.0.4": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "@expo/config-plugins@~5.0.3": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "@expo/config-types@^45.0.0": "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz", + "@expo/config-types@^47.0.0": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "@expo/config@6.0.24": "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz", + "@expo/config@7.0.3": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "@expo/config@~7.0.2": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "@expo/dev-server@0.1.115": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.115.tgz", + "@expo/dev-server@0.1.124": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.124.tgz", + "@expo/devcert@^1.0.0": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", + "@expo/image-utils@0.3.21": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.21.tgz", + "@expo/image-utils@0.3.22": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", + "@expo/image-utils@0.3.23": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz", + "@expo/json-file@8.2.36": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "@expo/json-file@8.2.37": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", + "@expo/json-file@^8.2.35": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", + "@expo/metro-config@0.3.18": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.3.18.tgz", + "@expo/metro-config@~0.5.0": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz", + "@expo/metro-config@~0.5.1": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz", + "@expo/osascript@2.0.33": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "@expo/osascript@^2.0.31": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "@expo/package-manager@0.0.56": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.56.tgz", + "@expo/package-manager@~0.0.53": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.57.tgz", + "@expo/plist@0.0.18": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "@expo/plist@0.0.20": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "@expo/plist@^0.0.18": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "@expo/prebuild-config@4.0.3": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-4.0.3.tgz", + "@expo/prebuild-config@5.0.7": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz", + "@expo/rudder-sdk-node@1.1.1": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "@expo/schemer@1.4.4": "https://registry.npmjs.org/@expo/schemer/-/schemer-1.4.4.tgz", + "@expo/sdk-runtime-versions@^1.0.0": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "@expo/spawn-async@1.5.0": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", + "@expo/spawn-async@^1.5.0": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz", + "@expo/vector-icons@^13.0.0": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", + "@expo/webpack-config@0.17.4": "https://registry.npmjs.org/@expo/webpack-config/-/webpack-config-0.17.4.tgz", + "@expo/xcpretty@^4.1.0": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz", + "@expo/xcpretty@^4.2.1": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz", + "@gar/promisify@^1.0.1": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "@graphql-typed-document-node/core@^3.1.0": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "@hapi/hoek@^9.0.0": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "@hapi/topo@^5.0.0": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "@jest/create-cache-key-function@^29.0.3": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.4.0.tgz", + "@jest/schemas@^29.4.0": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", + "@jest/types@^26.6.2": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "@jest/types@^27.5.1": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "@jest/types@^29.4.0": "https://registry.npmjs.org/@jest/types/-/types-29.4.0.tgz", + "@jridgewell/gen-mapping@^0.1.0": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "@jridgewell/gen-mapping@^0.3.2": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "@jridgewell/resolve-uri@3.1.0": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "@jridgewell/set-array@^1.0.0": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "@jridgewell/set-array@^1.0.1": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "@jridgewell/sourcemap-codec@1.4.14": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "@jridgewell/sourcemap-codec@^1.4.10": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "@jridgewell/trace-mapping@^0.3.9": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "@nodelib/fs.scandir@2.1.5": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "@nodelib/fs.stat@2.0.5": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "@nodelib/fs.stat@^2.0.2": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "@nodelib/fs.walk@^1.2.3": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "@npmcli/fs@^1.0.0": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "@npmcli/move-file@^1.0.1": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "@react-native-community/cli-clean@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", + "@react-native-community/cli-config@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", + "@react-native-community/cli-debugger-ui@^9.0.0": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", + "@react-native-community/cli-doctor@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", + "@react-native-community/cli-hermes@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz", + "@react-native-community/cli-platform-android@9.2.1": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", + "@react-native-community/cli-platform-android@^9.3.1": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz", + "@react-native-community/cli-platform-ios@9.2.1": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", + "@react-native-community/cli-platform-ios@^9.3.0": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", + "@react-native-community/cli-plugin-metro@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", + "@react-native-community/cli-server-api@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "@react-native-community/cli-tools@^9.2.1": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", + "@react-native-community/cli-types@^9.1.0": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", + "@react-native-community/cli@9.2.1": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", + "@react-native/assets@1.0.0": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", + "@react-native/normalize-color@2.0.0": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", + "@react-native/normalize-color@^2.0.0": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz", + "@react-native/polyfills@2.0.0": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", + "@segment/loosely-validate-event@^2.0.0": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "@sideway/address@^4.1.3": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "@sideway/formula@^3.0.0": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "@sideway/pinpoint@^2.0.0": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "@sinclair/typebox@^0.25.16": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", + "@sindresorhus/is@^0.14.0": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "@sindresorhus/is@^4.0.0": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "@szmarczak/http-timer@^1.1.2": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "@szmarczak/http-timer@^4.0.5": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "@types/cacheable-request@^6.0.1": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "@types/glob@^7.1.1": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "@types/hammerjs@^2.0.36": "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa", + "@types/html-minifier-terser@^5.0.0": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "@types/http-cache-semantics@*": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "@types/istanbul-lib-coverage@*": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "@types/istanbul-lib-coverage@^2.0.0": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "@types/istanbul-lib-report@*": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "@types/istanbul-reports@^3.0.0": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "@types/json-schema@^7.0.5": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "@types/json-schema@^7.0.8": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "@types/keyv@^3.1.4": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "@types/minimatch@*": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "@types/node@*": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "@types/prop-types@*": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "@types/q@^1.5.1": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "@types/react-native@~0.70.6": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.9.tgz", + "@types/react@*": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", + "@types/react@~18.0.14": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", + "@types/responselike@^1.0.0": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "@types/retry@^0.12.0": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "@types/scheduler@*": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "@types/source-list-map@*": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "@types/tapable@^1": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "@types/tapable@^1.0.5": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "@types/uglify-js@*": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", + "@types/webpack-sources@*": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "@types/webpack@^4.4.31": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", + "@types/webpack@^4.41.8": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", + "@types/yargs-parser@*": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "@types/yargs@^15.0.0": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", + "@types/yargs@^16.0.0": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "@types/yargs@^17.0.8": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.20.tgz", + "@urql/core@2.3.6": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "@urql/core@>=2.3.1": "https://registry.npmjs.org/@urql/core/-/core-3.1.1.tgz", + "@urql/exchange-retry@0.3.0": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "@webassemblyjs/ast@1.9.0": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "@webassemblyjs/floating-point-hex-parser@1.9.0": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "@webassemblyjs/helper-api-error@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "@webassemblyjs/helper-buffer@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "@webassemblyjs/helper-code-frame@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "@webassemblyjs/helper-fsm@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "@webassemblyjs/helper-module-context@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "@webassemblyjs/helper-wasm-bytecode@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "@webassemblyjs/helper-wasm-section@1.9.0": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "@webassemblyjs/ieee754@1.9.0": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "@webassemblyjs/leb128@1.9.0": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "@webassemblyjs/utf8@1.9.0": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "@webassemblyjs/wasm-edit@1.9.0": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "@webassemblyjs/wasm-gen@1.9.0": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "@webassemblyjs/wasm-opt@1.9.0": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "@webassemblyjs/wasm-parser@1.9.0": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "@webassemblyjs/wast-parser@1.9.0": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "@webassemblyjs/wast-printer@1.9.0": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "@xmldom/xmldom@~0.7.0": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", + "@xmldom/xmldom@~0.7.7": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", + "@xtuc/ieee754@^1.2.0": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "@xtuc/long@4.2.2": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "abort-controller@^3.0.0": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "absolute-path@^0.0.0": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", + "accepts@^1.3.7": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "accepts@^1.3.8": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "accepts@~1.3.4": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "accepts@~1.3.5": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "accepts@~1.3.7": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "accepts@~1.3.8": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "acorn@^6.4.1": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "address@1.1.2": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "address@^1.0.1": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "agent-base@6": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "aggregate-error@^3.0.0": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "ajv-errors@^1.0.0": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "ajv-formats@^2.0.2": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "ajv-keywords@^3.1.0": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "ajv-keywords@^3.4.1": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "ajv-keywords@^3.5.2": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "ajv@^6.1.0": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "ajv@^6.10.2": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "ajv@^6.12.4": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "ajv@^6.12.5": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "ajv@^8.0.0": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "ajv@^8.1.0": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "alphanum-sort@^1.0.0": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "anser@^1.4.9": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "ansi-align@^3.0.0": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "ansi-colors@^3.0.0": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "ansi-escapes@^3.1.0": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "ansi-escapes@^4.2.1": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "ansi-fragments@^0.2.1": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "ansi-html@0.0.7": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "ansi-regex@^2.0.0": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "ansi-regex@^4.1.0": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "ansi-regex@^5.0.0": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "ansi-regex@^5.0.1": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "ansi-styles@^3.2.0": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "ansi-styles@^3.2.1": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "ansi-styles@^4.0.0": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "ansi-styles@^4.1.0": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "any-promise@^1.0.0": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "anymatch@^2.0.0": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "anymatch@^3.0.0": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "anymatch@^3.0.3": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "anymatch@~3.1.2": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "appdirsjs@^1.2.4": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "application-config-path@^0.1.0": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "aproba@^1.1.1": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "arg@4.1.0": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "argparse@^1.0.7": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "argparse@^2.0.1": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "arr-diff@^4.0.0": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "arr-flatten@^1.1.0": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "arr-union@^3.1.0": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "array-flatten@1.1.1": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "array-flatten@^2.1.0": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "array-union@^1.0.1": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "array-union@^2.1.0": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "array-uniq@^1.0.1": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "array-unique@^0.3.2": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "array.prototype.reduce@^1.0.5": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "arrify@^2.0.1": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "asap@~2.0.3": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "asap@~2.0.6": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "asn1.js@^5.2.0": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "assert@^1.1.1": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "assign-symbols@^1.0.0": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "ast-types@0.14.2": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "astral-regex@^1.0.0": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "async-each@^1.0.1": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "async-limiter@~1.0.0": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "async@^2.6.4": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "async@^3.2.2": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "async@~1.5": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "asynckit@^0.4.0": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "at-least-node@^1.0.0": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "atob@^2.1.2": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "available-typed-arrays@^1.0.5": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "axios@0.21.1": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "babel-core@^7.0.0-bridge.0": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "babel-loader@8.1.0": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "babel-plugin-module-resolver@^4.1.0": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", + "babel-plugin-polyfill-corejs2@^0.3.3": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "babel-plugin-polyfill-corejs3@^0.6.0": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "babel-plugin-polyfill-regenerator@^0.4.1": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "babel-plugin-react-native-web@~0.18.2": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.11.tgz", + "babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "babel-preset-expo@~9.2.2": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz", + "babel-preset-fbjs@^3.4.0": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "balanced-match@^1.0.0": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "base64-js@^1.0.2": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "base64-js@^1.1.2": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "base64-js@^1.2.3": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "base64-js@^1.3.1": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "base64-js@^1.5.1": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "base@^0.11.1": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "batch@0.6.1": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "better-opn@^3.0.1": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "better-opn@~3.0.2": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "big-integer@1.6.x": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "big-integer@^1.6.44": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "big.js@^5.2.2": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "binary-extensions@^1.0.0": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "binary-extensions@^2.0.0": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "bindings@^1.5.0": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "bl@^4.1.0": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "bluebird@^3.5.5": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "blueimp-md5@^2.10.0": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "bn.js@^4.0.0": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "bn.js@^4.1.0": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "bn.js@^4.11.9": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "bn.js@^5.0.0": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "bn.js@^5.1.1": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "body-parser@1.18.3": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "body-parser@1.19.0": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "body-parser@1.20.1": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "body-parser@^1.20.1": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "bonjour@^3.5.0": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "boolbase@^1.0.0": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "boolbase@~1.0.0": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "boxen@^5.0.1": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "bplist-creator@0.1.0": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "bplist-parser@0.2.0": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "bplist-parser@0.3.1": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "bplist-parser@^0.3.0": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "bplist-parser@^0.3.1": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "brace-expansion@^1.1.7": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "braces@^2.3.1": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "braces@^2.3.2": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "braces@^3.0.2": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "braces@~3.0.2": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "brorand@^1.0.1": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "brorand@^1.1.0": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "browserify-aes@^1.0.0": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "browserify-aes@^1.0.4": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "browserify-cipher@^1.0.0": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "browserify-des@^1.0.0": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "browserify-rsa@^4.0.0": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "browserify-rsa@^4.0.1": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "browserify-sign@^4.0.0": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "browserify-zlib@^0.2.0": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "browserslist@4.14.2": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", + "browserslist@^4.0.0": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "browserslist@^4.21.3": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "browserslist@^4.21.4": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "bser@2.1.1": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "buffer-alloc-unsafe@^1.1.0": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "buffer-alloc@^1.1.0": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "buffer-fill@^1.0.0": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "buffer-from@^1.0.0": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "buffer-indexof@^1.0.0": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "buffer-xor@^1.0.3": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "buffer@^4.3.0": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "buffer@^5.5.0": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "builtin-status-codes@^3.0.0": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "builtins@^1.0.3": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "bytes@3.0.0": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "bytes@3.1.0": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "bytes@3.1.2": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "cacache@^12.0.2": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "cacache@^15.0.5": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "cacache@^15.3.0": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "cache-base@^1.0.1": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "cacheable-lookup@^5.0.3": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "cacheable-request@^6.0.0": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "cacheable-request@^7.0.2": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "call-bind@^1.0.0": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "call-bind@^1.0.2": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "caller-callsite@^2.0.0": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "caller-path@^2.0.0": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "callsite@^1.0.0": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "callsites@^2.0.0": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "camel-case@^4.1.1": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "camelcase@^5.0.0": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "camelcase@^5.3.1": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "camelcase@^6.0.0": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "camelcase@^6.2.0": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "caniuse-api@^3.0.0": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "caniuse-lite@^1.0.0": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz", + "caniuse-lite@^1.0.30001125": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz", + "caniuse-lite@^1.0.30001400": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz", + "chalk@2.4.2": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "chalk@^2.0.0": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "chalk@^2.0.1": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "chalk@^2.4.1": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "chalk@^2.4.2": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "chalk@^4.0.0": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "chalk@^4.1.0": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "chalk@^4.1.2": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "charenc@0.0.2": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "charenc@~0.0.1": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "chokidar@^2.1.8": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "chokidar@^3.4.1": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "chownr@^1.1.1": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "chownr@^2.0.0": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "chrome-trace-event@^1.0.2": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "ci-info@^2.0.0": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "ci-info@^3.2.0": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "ci-info@^3.3.0": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "cipher-base@^1.0.0": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "cipher-base@^1.0.1": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "cipher-base@^1.0.3": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "class-utils@^0.3.5": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "clean-css@^4.2.3": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "clean-stack@^2.0.0": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "clean-webpack-plugin@^3.0.0": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "cli-boxes@^2.2.1": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "cli-cursor@^2.1.0": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "cli-cursor@^3.1.0": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "cli-spinners@^2.0.0": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "cli-spinners@^2.5.0": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "cli-table3@^0.6.0": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "cliui@^5.0.0": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "cliui@^6.0.0": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "clone-deep@^4.0.1": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "clone-response@^1.0.2": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "clone@^1.0.2": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "clone@^2.1.2": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "coa@^2.0.2": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "collection-visit@^1.0.0": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "color-convert@^1.9.0": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "color-convert@^1.9.3": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "color-convert@^2.0.1": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "color-name@1.1.3": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "color-name@^1.0.0": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "color-name@~1.1.4": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "color-string@^1.6.0": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "color@^3.0.0": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "colorette@^1.0.7": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "combined-stream@^1.0.6": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "combined-stream@^1.0.8": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "command-exists@^1.2.4": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "command-exists@^1.2.8": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "commander@2.17.1": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "commander@2.20.0": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "commander@^2.20.0": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "commander@^4.0.0": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "commander@^4.1.1": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "commander@^7.2.0": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "commander@^9.4.0": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "commander@~2.13.0": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "commondir@^1.0.1": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "compare-versions@^3.4.0": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "component-emitter@^1.2.1": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "component-type@^1.2.1": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", + "compressible@~2.0.16": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "compression@^1.7.1": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "compression@^1.7.4": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "concat-map@0.0.1": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "concat-stream@1.6.2": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "concat-stream@^1.5.0": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "connect-history-api-fallback@^1.6.0": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "connect@^3.6.5": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "connect@^3.7.0": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "console-browserify@^1.1.0": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "constants-browserify@^1.0.0": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "content-disposition@0.5.2": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "content-disposition@0.5.4": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "content-type@~1.0.4": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "convert-source-map@^1.7.0": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "cookie-signature@1.0.6": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "cookie@0.3.1": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "cookie@0.5.0": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "copy-concurrently@^1.0.0": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "copy-descriptor@^0.1.0": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "copy-webpack-plugin@~6.0.3": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.4.tgz", + "core-js-compat@^3.25.1": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "core-util-is@~1.0.0": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "cosmiconfig@^5.0.0": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "cosmiconfig@^5.0.5": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "cosmiconfig@^5.1.0": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "create-ecdh@^4.0.0": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "create-hash@^1.1.0": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "create-hash@^1.1.2": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "create-hash@^1.2.0": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "create-hmac@^1.1.0": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "create-hmac@^1.1.4": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "create-hmac@^1.1.7": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "create-react-class@^15.7.0": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "cross-fetch@^3.1.5": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "cross-spawn@7.0.3": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "cross-spawn@^6.0.0": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "cross-spawn@^6.0.5": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "cross-spawn@^7.0.3": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "crypt@0.0.2": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "crypt@~0.0.1": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "crypto-browserify@^3.11.0": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "crypto-random-string@^1.0.0": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "crypto-random-string@^2.0.0": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "css-color-names@0.0.4": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "css-color-names@^0.0.4": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "css-declaration-sorter@^4.0.1": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "css-in-js-utils@^3.1.0": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "css-loader@~3.6.0": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "css-select-base-adapter@^0.1.1": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "css-select@^2.0.0": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "css-select@^4.1.3": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "css-tree@1.0.0-alpha.37": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "css-tree@^1.1.2": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "css-what@^3.2.1": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "css-what@^6.0.1": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "cssesc@^3.0.0": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "cssnano-preset-default@^4.0.8": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "cssnano-util-get-arguments@^4.0.0": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "cssnano-util-get-match@^4.0.0": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "cssnano-util-raw-cache@^4.0.1": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "cssnano-util-same-parent@^4.0.0": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "cssnano@^4.1.10": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "csso@^4.0.2": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "csstype@^3.0.2": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "cyclist@^1.0.1": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "dag-map@~1.0.0": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "dateformat@3.0.3": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "dayjs@^1.8.15": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "debug@2": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "debug@2.6.9": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "debug@4": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "debug@^2.2.0": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "debug@^2.3.3": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "debug@^2.6.0": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "debug@^3.1.0": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "debug@^3.2.5": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "debug@^3.2.6": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "debug@^3.2.7": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "debug@^4.1.0": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "debug@^4.1.1": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "debug@^4.3.1": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "debug@^4.3.2": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "debug@^4.3.4": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "decache@4.4.0": "https://registry.npmjs.org/decache/-/decache-4.4.0.tgz", + "decamelize@^1.2.0": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "decode-uri-component@^0.2.0": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "decompress-response@^3.3.0": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "decompress-response@^6.0.0": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "deep-equal@^1.0.1": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "deep-extend@^0.6.0": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "deepmerge@^3.2.0": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "deepmerge@^4.0.0": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "default-gateway@^4.2.0": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "defaults@^1.0.3": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "defer-to-connect@^1.0.1": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "defer-to-connect@^2.0.0": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "define-lazy-prop@^2.0.0": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "define-properties@^1.1.2": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "define-properties@^1.1.3": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "define-properties@^1.1.4": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "define-property@^0.2.5": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "define-property@^1.0.0": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "define-property@^2.0.2": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "del@^4.1.1": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "del@^6.0.0": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "delayed-stream@~1.0.0": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "denodeify@^1.2.1": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "depd@2.0.0": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "depd@~1.1.2": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "des.js@^1.0.0": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "destroy@1.2.0": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "destroy@~1.0.4": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "detect-node@^2.0.4": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "detect-port-alt@1.1.6": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "diffie-hellman@^5.0.0": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "dir-glob@^3.0.1": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "dns-equal@^1.0.0": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "dns-packet@^1.3.1": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "dns-txt@^2.0.2": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "dom-converter@^0.2.0": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "dom-serializer@0": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "dom-serializer@^1.0.1": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "domain-browser@^1.1.1": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "domelementtype@1": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "domelementtype@^2.0.1": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "domelementtype@^2.2.0": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "domhandler@^3.0.0": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "domhandler@^4.0.0": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "domhandler@^4.2.0": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "domhandler@^4.3.1": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "domino@^2.1.6": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", + "domutils@^1.7.0": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "domutils@^2.0.0": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "domutils@^2.5.2": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "domutils@^2.8.0": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "dot-case@^3.0.4": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "dot-prop@^5.2.0": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "duplexer3@^0.1.4": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "duplexer@^0.1.1": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "duplexify@^3.4.2": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "duplexify@^3.6.0": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "ee-first@1.1.1": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "electron-to-chromium@^1.3.564": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "electron-to-chromium@^1.4.251": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "elliptic@^6.5.3": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "emoji-regex@^7.0.1": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "emoji-regex@^8.0.0": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "emojis-list@^3.0.0": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "encodeurl@~1.0.2": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "end-of-stream@^1.0.0": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "end-of-stream@^1.1.0": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "enhanced-resolve@^4.1.0": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "entities@^2.0.0": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "env-editor@^0.4.1": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "envinfo@^7.7.2": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "eol@^0.9.1": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "errno@^0.1.3": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "errno@~0.1.7": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "error-ex@^1.3.1": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "error-stack-parser@^2.0.6": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "errorhandler@^1.5.0": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "es-abstract@^1.17.2": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "es-abstract@^1.19.0": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "es-abstract@^1.20.4": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "es-array-method-boxes-properly@^1.0.0": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "es-set-tostringtag@^2.0.1": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "es-to-primitive@^1.2.1": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "escalade@^3.0.2": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "escalade@^3.1.1": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "escape-html@~1.0.3": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "escape-string-regexp@2.0.0": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "escape-string-regexp@^1.0.5": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "eslint-scope@^4.0.3": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "esprima@^4.0.0": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "esprima@~4.0.0": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "esrecurse@^4.1.0": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "estraverse@^4.1.1": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "estraverse@^5.2.0": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "esutils@^2.0.2": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "etag@~1.8.1": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "event-target-shim@^5.0.0": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "event-target-shim@^5.0.1": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "eventemitter3@^4.0.0": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "events@^3.0.0": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "eventsource@^1.0.7": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "evp_bytestokey@^1.0.0": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "evp_bytestokey@^1.0.3": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "exec-async@^2.2.0": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "execa@^1.0.0": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "expand-brackets@^2.1.4": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "expo-application@~5.0.1": "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz", + "expo-asset@~8.7.0": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz", + "expo-cli@^6.1.0": "https://registry.npmjs.org/expo-cli/-/expo-cli-6.1.0.tgz", + "expo-constants@~14.0.0": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz", + "expo-constants@~14.0.2": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz", + "expo-error-recovery@~4.0.1": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz", + "expo-file-system@~15.1.0": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz", + "expo-file-system@~15.1.1": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz", + "expo-font@~11.0.1": "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz", + "expo-keep-awake@~11.0.1": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz", + "expo-modules-autolinking@0.8.1": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz", + "expo-modules-autolinking@1.0.2": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz", + "expo-modules-core@1.1.1": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.1.1.tgz", + "expo-pwa@0.0.124": "https://registry.npmjs.org/expo-pwa/-/expo-pwa-0.0.124.tgz", + "expo-status-bar@~1.4.2": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.2.tgz", + "expo@~47.0.12": "https://registry.npmjs.org/expo/-/expo-47.0.13.tgz", + "express@4.16.4": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "express@^4.17.1": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "extend-shallow@^2.0.1": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "extend-shallow@^3.0.0": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "extend-shallow@^3.0.2": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "extglob@^2.0.4": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "fast-deep-equal@^3.1.1": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "fast-glob@^3.1.1": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "fast-glob@^3.2.4": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "fast-glob@^3.2.5": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "fast-glob@^3.2.9": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "fast-json-stable-stringify@^2.0.0": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "fast-loops@^1.1.3": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", + "fastq@^1.6.0": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "faye-websocket@^0.10.0": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "faye-websocket@~0.11.1": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "fb-watchman@^2.0.0": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "fbemitter@^3.0.0": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "fbjs-css-vars@^1.0.0": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "fbjs@^3.0.0": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "fbjs@^3.0.4": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "fetch-retry@^4.1.1": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "figgy-pudding@^3.5.1": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "file-loader@~6.0.0": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "file-uri-to-path@1.0.0": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "filesize@6.1.0": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", + "fill-range@^4.0.0": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "fill-range@^7.0.1": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "finalhandler@1.1.1": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "finalhandler@1.1.2": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "finalhandler@1.2.0": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "find-babel-config@^1.2.0": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "find-cache-dir@^2.0.0": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "find-cache-dir@^2.1.0": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "find-cache-dir@^3.3.1": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "find-up@4.1.0": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "find-up@^3.0.0": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "find-up@^4.0.0": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "find-up@^4.1.0": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "find-up@^5.0.0": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "find-up@~5.0.0": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "find-yarn-workspace-root@~2.0.0": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "flow-parser@0.*": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.198.1.tgz", + "flow-parser@^0.121.0": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", + "flush-write-stream@^1.0.0": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "follow-redirects@^1.0.0": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "follow-redirects@^1.10.0": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "fontfaceobserver@^2.1.0": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "for-each@^0.3.3": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "for-in@^1.0.2": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "fork-ts-checker-webpack-plugin@4.1.6": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "form-data@^2.3.2": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "form-data@^3.0.1": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "forwarded@0.2.0": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "fragment-cache@^0.2.1": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "freeport-async@2.0.0": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "fresh@0.5.2": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "from2@^2.1.0": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "fs-extra@9.0.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "fs-extra@^1.0.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "fs-extra@^7.0.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "fs-extra@^8.1.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "fs-extra@^9.0.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "fs-extra@^9.1.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "fs-extra@~8.1.0": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "fs-minipass@^2.0.0": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "fs-write-stream-atomic@^1.0.8": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "fs.realpath@^1.0.0": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "fsevents@^1.2.7": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "fsevents@^2.1.2": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "fsevents@~2.3.2": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "function-bind@^1.1.1": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "function.prototype.name@^1.1.5": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "functions-have-names@^1.2.2": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "gensync@^1.0.0-beta.1": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "gensync@^1.0.0-beta.2": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "get-caller-file@^2.0.1": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "get-intrinsic@^1.0.2": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "get-intrinsic@^1.1.1": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "get-intrinsic@^1.1.3": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "get-port@^3.2.0": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "get-stream@^4.0.0": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "get-stream@^4.1.0": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "get-stream@^5.1.0": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "get-symbol-description@^1.0.0": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "get-value@^2.0.3": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "get-value@^2.0.6": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "getenv@^1.0.0": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "glob-parent@^3.1.0": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "glob-parent@^5.1.1": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "glob-parent@^5.1.2": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "glob-parent@~5.1.2": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "glob@7.1.6": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "glob@^6.0.1": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "glob@^7.0.3": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "glob@^7.1.2": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "glob@^7.1.3": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "glob@^7.1.4": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "glob@^7.1.6": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "global-modules@2.0.0": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "global-prefix@^3.0.0": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "globals@^11.1.0": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "globalthis@^1.0.3": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "globby@11.0.1": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "globby@^11.0.1": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "globby@^6.1.0": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "gopd@^1.0.1": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "got@^11.1.4": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "got@^9.6.0": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "graceful-fs@^4.1.11": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.1.15": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.1.2": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.1.3": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.1.6": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.1.9": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.2.0": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.2.4": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graceful-fs@^4.2.9": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "graphql-tag@^2.10.1": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "graphql@15.8.0": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "gzip-size@5.1.1": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "handle-thing@^2.0.0": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "has-bigints@^1.0.1": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "has-bigints@^1.0.2": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "has-flag@^3.0.0": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "has-flag@^4.0.0": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "has-property-descriptors@^1.0.0": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "has-proto@^1.0.1": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "has-symbols@^1.0.1": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "has-symbols@^1.0.2": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "has-symbols@^1.0.3": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "has-tostringtag@^1.0.0": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "has-value@^0.3.1": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "has-value@^1.0.0": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "has-values@^0.1.4": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "has-values@^1.0.0": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "has@^1.0.0": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "has@^1.0.3": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "hasbin@1.2.3": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "hash-base@^3.0.0": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "hash.js@^1.0.0": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "hash.js@^1.0.3": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "hashids@1.1.4": "https://registry.npmjs.org/hashids/-/hashids-1.1.4.tgz", + "he@1.2.0": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "he@^1.2.0": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "hermes-estree@0.8.0": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", + "hermes-parser@0.8.0": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", + "hermes-profile-transformer@^0.0.6": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "hex-color-regex@^1.1.0": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "hmac-drbg@^1.0.1": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "hoist-non-react-statics@^3.3.0": "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45", + "hosted-git-info@^2.6.0": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "hosted-git-info@^3.0.2": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "hpack.js@^2.1.6": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "hsl-regex@^1.0.0": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "hsla-regex@^1.0.0": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "html-entities@^1.3.1": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "html-loader@~1.1.0": "https://registry.npmjs.org/html-loader/-/html-loader-1.1.0.tgz", + "html-minifier-terser@^5.0.1": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "html-minifier-terser@^5.0.5": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "html-webpack-plugin@~4.3.0": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz", + "htmlparser2@^4.1.0": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "htmlparser2@^6.1.0": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "http-cache-semantics@^4.0.0": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "http-deceiver@^1.2.7": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "http-errors@1.6.3": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "http-errors@1.7.2": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "http-errors@2.0.0": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "http-errors@~1.6.2": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "http-errors@~1.6.3": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "http-parser-js@>=0.5.1": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "http-proxy-middleware@0.19.1": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "http-proxy@^1.17.0": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "http2-wrapper@^1.0.0-beta.5.2": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "https-browserify@^1.0.0": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "https-proxy-agent@^5.0.1": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "hyphenate-style-name@^1.0.3": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "iconv-lite@0.4.23": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "iconv-lite@0.4.24": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "iconv-lite@^0.4.4": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "icss-utils@^4.0.0": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "icss-utils@^4.1.1": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "ieee754@^1.1.13": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "ieee754@^1.1.4": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "iferr@^0.1.5": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "ignore@^5.1.4": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "ignore@^5.2.0": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "image-size@^0.6.0": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", + "image-size@^1.0.0": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "immer@8.0.1": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", + "import-fresh@^2.0.0": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "import-local@^2.0.0": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "imurmurhash@^0.1.4": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "indent-string@^4.0.0": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "indexes-of@^1.0.1": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "infer-owner@^1.0.3": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "infer-owner@^1.0.4": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "inflight@^1.0.4": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits@2": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "inherits@2.0.1": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "inherits@2.0.3": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "inherits@2.0.4": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "inherits@^2.0.1": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "inherits@^2.0.3": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "inherits@^2.0.4": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "inherits@~2.0.1": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "inherits@~2.0.3": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "ini@^1.3.5": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "ini@~1.3.0": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "inline-style-prefixer@^6.0.1": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", + "internal-ip@4.3.0": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "internal-ip@^4.3.0": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "internal-slot@^1.0.4": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "invariant@^2.2.4": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "ip-regex@^2.1.0": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "ip@^1.1.0": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "ip@^1.1.5": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "ipaddr.js@1.9.1": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "ipaddr.js@^1.9.0": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "is-absolute-url@^2.0.0": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "is-absolute-url@^3.0.3": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "is-accessor-descriptor@^0.1.6": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "is-accessor-descriptor@^1.0.0": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "is-arguments@^1.0.4": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "is-array-buffer@^3.0.1": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "is-arrayish@^0.2.1": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "is-arrayish@^0.3.1": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "is-bigint@^1.0.1": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "is-binary-path@^1.0.0": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "is-binary-path@~2.1.0": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "is-boolean-object@^1.1.0": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "is-buffer@^1.1.5": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "is-buffer@~1.1.1": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "is-buffer@~1.1.6": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "is-callable@^1.1.3": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "is-callable@^1.1.4": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "is-callable@^1.2.7": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "is-color-stop@^1.0.0": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "is-core-module@^2.9.0": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "is-data-descriptor@^0.1.4": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "is-data-descriptor@^1.0.0": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "is-date-object@^1.0.1": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "is-descriptor@^0.1.0": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "is-descriptor@^1.0.0": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "is-descriptor@^1.0.2": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "is-directory@^0.3.1": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "is-docker@^2.0.0": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "is-docker@^2.1.1": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "is-extendable@^0.1.0": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "is-extendable@^0.1.1": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "is-extendable@^1.0.1": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "is-extglob@^1.0.0": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "is-extglob@^2.1.0": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "is-extglob@^2.1.1": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "is-fullwidth-code-point@^2.0.0": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "is-fullwidth-code-point@^3.0.0": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "is-glob@^2.0.0": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "is-glob@^3.1.0": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "is-glob@^4.0.0": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "is-glob@^4.0.1": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "is-glob@~4.0.1": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "is-interactive@^1.0.0": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "is-invalid-path@^0.1.0": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "is-negative-zero@^2.0.2": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "is-number-object@^1.0.4": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "is-number@^3.0.0": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "is-number@^7.0.0": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "is-obj@^2.0.0": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "is-path-cwd@^2.0.0": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "is-path-cwd@^2.2.0": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "is-path-in-cwd@^2.0.0": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "is-path-inside@^2.1.0": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "is-path-inside@^3.0.2": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "is-plain-object@^2.0.3": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "is-plain-object@^2.0.4": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "is-port-reachable@^2.0.1": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-2.0.1.tgz", + "is-reachable@^4.0.0": "https://registry.npmjs.org/is-reachable/-/is-reachable-4.0.0.tgz", + "is-regex@^1.0.4": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "is-regex@^1.1.4": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "is-resolvable@^1.0.0": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "is-root@2.1.0": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "is-root@^2.1.0": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "is-shared-array-buffer@^1.0.2": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "is-stream@^1.1.0": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "is-stream@^2.0.0": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "is-string@^1.0.5": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "is-string@^1.0.7": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "is-symbol@^1.0.2": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "is-symbol@^1.0.3": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "is-typed-array@^1.1.10": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "is-typed-array@^1.1.9": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "is-unicode-supported@^0.1.0": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "is-valid-path@^0.1.1": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "is-weakref@^1.0.2": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "is-windows@^1.0.2": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "is-wsl@^1.1.0": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "is-wsl@^2.0.0": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "is-wsl@^2.1.1": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "is-wsl@^2.2.0": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "isarray@1.0.0": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "isarray@^1.0.0": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "isarray@~1.0.0": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "isexe@^2.0.0": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "isobject@^2.0.0": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "isobject@^3.0.0": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "isobject@^3.0.1": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "jest-get-type@^26.3.0": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "jest-regex-util@^27.0.6": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "jest-serializer@^27.0.6": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "jest-util@^27.2.0": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "jest-validate@^26.5.2": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "jest-worker@^26.2.1": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "jest-worker@^27.2.0": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "jimp-compact@0.16.1": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "joi@^17.2.1": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "joi@^17.4.0": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "join-component@^1.1.0": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "js-tokens@^3.0.0 || ^4.0.0": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "js-tokens@^4.0.0": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "js-yaml@^3.13.1": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "js-yaml@^4.1.0": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "jsc-android@^250230.2.1": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", + "jscodeshift@^0.13.1": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", + "jsesc@^2.5.1": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "jsesc@~0.5.0": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "json-buffer@3.0.0": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "json-buffer@3.0.1": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "json-parse-better-errors@^1.0.1": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "json-parse-better-errors@^1.0.2": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "json-schema-deref-sync@^0.13.0": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "json-schema-traverse@^0.4.1": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "json-schema-traverse@^1.0.0": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "json3@^3.3.2": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "json5@^0.5.1": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "json5@^1.0.1": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "json5@^2.1.2": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "json5@^2.2.2": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "jsonfile@^2.1.0": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "jsonfile@^4.0.0": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "jsonfile@^6.0.1": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "keychain@1.3.0": "https://registry.npmjs.org/keychain/-/keychain-1.3.0.tgz", + "keyv@^3.0.0": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "keyv@^4.0.0": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "killable@^1.0.1": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "kind-of@^3.0.2": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "kind-of@^3.0.3": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "kind-of@^3.2.0": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "kind-of@^4.0.0": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "kind-of@^5.0.0": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "kind-of@^6.0.0": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "kind-of@^6.0.2": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "klaw@^1.0.0": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "kleur@^3.0.3": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "last-call-webpack-plugin@^3.0.0": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "latest-version@5.1.0": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "leven@^3.1.0": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "lines-and-columns@^1.1.6": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "loader-runner@^2.4.0": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "loader-utils@2.0.0": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "loader-utils@^1.1.0": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "loader-utils@^1.2.3": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "loader-utils@^1.4.0": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "loader-utils@^2.0.0": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "locate-path@^3.0.0": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "locate-path@^5.0.0": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "locate-path@^6.0.0": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "lodash.debounce@^4.0.8": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "lodash.memoize@^4.1.2": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "lodash.merge@^4.6.2": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "lodash.throttle@^4.1.1": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "lodash.uniq@^4.5.0": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "lodash@>=3.5 <5": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.11": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.13": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.14": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.15": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.19": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.20": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.21": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.4": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "lodash@^4.17.5": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "log-symbols@^2.2.0": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "log-symbols@^4.1.0": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "logkitty@^0.7.1": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "loglevel@^1.6.8": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "loose-envify@^1.0.0": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "loose-envify@^1.1.0": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "loose-envify@^1.3.1": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "loose-envify@^1.4.0": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "lower-case@^2.0.2": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "lowercase-keys@^1.0.0": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "lowercase-keys@^1.0.1": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "lowercase-keys@^2.0.0": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "lru-cache@^5.1.1": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "lru-cache@^6.0.0": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "make-dir@^2.0.0": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "make-dir@^2.1.0": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "make-dir@^3.0.2": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "makeerror@1.0.12": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "map-cache@^0.2.2": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "map-visit@^1.0.0": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "md5-file@^3.2.3": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "md5.js@^1.3.4": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "md5@^2.2.1": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "md5@~2.2.0": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "md5hex@1.0.0": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "md5hex@^1.0.0": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "mdn-data@2.0.14": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "mdn-data@2.0.4": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "media-typer@0.3.0": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "memoize-one@^5.0.0": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "memory-cache@~0.2.0": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "memory-fs@^0.4.1": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "memory-fs@^0.5.0": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "merge-descriptors@1.0.1": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "merge-stream@^2.0.0": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "merge2@^1.3.0": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "merge2@^1.4.1": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "methods@~1.1.2": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "metro-babel-transformer@0.72.3": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz", + "metro-cache-key@0.72.3": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz", + "metro-cache@0.72.3": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz", + "metro-config@0.72.3": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz", + "metro-core@0.72.3": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz", + "metro-file-map@0.72.3": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz", + "metro-hermes-compiler@0.72.3": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz", + "metro-inspector-proxy@0.72.3": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz", + "metro-minify-uglify@0.72.3": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz", + "metro-react-native-babel-preset@0.72.3": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", + "metro-react-native-babel-transformer@0.72.3": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz", + "metro-resolver@0.72.3": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz", + "metro-runtime@0.72.3": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz", + "metro-source-map@0.72.3": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz", + "metro-symbolicate@0.72.3": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz", + "metro-transform-plugins@0.72.3": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz", + "metro-transform-worker@0.72.3": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz", + "metro@0.72.3": "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz", + "microevent.ts@~0.1.1": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "micromatch@^3.1.10": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "micromatch@^3.1.4": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "micromatch@^4.0.2": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "micromatch@^4.0.4": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "miller-rabin@^4.0.0": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "mime-db@1.52.0": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "mime-db@>= 1.43.0 < 2": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "mime-types@^2.1.12": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "mime-types@^2.1.27": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "mime-types@~2.1.17": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "mime-types@~2.1.24": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "mime-types@~2.1.34": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "mime@1.4.1": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "mime@1.6.0": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "mime@^2.4.1": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "mime@^2.4.4": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "mimic-fn@^1.0.0": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "mimic-fn@^2.1.0": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "mimic-response@^1.0.0": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "mimic-response@^1.0.1": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "mimic-response@^3.1.0": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "mini-css-extract-plugin@^0.5.0": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", + "minimalistic-assert@^1.0.0": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "minimalistic-assert@^1.0.1": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "minimalistic-crypto-utils@^1.0.1": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "minimatch@2 || 3": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "minimatch@3.0.4": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "minimatch@^3.0.2": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "minimatch@^3.0.4": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "minimatch@^3.1.1": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "minimist@^1.2.0": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "minimist@^1.2.6": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "minipass-collect@^1.0.2": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "minipass-flush@^1.0.5": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "minipass-pipeline@^1.2.2": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "minipass@3.1.6": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "minipass@^3.0.0": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "minipass@^3.1.1": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "minipass@^4.0.0": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "minizlib@^2.1.1": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "mississippi@^3.0.0": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "mixin-deep@^1.2.0": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "mkdirp@^0.5.1": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "mkdirp@^0.5.3": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "mkdirp@^0.5.6": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "mkdirp@^1.0.3": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "mkdirp@^1.0.4": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "mkdirp@~0.5.1": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "move-concurrently@^1.0.1": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "ms@2.0.0": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "ms@2.1.2": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "ms@2.1.3": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "ms@^2.1.1": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "multicast-dns-service-types@^1.1.0": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "multicast-dns@^6.0.1": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "mv@2.1.1": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "mv@~2": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "mz@^2.7.0": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "nan@^2.12.1": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "nanomatch@^1.2.9": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "ncp@~2.0.0": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "needle@^2.5.2": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "negotiator@0.6.3": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "neo-async@^2.5.0": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "neo-async@^2.6.1": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "nested-error-stacks@~2.0.1": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "nice-try@^1.0.4": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "no-case@^3.0.4": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "nocache@^3.0.1": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "node-dir@^0.1.17": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "node-fetch@2.6.7": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "node-fetch@^2.2.0": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", + "node-fetch@^2.6.0": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", + "node-fetch@^2.6.1": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", + "node-fetch@^2.6.7": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", + "node-forge@0.10.0": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "node-forge@^0.10.0": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "node-forge@^1.2.1": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "node-forge@^1.3.1": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "node-html-parser@^1.2.12": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz", + "node-int64@^0.4.0": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "node-libs-browser@^2.2.1": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "node-releases@^1.1.61": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "node-releases@^2.0.6": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "node-stream-zip@^1.9.1": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "normalize-css-color@^1.0.2": "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz", + "normalize-path@^2.1.1": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "normalize-path@^3.0.0": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "normalize-path@~3.0.0": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "normalize-url@^3.0.0": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "normalize-url@^4.1.0": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "normalize-url@^6.0.1": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "npm-package-arg@6.1.0": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "npm-package-arg@^7.0.0": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "npm-run-path@^2.0.0": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "nth-check@^1.0.2": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "nth-check@^2.0.1": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "nullthrows@1.1.1": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "nullthrows@^1.1.1": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "ob1@0.72.3": "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz", + "object-assign@^4.0.1": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "object-assign@^4.1.0": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "object-assign@^4.1.1": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "object-copy@^0.1.0": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "object-inspect@^1.12.2": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "object-inspect@^1.9.0": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "object-is@^1.0.1": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "object-keys@^1.1.1": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "object-visit@^1.0.0": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "object.assign@^4.1.4": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "object.entries@^1.1.0": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "object.getownpropertydescriptors@^2.0.3": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "object.getownpropertydescriptors@^2.1.0": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "object.pick@^1.3.0": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "object.values@^1.1.0": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "obuf@^1.0.0": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "obuf@^1.1.2": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "on-finished@2.4.1": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "on-finished@~2.3.0": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "on-headers@~1.0.2": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "once@^1.3.0": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "once@^1.3.1": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "once@^1.4.0": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "onetime@^2.0.0": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "onetime@^5.1.0": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "open@^6.2.0": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "open@^7.0.2": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "open@^8.0.4": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "open@^8.3.0": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "opn@^5.5.0": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "optimize-css-assets-webpack-plugin@^5.0.3": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", + "ora@3.4.0": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "ora@^5.4.1": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "os-browserify@^0.3.0": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "os-homedir@^1.0.0": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "os-tmpdir@^1.0.0": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "os-tmpdir@~1.0.2": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "osenv@^0.1.5": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "p-any@^2.1.0": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", + "p-cancelable@^1.0.0": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "p-cancelable@^2.0.0": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "p-finally@^1.0.0": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "p-limit@^2.0.0": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "p-limit@^2.2.0": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "p-limit@^3.0.2": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "p-locate@^3.0.0": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "p-locate@^4.1.0": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "p-locate@^5.0.0": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "p-map@3.0.0": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "p-map@^2.0.0": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "p-map@^4.0.0": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "p-retry@4.1.0": "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz", + "p-retry@^3.0.1": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "p-some@^4.0.0": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", + "p-timeout@3.1.0": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz", + "p-timeout@^3.2.0": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "p-try@^2.0.0": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "p-try@^2.1.0": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "package-json@6.4.0": "https://registry.npmjs.org/package-json/-/package-json-6.4.0.tgz", + "package-json@^6.3.0": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "pako@~1.0.5": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "parallel-transform@^1.1.0": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "param-case@^3.0.3": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "parse-asn1@^5.0.0": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "parse-asn1@^5.1.5": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "parse-json@^4.0.0": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "parse-png@^2.1.0": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "parse-srcset@^1.0.2": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "parseurl@~1.3.2": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "parseurl@~1.3.3": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "pascal-case@^3.1.2": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "pascalcase@^0.1.1": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "password-prompt@^1.0.4": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "path-browserify@0.0.1": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "path-browserify@^1.0.0": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "path-dirname@^1.0.0": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "path-exists@^3.0.0": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "path-exists@^4.0.0": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "path-is-absolute@^1.0.0": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "path-is-inside@^1.0.2": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "path-key@^2.0.0": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "path-key@^2.0.1": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "path-key@^3.1.0": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "path-parse@^1.0.5": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "path-parse@^1.0.7": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "path-to-regexp@0.1.7": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "path-type@^4.0.0": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "pbkdf2@^3.0.3": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "picocolors@^0.2.1": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "picocolors@^1.0.0": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "picomatch@^2.0.4": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "picomatch@^2.2.1": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "picomatch@^2.2.3": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "picomatch@^2.3.1": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "pify@^2.0.0": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pify@^4.0.1": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "pinkie-promise@^2.0.0": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "pinkie@^2.0.0": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "pirates@^4.0.1": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "pirates@^4.0.5": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "pkg-dir@^3.0.0": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "pkg-dir@^4.1.0": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "pkg-up@3.1.0": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "pkg-up@^3.1.0": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "plist@^3.0.5": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "pngjs@3.4.0": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "pngjs@^3.3.0": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "pnp-webpack-plugin@^1.5.0": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "portfinder@^1.0.26": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "posix-character-classes@^0.1.0": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "postcss-calc@^7.0.1": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "postcss-colormin@^4.0.3": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "postcss-convert-values@^4.0.1": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "postcss-discard-comments@^4.0.2": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "postcss-discard-duplicates@^4.0.2": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "postcss-discard-empty@^4.0.1": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "postcss-discard-overridden@^4.0.1": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "postcss-merge-longhand@^4.0.11": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "postcss-merge-rules@^4.0.3": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "postcss-minify-font-values@^4.0.2": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "postcss-minify-gradients@^4.0.2": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "postcss-minify-params@^4.0.2": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "postcss-minify-selectors@^4.0.2": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "postcss-modules-extract-imports@^2.0.0": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "postcss-modules-local-by-default@^3.0.2": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "postcss-modules-scope@^2.2.0": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "postcss-modules-values@^3.0.0": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "postcss-normalize-charset@^4.0.1": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "postcss-normalize-display-values@^4.0.2": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "postcss-normalize-positions@^4.0.2": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "postcss-normalize-repeat-style@^4.0.2": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "postcss-normalize-string@^4.0.2": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "postcss-normalize-timing-functions@^4.0.2": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "postcss-normalize-unicode@^4.0.1": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "postcss-normalize-url@^4.0.1": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "postcss-normalize-whitespace@^4.0.2": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "postcss-ordered-values@^4.1.2": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "postcss-reduce-initial@^4.0.3": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "postcss-reduce-transforms@^4.0.2": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "postcss-safe-parser@^4.0.2": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "postcss-selector-parser@^3.0.0": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "postcss-selector-parser@^6.0.0": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "postcss-selector-parser@^6.0.2": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "postcss-svgo@^4.0.3": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "postcss-unique-selectors@^4.0.1": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "postcss-value-parser@^3.0.0": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "postcss-value-parser@^4.0.2": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "postcss-value-parser@^4.1.0": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "postcss-value-parser@^4.2.0": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "postcss@^7.0.0": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.1": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.14": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.26": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.27": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.32": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.5": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "postcss@^7.0.6": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "prepend-http@^2.0.0": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "prepend-http@^3.0.1": "https://registry.npmjs.org/prepend-http/-/prepend-http-3.0.1.tgz", + "pretty-bytes@5.6.0": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "pretty-bytes@^5.3.0": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "pretty-error@^2.1.1": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "pretty-format@^26.5.2": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "pretty-format@^26.6.2": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "probe-image-size@^7.1.0": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", + "probe-image-size@~6.0.0": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-6.0.0.tgz", + "process-nextick-args@~2.0.0": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "process@^0.11.10": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "progress@2.0.3": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "promise-inflight@^1.0.1": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "promise@^7.1.1": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "promise@^8.0.3": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "prompts@2.4.0": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "prompts@^2.3.2": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "prompts@^2.4.0": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "prop-types@^15.7.2": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5", + "proxy-addr@~2.0.4": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "proxy-addr@~2.0.7": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "prr@~1.0.1": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "public-encrypt@^4.0.0": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "pump@^2.0.0": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "pump@^3.0.0": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "pumpify@^1.3.3": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "punycode@1.3.2": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "punycode@^1.2.4": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "punycode@^2.1.0": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "q@^1.1.2": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "qrcode-terminal@0.11.0": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "qs@6.11.0": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "qs@6.5.2": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "qs@6.7.0": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "querystring-es3@^0.2.0": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "querystring@0.2.0": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "querystringify@^2.1.1": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "queue-microtask@^1.2.2": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "queue@6.0.2": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "quick-lru@^5.1.1": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "randombytes@^2.0.0": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "randombytes@^2.0.1": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "randombytes@^2.0.5": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "randombytes@^2.1.0": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "randomfill@^1.0.3": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "range-parser@^1.2.1": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "range-parser@~1.2.0": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "range-parser@~1.2.1": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "raw-body@2.3.3": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "raw-body@2.4.0": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "raw-body@2.5.1": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "rc@1.2.8": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "rc@^1.0.1": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "rc@^1.1.6": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "rc@^1.2.8": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "rc@~1.2.7": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "react-dev-utils@~11.0.1": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", + "react-devtools-core@4.24.0": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", + "react-dom@18.1.0": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "react-error-overlay@^6.0.9": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "react-is@^16.12.0 || ^17.0.0 || ^18.0.0": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "react-is@^16.13.1": "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4", + "react-is@^16.7.0": "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4", + "react-is@^17.0.1": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "react-native-codegen@^0.70.6": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", + "react-native-gesture-handler@^2.9.0": "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.9.0.tgz#2f63812e523c646f25b9ad660fc6f75948e51241", + "react-native-gradle-plugin@^0.70.3": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", + "react-native-safe-area-context@^4.5.0": "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz#9208313236e8f49e1920ac1e2a2c975f03aed284", + "react-native-web@~0.18.9": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz", + "react-native@0.70.5": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", + "react-refresh@^0.4.0": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "react-shallow-renderer@^16.15.0": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "react@18.1.0": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "read-chunk@^3.2.0": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", + "read-last-lines@1.6.0": "https://registry.npmjs.org/read-last-lines/-/read-last-lines-1.6.0.tgz", + "readable-stream@1 || 2": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.0.0": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.0.1": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.0.2": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.1.5": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.2.2": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.3.3": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^2.3.6": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readable-stream@^3.0.6": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "readable-stream@^3.4.0": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "readable-stream@^3.6.0": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "readable-stream@~2.3.6": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "readdirp@^2.2.1": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "readdirp@~3.6.0": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "readline@^1.3.0": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "recast@^0.20.4": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "recursive-readdir@2.2.2": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "regenerate-unicode-properties@^10.1.0": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "regenerate@^1.4.2": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "regenerator-runtime@^0.13.11": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "regenerator-runtime@^0.13.2": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "regenerator-runtime@^0.13.4": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "regenerator-transform@^0.15.1": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "regex-not@^1.0.0": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "regex-not@^1.0.2": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "regexp.prototype.flags@^1.2.0": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "regexp.prototype.flags@^1.4.3": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "regexpu-core@^5.2.1": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "registry-auth-token@3.3.2": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "registry-auth-token@^3.4.0": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "registry-auth-token@^4.0.0": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "registry-url@3.1.0": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "registry-url@^5.0.0": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "regjsgen@^0.7.1": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "regjsparser@^0.9.1": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "relateurl@^0.2.7": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "remove-trailing-separator@^1.0.1": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "remove-trailing-slash@^0.1.0": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "renderkid@^2.0.4": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "repeat-element@^1.1.2": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "repeat-string@^1.6.1": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "require-directory@^2.1.1": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-from-string@^2.0.2": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "require-main-filename@^2.0.0": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "requireg@^0.2.2": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "requires-port@^1.0.0": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "reselect@^4.0.0": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", + "resolve-alpn@^1.0.0": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "resolve-cwd@^2.0.0": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "resolve-from@^3.0.0": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "resolve-from@^5.0.0": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "resolve-url@^0.2.1": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "resolve@^1.13.1": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "resolve@^1.14.2": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "resolve@^1.3.2": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "resolve@~1.7.1": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "responselike@^1.0.2": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "responselike@^2.0.0": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "restore-cursor@^2.0.0": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "restore-cursor@^3.1.0": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "ret@~0.1.10": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "retry@^0.12.0": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "reusify@^1.0.4": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "rgb-regex@^1.0.1": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "rgba-regex@^1.0.0": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "rimraf@^2.5.4": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "rimraf@^2.6.2": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "rimraf@^2.6.3": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "rimraf@^3.0.2": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "rimraf@~2.2.6": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "rimraf@~2.4.0": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "rimraf@~2.6.2": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "ripemd160@^2.0.0": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "ripemd160@^2.0.1": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "router-ips@^1.0.0": "https://registry.npmjs.org/router-ips/-/router-ips-1.0.0.tgz", + "run-parallel@^1.1.9": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "run-queue@^1.0.0": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "run-queue@^1.0.3": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "safe-buffer@5.1.2": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "safe-buffer@5.2.1": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@>=5.1.0": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@^5.0.1": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@^5.1.0": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@^5.1.1": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@^5.1.2": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@^5.2.0": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-buffer@~5.1.0": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "safe-buffer@~5.1.1": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "safe-buffer@~5.2.0": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "safe-json-stringify@~1": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "safe-regex-test@^1.0.0": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "safe-regex@^1.1.0": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "safer-buffer@>= 2.1.2 < 3": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "safer-buffer@^2.1.0": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "sax@>=0.6.0": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "sax@^1.2.4": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "sax@~1.2.4": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "scheduler@^0.22.0": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "schema-utils@^1.0.0": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "schema-utils@^2.6.5": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "schema-utils@^2.6.6": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "schema-utils@^2.7.0": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "schema-utils@^3.0.0": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "schema-utils@^3.1.1": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "select-hose@^2.0.0": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "selfsigned@^1.10.7": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "semver@7.3.2": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "semver@^5.4.1": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "semver@^5.5.0": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "semver@^5.6.0": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "semver@^6.0.0": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "semver@^6.1.1": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "semver@^6.1.2": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "semver@^6.2.0": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "semver@^6.3.0": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "semver@^7.3.5": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "semver@~7.3.2": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "send@0.16.2": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "send@0.18.0": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "send@^0.18.0": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "serialize-error@6.0.0": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz", + "serialize-error@^2.1.0": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "serialize-javascript@^4.0.0": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "serve-index@^1.9.1": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "serve-static@1.13.2": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "serve-static@1.15.0": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "serve-static@^1.13.1": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "set-blocking@^2.0.0": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "set-value@^2.0.0": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "set-value@^2.0.1": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "setimmediate@^1.0.4": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "setimmediate@^1.0.5": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "setprototypeof@1.1.0": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "setprototypeof@1.1.1": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "setprototypeof@1.2.0": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "sha.js@^2.4.0": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "sha.js@^2.4.8": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "shallow-clone@^3.0.0": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "shebang-command@^1.2.0": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "shebang-command@^2.0.0": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "shebang-regex@^1.0.0": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "shebang-regex@^3.0.0": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "shell-quote@1.7.2": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "shell-quote@^1.6.1": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "shell-quote@^1.7.3": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "side-channel@^1.0.4": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "signal-exit@^3.0.0": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "signal-exit@^3.0.2": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "simple-plist@^1.1.0": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "simple-swizzle@^0.2.2": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "sisteransi@^1.0.5": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "slash@^3.0.0": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "slice-ansi@^2.0.0": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "slugify@^1.3.4": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "snapdragon-node@^2.0.1": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "snapdragon-util@^3.0.1": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "snapdragon@^0.8.1": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "sockjs-client@1.4.0": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "sockjs@0.3.20": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "source-list-map@^2.0.0": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "source-map-resolve@^0.5.0": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "source-map-support@0.4.18": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "source-map-support@^0.5.16": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "source-map-support@~0.5.12": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "source-map-url@^0.4.0": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "source-map@^0.5.0": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "source-map@^0.5.6": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "source-map@^0.6.0": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "source-map@^0.6.1": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "source-map@^0.7.3": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "source-map@~0.6.0": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "source-map@~0.6.1": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "spdy-transport@^3.0.0": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "spdy@^4.0.2": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "split-string@^3.0.1": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "split-string@^3.0.2": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "split@1.0.1": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "split@^1.0.1": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "sprintf-js@~1.0.2": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "ssri@^6.0.1": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "ssri@^8.0.1": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "stable@^0.1.8": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "stackframe@^1.3.4": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "stacktrace-parser@^0.1.3": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "static-extend@^0.1.1": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "statuses@2.0.1": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "statuses@>= 1.4.0 < 2": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "statuses@>= 1.5.0 < 2": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "statuses@~1.4.0": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "statuses@~1.5.0": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "stream-browserify@^2.0.1": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "stream-buffers@2.2.x": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "stream-each@^1.1.0": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "stream-http@^2.7.2": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "stream-parser@~0.3.1": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "stream-shift@^1.0.0": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "string-width@^3.0.0": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "string-width@^3.1.0": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "string-width@^4.0.0": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "string-width@^4.1.0": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "string-width@^4.2.0": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "string-width@^4.2.2": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "string.prototype.trimend@^1.0.6": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "string.prototype.trimstart@^1.0.6": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "string_decoder@^1.0.0": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "string_decoder@^1.1.1": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "string_decoder@~1.1.1": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "strip-ansi@6.0.0": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "strip-ansi@^3.0.1": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "strip-ansi@^5.0.0": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "strip-ansi@^5.1.0": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "strip-ansi@^5.2.0": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "strip-ansi@^6.0.0": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "strip-ansi@^6.0.1": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "strip-eof@^1.0.0": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "strip-json-comments@~2.0.1": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "structured-headers@^0.4.1": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "style-loader@~1.2.1": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "stylehacks@^4.0.0": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "styleq@^0.1.2": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "sucrase@^3.20.0": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz", + "sudo-prompt@9.1.1": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "sudo-prompt@^8.2.0": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "sudo-prompt@^9.0.0": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "supports-color@^5.3.0": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "supports-color@^6.1.0": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "supports-color@^7.0.0": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "supports-color@^7.1.0": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "supports-color@^8.0.0": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "supports-hyperlinks@^2.0.0": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "supports-preserve-symlinks-flag@^1.0.0": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "svgo@^1.0.0": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "tapable@^1.0.0": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "tapable@^1.1.3": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "tar@^6.0.2": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "tar@^6.0.5": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "temp-dir@^1.0.0": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "temp-dir@^2.0.0": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "temp@0.8.3": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "temp@^0.8.4": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "tempy@0.3.0": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "tempy@^0.7.1": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "terminal-link@^2.1.1": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "terser-webpack-plugin@^1.4.3": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "terser-webpack-plugin@^3.0.6": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz", + "terser@^4.1.2": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "terser@^4.6.3": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "terser@^4.8.0": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "text-table@0.2.0": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "text-table@^0.2.0": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "thenify-all@^1.0.0": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "thenify@>= 3.1.0 < 4": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "throat@^5.0.0": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "through2@^2.0.0": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "through2@^2.0.1": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "through@2": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "thunky@^1.0.2": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "timers-browserify@^2.0.4": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "timsort@^0.3.0": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "tmp@^0.0.33": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "tmpl@1.0.5": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "to-arraybuffer@^1.0.0": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "to-fast-properties@^2.0.0": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "to-object-path@^0.3.0": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "to-readable-stream@^1.0.0": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "to-regex-range@^2.1.0": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "to-regex-range@^5.0.1": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "to-regex@^3.0.1": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "to-regex@^3.0.2": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "toidentifier@1.0.0": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "toidentifier@1.0.1": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "tr46@~0.0.3": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "traverse@~0.6.6": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "tree-kill@1.2.2": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "ts-interface-checker@^0.1.9": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "ts-pnp@^1.1.6": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "tslib@^2.0.1": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "tslib@^2.0.3": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "tslib@^2.1.0": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "tslib@^2.4.0": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "tty-browserify@0.0.0": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "turndown@~7.0.0": "https://registry.npmjs.org/turndown/-/turndown-7.0.0.tgz", + "type-fest@^0.12.0": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "type-fest@^0.16.0": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "type-fest@^0.20.2": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "type-fest@^0.21.3": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "type-fest@^0.3.0": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "type-fest@^0.3.1": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "type-fest@^0.7.1": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "type-is@~1.6.16": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "type-is@~1.6.17": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "type-is@~1.6.18": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "typed-array-length@^1.0.4": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "typedarray@^0.0.6": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "typescript@^4.6.3": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "ua-parser-js@^0.7.30": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", + "uglify-es@^3.1.9": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "unbox-primitive@^1.0.2": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "unicode-canonical-property-names-ecmascript@^2.0.0": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "unicode-match-property-ecmascript@^2.0.0": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "unicode-match-property-value-ecmascript@^2.1.0": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "unicode-property-aliases-ecmascript@^2.0.0": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "union-value@^1.0.0": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "uniq@^1.0.1": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "uniqs@^2.0.0": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "unique-filename@^1.1.1": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "unique-slug@^2.0.0": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "unique-string@^1.0.0": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "unique-string@^2.0.0": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "universalify@^0.1.0": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "universalify@^1.0.0": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "universalify@^2.0.0": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "unpipe@1.0.0": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "unpipe@~1.0.0": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "unquote@~1.1.1": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "unset-value@^1.0.0": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "untildify@3.0.3": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "upath@^1.1.1": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "update-browserslist-db@^1.0.9": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "update-check@1.5.3": "https://registry.npmjs.org/update-check/-/update-check-1.5.3.tgz", + "uri-js@^4.2.2": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "urix@^0.1.0": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "url-join@4.0.0": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "url-loader@~4.1.0": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "url-parse-lax@^3.0.0": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "url-parse@^1.4.3": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "url-parse@^1.4.7": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "url-parse@^1.5.9": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "url@^0.11.0": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "use-sync-external-store@^1.0.0": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "use@^3.1.0": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "util-deprecate@^1.0.1": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "util-deprecate@^1.0.2": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "util-deprecate@~1.0.1": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "util.promisify@1.0.0": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "util.promisify@~1.0.0": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "util@0.10.3": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "util@^0.11.0": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "utila@~0.4": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "utils-merge@1.0.1": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "uuid@^3.3.2": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "uuid@^3.4.0": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "uuid@^7.0.3": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "uuid@^8.0.0": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "uuid@^8.3.2": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "valid-url@~1.0.9": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "validate-npm-package-name@^3.0.0": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "vary@~1.1.2": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "vendors@^1.0.0": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "vlq@^1.0.0": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "vm-browserify@^1.0.1": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "walker@^1.0.7": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "watchpack-chokidar2@^2.0.1": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "watchpack@^1.6.1": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "wbuf@^1.1.0": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "wbuf@^1.7.3": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "wcwidth@^1.0.1": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "webidl-conversions@^3.0.0": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "webpack-dev-middleware@^3.7.2": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "webpack-dev-server@3.11.0": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "webpack-log@^2.0.0": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "webpack-manifest-plugin@~2.2.0": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "webpack-sources@^1.1.0": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "webpack-sources@^1.4.0": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "webpack-sources@^1.4.1": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "webpack-sources@^1.4.3": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "webpack@4.43.0": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "websocket-driver@0.6.5": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "websocket-driver@>=0.5.1": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "websocket-extensions@>=0.1.1": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "whatwg-fetch@^3.0.0": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "whatwg-url@^5.0.0": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "which-boxed-primitive@^1.0.2": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "which-module@^2.0.0": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "which-typed-array@^1.1.9": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "which@^1.2.9": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "which@^1.3.1": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "which@^2.0.1": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "widest-line@^3.1.0": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "with-open-file@^0.1.6": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", + "wonka@^4.0.14": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "wonka@^6.1.2": "https://registry.npmjs.org/wonka/-/wonka-6.1.2.tgz", + "worker-farm@^1.7.0": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "worker-rpc@^0.1.0": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "wrap-ansi@^5.1.0": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "wrap-ansi@^6.2.0": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "wrap-ansi@^7.0.0": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "wrappy@1": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "write-file-atomic@^2.3.0": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "ws@^6.1.4": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "ws@^6.2.1": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "ws@^7": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "ws@^7.5.1": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "xcode@^3.0.1": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "xdl@59.3.0": "https://registry.npmjs.org/xdl/-/xdl-59.3.0.tgz", + "xml2js@0.4.23": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "xmlbuilder@^14.0.0": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "xmlbuilder@^15.1.1": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "xmlbuilder@~11.0.0": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "xtend@^4.0.0": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "xtend@~4.0.1": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "y18n@^4.0.0": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "yallist@^3.0.2": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "yallist@^4.0.0": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "yargs-parser@^13.1.2": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "yargs-parser@^18.1.2": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "yargs@^13.3.2": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "yargs@^15.1.0": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "yargs@^15.3.1": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "yocto-queue@^0.1.0": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" }, "files": [], "artifacts": { diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/.babelrc b/iut-expo-starter/node_modules/@egjs/hammerjs/.babelrc new file mode 100644 index 00000000..13739d8b --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/.babelrc @@ -0,0 +1,16 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "loose": true, + "modules": false + } + ] + ], + "plugins": [ + "babel-plugin-no-side-effect-class-properties", + ["@babel/plugin-proposal-class-properties", {"loose": true}], + "@babel/plugin-transform-object-assign" + ] +} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/.bowerrc b/iut-expo-starter/node_modules/@egjs/hammerjs/.bowerrc new file mode 100644 index 00000000..a3731bd2 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/.bowerrc @@ -0,0 +1,3 @@ +{ + "json": "bower.json" +} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/.editorconfig b/iut-expo-starter/node_modules/@egjs/hammerjs/.editorconfig new file mode 100644 index 00000000..6b79d117 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/.editorconfig @@ -0,0 +1,20 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 2 + +[*.js] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/.jscsrc b/iut-expo-starter/node_modules/@egjs/hammerjs/.jscsrc new file mode 100644 index 00000000..423c2934 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/.jscsrc @@ -0,0 +1,10 @@ +{ + "preset": "ember-suave", + "excludeFiles": [ + "tests/**/assets", + "node_modules/**" + ], + "disallowConstOutsideModuleScope": false, + "requireArrowFunctions": true, + "disallowEmptyBlocks": false +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/.jshintrc b/iut-expo-starter/node_modules/@egjs/hammerjs/.jshintrc new file mode 100644 index 00000000..8de3b553 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/.jshintrc @@ -0,0 +1,42 @@ +{ + "maxerr": 100, + "freeze": true, + "node": false, + "indent": 2, + "predef": [ + "document", + "window" + ], + "browser": true, + "boss": true, + "curly": true, + "debug": false, + "devel": true, + "eqeqeq": true, + "expr": true, + "validthis": true, + "evil": true, + "forin": false, + "immed": false, + "laxbreak": false, + "newcap": true, + "noarg": true, + "node": true, + "noempty": false, + "nonew": false, + "nomen": false, + "onevar": false, + "plusplus": false, + "regexp": false, + "undef": true, + "sub": true, + "strict": false, + "white": false, + "eqnull": true, + "esversion": 6, + "unused": true, + "-W116": true, + "-W080": true, + "-W038": true, + "proto": true +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/.travis.yml b/iut-expo-starter/node_modules/@egjs/hammerjs/.travis.yml new file mode 100644 index 00000000..41998f62 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - "6.3.0" + +sudo: false + +script: + - npm run test diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/CHANGELOG.md b/iut-expo-starter/node_modules/@egjs/hammerjs/CHANGELOG.md new file mode 100644 index 00000000..21421213 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/CHANGELOG.md @@ -0,0 +1,66 @@ +# Changelog + +### 2.0.8, 2016-04-22 + +##### Manager +- Added check to ensure that the required parameters are present ([#908](https://github.com/hammerjs/hammer.js/issues/908), [085d3a8](https://github.com/hammer.js/hammerjs/commit/085d3a87eab8674c45e9d3a14c4ca44ad7b97e26)) +- Fixed restoration of Hammer.defaults.cssProps on destory ([#904theregttr5ki](https://github.com/hammerjs/hammer.js/issues/904), [7d0e60f](https://github.com/hammer.js/hammerjs/commit/7d0e60f6743517db3c05a38e966fb9fb5052fa03)) + +##### Input +- Fixed de-duping of mouse events on mouse touch combo devices ([#917](https://github.com/hammer.js/hammer.js/issues/917), [#863](https://github.com/hammerjs/hammer.js/issues/863), [bfeb89a](https://github.com/hammerjs/hammerjs/commit/bfeb89a77f778c527f771150d1e9687bd318ce8d)) + +##### Touch-action +- Added support map for specific values of touch-action ([#952](https://github.com/hammer.js/hammer.js/issues/952), [fbe9fd7](https://github.com/hammerjs/hammer.js/commit/fbe9fd775fe8cb3d43faa9428bfa56b61b16edc7)) + +### 2.0.6, 2015-12-23 +- Add Assign method and deprecate merge and extend ([#895](https://github.com/hammerjs/hammer.js/pull/895)[fc01eae](https://github.com/hammerjs/hammer.js/commit/fc01eaea678acc430c664eb374555fbe3d403bdd)) +- Expose Hammer on window or self if either is defined to avoid issues when AMD is present but not used. ( [356f795](https://github.com/hammerjs/hammer.js/commit/356f7955b01f3679c29d6c45931679256b45036e)) +- Add support for PointerEvent instead of MSPointerEvent if supported. ([#754](https://github.com/hammerjs/hammer.js/issues/754), [439c7a6](https://github.com/hammerjs/hammer.js/commit/439c7a6c46978ab387b4b8289399e904d1c49535)) +- Fixed moz-prefix, prefix should be Moz not moz. ([3ea47f3](https://github.com/hammerjs/hammer.js/commit/3ea47f3aebadc9d3bb6bf52bc8402cad135ef8a9)) +- Removed non-existant recognizer ([f1c2d3b](https://github.com/hammerjs/hammer.js/commit/f1c2d3bf05f530ae092ecfc2335fceeff0e9eec9)) +- Fixed config leaking between instances([189098f](https://github.com/hammerjs/hammer.js/commit/189098ff7736f6ed2fce9a3d3e1f5a3afee085ba)) +- Fixed gaps in gesture configs and update tests to match ([70c2902](https://github.com/hammerjs/hammer.js/commit/70c2902d773a750e92ce8c423f8a4165c07eab97)) +- Fixed Manager off method ([#768](https://github.com/hammerjs/hammer.js/issues/768), [da49a27](https://github.com/hammerjs/hammer.js/commit/da49a2730779ecc3b4dd147cc418a0df7c70fad9)) +- Added compatibility with requirejs optimizer namespaces ( [70075f2](https://github.com/hammerjs/hammer.js/commit/70075f2df1b855f7c6d8d3caac49b9276b88c8d6)) +- Made touchaction test zoomable ( [50264a7](https://github.com/hammerjs/hammer.js/commit/50264a70251ca88bbaf7b666401e527eee616de5)) +- Fixed preventing default when for `pan-x pan-y` case ( [95eaafa](https://github.com/hammerjs/hammer.js/commit/95eaafadad27bd1b25d20cf976811a451922f1c4)) +- Fixed incorrect touch action pan direction ( [a81da57](https://github.com/hammerjs/hammer.js/commit/a81da57a82ebf37e695e7c443e4e2715e7f32856)) +- Fixed combined pan-x pan-y to resolve to none ( [fdae07b](https://github.com/hammerjs/hammer.js/commit/fdae07bc2ba3c90aad28da6791b3d5df627bc612)) +- Fixed inverted touch-action for pan recognizer ([#728](https://github.com/hammerjs/hammer.js/issues/728), [605bd3b](https://github.com/hammerjs/hammer.js/commit/605bd3beca780be91dd43f9da8b809d155a43d1a)) +- Fixed dependency on non standard touch list ordering ([#610](https://github.com/hammerjs/hammer.js/issues/610), [#791](https://github.com/hammerjs/hammer.js/issues/791), [287720a](https://github.com/hammerjs/hammer.js/commit/287720a6e5067e7f28be8b8b3b266d22905361c4)) +- Fixed swipe to not trigger after multitouch gesture ([#640](https://github.com/hammerjs/hammer.js/issues/640), [711d8a1](https://github.com/hammerjs/hammer.js/commit/711d8a1df1aa5057ecb536454a36257e3c0d6d91)) +- Fixed swipe recognizer to use overall gesture direction and velocity ( [963fe69](https://github.com/hammerjs/hammer.js/commit/963fe697515273fee508414bc29e2656465cea55)) +- Fixed getDirection returning reversed direction ( [e40dcde](https://github.com/hammerjs/hammer.js/commit/e40dcde43bdac7a74c8ce5c05a4f62121089cd91)) +- Fixed detection of tap when multi touch gestures are present ( [c46cbba](https://github.com/hammerjs/hammer.js/commit/c46cbba1c2cbbf874b59913416858d9dae297e64)) +- Fixed incorrect event order ([#824](https://github.com/hammerjs/hammer.js/issues/824), [92f2d76](https://github.com/hammerjs/hammer.js/commit/92f2d76188480d967e738a19cd508d0b94a31329)) +- Fixed leaking options between recognizer instances ([#813](https://github.com/hammerjs/hammer.js/issues/813), [af32c9b](https://github.com/hammerjs/hammer.js/commit/af32c9bace3f04bb34bee852ff56a33cc8fc27cd)) +- Fixed detection when element has no style attribute ( [5ca6d8c](https://github.com/hammerjs/hammer.js/commit/5ca6d8cbead02c71929a8073e95ddf98e11c0e06)) + +### 2.0.4, 2014-09-28 +- Fix IE pointer issue. [#665](https://github.com/hammerjs/hammer.js/pull/665) +- Fix multi-touch at different elements. [#668](https://github.com/hammerjs/hammer.js/pull/668) +- Added experimental [single-user Touch input handler](src/input/singletouch.js). This to improve performance/ux when only a single user has to be supported. Plans are to release 2.1 with this as default, and a settings to enable the multi-user handler. + +### 2.0.3, 2014-09-10 +- Manager.set improvements. +- Fix requireFailure() call in Manager.options.recognizers. +- Make DIRECTION_ALL for pan and swipe gestures less blocking. +- Fix Swipe recognizer threshold option. +- Expose the Input classes. +- Added the option `inputClass` to set the used input handler. + +### 2.0.2, 2014-07-26 +- Improved mouse and pointer-events input, now able to move outside the window. +- Added the export name (`Hammer`) as an argument to the wrapper. +- Add the option *experimental* `inputTarget` to change the element that receives the events. +- Improved performance when only one touch being active. +- Fixed the jumping deltaXY bug when going from single to multi-touch. +- Improved velocity calculations. + +### 2.0.1, 2014-07-15 +- Fix issue when no document.body is available +- Added pressup event for the press recognizer +- Removed alternative for Object.create + +### 2.0.0, 2014-07-11 +- Full rewrite of the library. diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/CONTRIBUTING.md b/iut-expo-starter/node_modules/@egjs/hammerjs/CONTRIBUTING.md new file mode 100644 index 00000000..b1934de6 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# Contributing to Hammer.js + +Looking to contribute something to Hammer.js? **Here's how you can help.** + + +## Reporting issues + +We only accept issues that are bug reports or feature requests. Bugs must be +isolated and reproducible problems that can be fixed within the Hammer.js. +Please read the following guidelines before opening any issue. + +1. [**Read the documentation**](https://hammerjs.github.io) + +2. **Search for existing issues.** We get a lot of duplicate issues, and you'd +help us out a lot by first checking if someone else has reported the same issue. +Moreover, the issue may have already been resolved with a fix available. Also +take a look if your problem is explained at the Wiki. + +3. **Create an isolated and reproducible test case.** Be sure the problem exists +in Hammer's code with a reduced test case that should be included in each bug +report. + +4. **Include a live example.** Make use of jsFiddle or jsBin to share your +isolated test cases. Also, a screen capture would work, with tools like LICEcap. + +5. **Share as much information as possible.** Include operating system and +version, browser and version, version of Hammer.js, customized or vanilla build, +etc. where appropriate. Also include steps to reproduce the bug. + +## Pull requests + +1. Changes must be done in `/src` files, never just the compiled files. Also, don't +commit the compiled files. + +2. Try not to pollute your pull request with unintended changes. Keep them simple +and small + +3. Try to share which browsers your code has been tested in before submitting a +pull request + +4. Write tests for your code, these can be found in `/tests`. diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/LICENSE.md b/iut-expo-starter/node_modules/@egjs/hammerjs/LICENSE.md new file mode 100644 index 00000000..a5c3d403 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/LICENSE.md @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2018-present NAVER Corp. +Copyright (C) 2011-2017 by Jorik Tangelder (Eight Media) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/README.md b/iut-expo-starter/node_modules/@egjs/hammerjs/README.md new file mode 100644 index 00000000..3065377a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/README.md @@ -0,0 +1,141 @@ +# [hammer.js][hammerjs-url] [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![Build Status][travis-image]][travis-url] +> A JavaScript library for detecting touch gestures. + +## What is this repository? + +It seems like that `hammer.js` repository is no more activated. + - [Is this library still actively maintained?](https://github.com/hammerjs/hammer.js/issues/1197) + +But our library ([egjs](https://naver.github.io/egjs/)) has deep dependency to hammer.js for touch interaction. +And some pending issues were critical for us to make more light size, compatible with node.js , resolve module crash on umd envrioment. + +So we solved following issues that are not resolved in original hammer.js + +* [Support for hammer.js in node.js](https://github.com/naver/hammer.js/issues/3) + - [Make hammerjs server friendly](https://github.com/hammerjs/hammer.js/issues/1060) + - [Hammer.js fails in node since window is undefined](https://github.com/hammerjs/hammer.js/issues/930) +* [Support ES Module for Tree Shaking](https://github.com/naver/hammer.js/issues/12) +* [Change the priority of define and exports for umd](https://github.com/naver/hammer.js/issues/11) +* [Polymer/shadow-dom compatibility](https://github.com/naver/hammer.js/issues/21) + +We would maintain this repository to fix remain bugs and enhance it until original repository activates. + + +## Installation +### NPM +```sh +npm install --save @egjs/hammerjs +``` + +**or** + +### Yarn +```sh +yarn add @egjs/hammerjs +``` + +**or** + +### CDN +[https://cdnjs.com/libraries/hammer.js/](https://cdnjs.com/libraries/hammer.js/) + +> We did not provide CDN yet. leave the link to original hammerjs as is. + +## Usage +hammer.js has a quick start option for gestures it already recognizes. +```js +// Get a reference to an element. +var square = document.querySelector('.square'); + +// Create an instance of Hammer with the reference. +var hammer = new Hammer(square); + +// Subscribe to a quick start event: press, tap, or doubletap. +// For a full list of quick start events, read the documentation. +hammer.on('press', function(e) { + e.target.classList.toggle('expand'); + console.log("You're pressing me!"); + console.log(e); +}); +``` + +If you want to recognize your own gestures, such as `tripletap`, then you'll have to use these steps: +```js +// Get a reference to an element. +var square = document.querySelector('.square'); + +// Create a manager to manage the element. +var manager = new Hammer.Manager(square); + +// Create a recognizer. +var TripleTap = new Hammer.Tap({ + event: 'tripletap', + taps: 3 +}); + +// Add the recognizer to the manager. +manager.add(TripleTap); + +// Subscribe to the event. +manager.on('tripletap', function(e) { + e.target.classList.toggle('expand'); + console.log("You're triple tapping me!"); + console.log(e); +}); +``` + + +## Examples +- [tap][tap] +- [double tap][double-tap] +- [press][press] +- [swipe][swipe] + + +## Documentation +For further information regarding hammer.js, please read our [documentation][hammerjs-url]. + + +## Contributions [![Github Issues][issues-image]][issues-url] [![Github PRs][pulls-image]][pulls-url] [![Slack][slack-image]][slack-url] +Feel encouraged to report issues or submit pull requests. When you're ready to do either, read our [contribution guidelines][contribution-guidelines]. If you're looking for another form of contribution, we love help answering questions on our [slack channel][slack-url]. + + +## License +[MIT][license] + +[hammerjs-url]: http://hammerjs.github.io +[hammerjs-url]: http://hammerjs.github.io + +[npm-image]: https://img.shields.io/npm/v/@egjs/hammerjs.svg +[npm-url]: https://npmjs.org/package/@egjs/hammerjs + +[travis-image]: https://img.shields.io/travis/stream-utils/raw-body/master.svg +[travis-url]: https://travis-ci.org/hammerjs/hammer.js + +[downloads-image]: https://img.shields.io/npm/dm/@egjs/hammerjs.svg +[downloads-url]: https://npmjs.org/package/@egjs/hammerjs + + + +[tap]: https://codepen.io/choskim/pen/WZggmg +[double-tap]: https://codepen.io/choskim/pen/vezzwZ +[press]: https://codepen.io/choskim/pen/RLYebL +[pan]: '' +[swipe]: https://codepen.io/choskim/pen/rGZqxa +[pinch]: '' +[rotate]: '' + + + +[issues-image]: https://img.shields.io/github/issues/hammerjs/hammer.js.svg +[issues-url]: https://github.com/hammerjs/hammer.js/issues + +[pulls-image]: https://img.shields.io/github/issues-pr/hammerjs/hammer.js.svg +[pulls-url]: https://github.com/hammerjs/hammer.js/pulls + +[slack-image]: https://hammerjs.herokuapp.com/badge.svg +[slack-url]: https://hammerjs.herokuapp.com/ + +[contribution-guidelines]: ./CONTRIBUTING.md + +[license]: ./LICENSE.md diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/banner.js b/iut-expo-starter/node_modules/@egjs/hammerjs/banner.js new file mode 100644 index 00000000..f4b4c16d --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/banner.js @@ -0,0 +1,9 @@ +var pkg = require("./package.json"); +var date = new Date(); + +module.exports = `/*! ${pkg.title || pkg.name} - v${pkg.version} - ${[ date.getFullYear(), ('0' + (date.getMonth() + 1)).slice(-2), ('0' + date.getDate()).slice(-2)].join('-')} + * ${pkg.homepage} + * + * Forked By Naver egjs + * Copyright (c) hammerjs + * Licensed under the ${pkg.license} license */`; \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/bower.json b/iut-expo-starter/node_modules/@egjs/hammerjs/bower.json new file mode 100644 index 00000000..30584af1 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/bower.json @@ -0,0 +1,16 @@ +{ + "name": "hammerjs", + "license": "MIT", + "main": "hammer.js", + "ignore": [ + "tests", + "src", + ".bowerrc", + ".gitignore", + ".jscsrc", + ".jshintrc", + ".travis.yml", + "component.json", + "package.json" + ] +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/changelog.js b/iut-expo-starter/node_modules/@egjs/hammerjs/changelog.js new file mode 100644 index 00000000..a6dbb337 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/changelog.js @@ -0,0 +1,71 @@ +var changelog = require( "changelogplease" ); +var gittags = require( "git-tags" ).get( function( error, tags ) { + if ( error ) { + throw error + } + console.log( tags[ 2 ] + ".." + tags[ 0 ] ); + var exclude = [ "Merge", "Whitespace", "Fixup", "Cleanup", "Formatting", "Ignore" ]; + changelog( { + ticketUrl: "https://github.com/hammerjs/hammer.js/issues/{id}", + commitUrl: "https://github.com/hammerjs/hammerjs/commit/{id}", + sort: false, + repo: "./", + committish: tags[ 2 ] + ".." + tags[ 0 ] + }, function( error, log ) { + if ( error ) { + throw error; + } + log = parseLog( log ); + console.log( log ); + } ); + function parseLog( log ) { + var lines = log.split( "\n" ); + var newLog = []; + var log = []; + var currentComponent; + + + lines.shift(); + lines.forEach( function( line ) { + var newLine = parseLine( line ); + if ( newLine ) { + log.push( line ); + } + } ); + var log = log.join( "\n" ); + return log.replace( /\*/g, "-" ).replace( /__TICKETREF__,/g, "" ); + } + function parseLine( line ) { + var parts = getParts( line ); + + if ( exclude.indexOf( parts.component ) > -1 ) { + return false; + } + return parts; + } + function getParts( line ) { + var parts = line.split( ":" ); + var component = ""; + var message; + var commits = line.match( /\{\{([A-Za-z0-9 ]){0,99}\}\}/ ) + + if ( parts.length > 1 && parts[ 0 ].length <= 20 ) { + component = parts[ 0 ]; + parts.shift(); + message = parts.join( ":" ); + } else { + parts = line.split( " " ); + component = parts[ 1 ]; + parts.shift(); + message = parts.join( " " ); + } + + if ( component ) { + component = component.replace( /\* |,/, "" ); + } + return { + component: component, + message: message + }; + } +} ); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/component.json b/iut-expo-starter/node_modules/@egjs/hammerjs/component.json new file mode 100644 index 00000000..4af3a335 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/component.json @@ -0,0 +1,8 @@ +{ + "name": "hammerjs", + "version": "2.0.6", + "main": "hammer.js", + "scripts": [ + "hammer.js" + ] +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js new file mode 100644 index 00000000..d32c38c3 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js @@ -0,0 +1,2992 @@ +/*! Hammer.JS - v2.0.17-rc - 2019-12-16 + * http://naver.github.io/egjs + * + * Forked By Naver egjs + * Copyright (c) hammerjs + * Licensed under the MIT license */ +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; +} + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +/** + * @private + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} target + * @param {...Object} objects_to_assign + * @returns {Object} target + */ +var assign; + +if (typeof Object.assign !== 'function') { + assign = function assign(target) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + + if (source !== undefined && source !== null) { + for (var nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey]; + } + } + } + } + + return output; + }; +} else { + assign = Object.assign; +} + +var assign$1 = assign; + +var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o']; +var TEST_ELEMENT = typeof document === "undefined" ? { + style: {} +} : document.createElement('div'); +var TYPE_FUNCTION = 'function'; +var round = Math.round, + abs = Math.abs; +var now = Date.now; + +/** + * @private + * get the prefixed property + * @param {Object} obj + * @param {String} property + * @returns {String|Undefined} prefixed + */ + +function prefixed(obj, property) { + var prefix; + var prop; + var camelProp = property[0].toUpperCase() + property.slice(1); + var i = 0; + + while (i < VENDOR_PREFIXES.length) { + prefix = VENDOR_PREFIXES[i]; + prop = prefix ? prefix + camelProp : property; + + if (prop in obj) { + return prop; + } + + i++; + } + + return undefined; +} + +/* eslint-disable no-new-func, no-nested-ternary */ +var win; + +if (typeof window === "undefined") { + // window is undefined in node.js + win = {}; +} else { + win = window; +} + +var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); +var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; +function getTouchActionProps() { + if (!NATIVE_TOUCH_ACTION) { + return false; + } + + var touchMap = {}; + var cssSupports = win.CSS && win.CSS.supports; + ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) { + // If css.supports is not supported but there is native touch-action assume it supports + // all values. This is the case for IE 10 and 11. + return touchMap[val] = cssSupports ? win.CSS.supports('touch-action', val) : true; + }); + return touchMap; +} + +var TOUCH_ACTION_COMPUTE = 'compute'; +var TOUCH_ACTION_AUTO = 'auto'; +var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented + +var TOUCH_ACTION_NONE = 'none'; +var TOUCH_ACTION_PAN_X = 'pan-x'; +var TOUCH_ACTION_PAN_Y = 'pan-y'; +var TOUCH_ACTION_MAP = getTouchActionProps(); + +var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; +var SUPPORT_TOUCH = 'ontouchstart' in win; +var SUPPORT_POINTER_EVENTS = prefixed(win, 'PointerEvent') !== undefined; +var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); +var INPUT_TYPE_TOUCH = 'touch'; +var INPUT_TYPE_PEN = 'pen'; +var INPUT_TYPE_MOUSE = 'mouse'; +var INPUT_TYPE_KINECT = 'kinect'; +var COMPUTE_INTERVAL = 25; +var INPUT_START = 1; +var INPUT_MOVE = 2; +var INPUT_END = 4; +var INPUT_CANCEL = 8; +var DIRECTION_NONE = 1; +var DIRECTION_LEFT = 2; +var DIRECTION_RIGHT = 4; +var DIRECTION_UP = 8; +var DIRECTION_DOWN = 16; +var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; +var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; +var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; +var PROPS_XY = ['x', 'y']; +var PROPS_CLIENT_XY = ['clientX', 'clientY']; + +/** + * @private + * walk objects and arrays + * @param {Object} obj + * @param {Function} iterator + * @param {Object} context + */ +function each(obj, iterator, context) { + var i; + + if (!obj) { + return; + } + + if (obj.forEach) { + obj.forEach(iterator, context); + } else if (obj.length !== undefined) { + i = 0; + + while (i < obj.length) { + iterator.call(context, obj[i], i, obj); + i++; + } + } else { + for (i in obj) { + obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); + } + } +} + +/** + * @private + * let a boolean value also be a function that must return a boolean + * this first item in args will be used as the context + * @param {Boolean|Function} val + * @param {Array} [args] + * @returns {Boolean} + */ + +function boolOrFn(val, args) { + if (typeof val === TYPE_FUNCTION) { + return val.apply(args ? args[0] || undefined : undefined, args); + } + + return val; +} + +/** + * @private + * small indexOf wrapper + * @param {String} str + * @param {String} find + * @returns {Boolean} found + */ +function inStr(str, find) { + return str.indexOf(find) > -1; +} + +/** + * @private + * when the touchActions are collected they are not a valid value, so we need to clean things up. * + * @param {String} actions + * @returns {*} + */ + +function cleanTouchActions(actions) { + // none + if (inStr(actions, TOUCH_ACTION_NONE)) { + return TOUCH_ACTION_NONE; + } + + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); // if both pan-x and pan-y are set (different recognizers + // for different directions, e.g. horizontal pan but vertical swipe?) + // we need none (as otherwise with pan-x pan-y combined none of these + // recognizers will work, since the browser would handle all panning + + if (hasPanX && hasPanY) { + return TOUCH_ACTION_NONE; + } // pan-x OR pan-y + + + if (hasPanX || hasPanY) { + return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; + } // manipulation + + + if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { + return TOUCH_ACTION_MANIPULATION; + } + + return TOUCH_ACTION_AUTO; +} + +/** + * @private + * Touch Action + * sets the touchAction property or uses the js alternative + * @param {Manager} manager + * @param {String} value + * @constructor + */ + +var TouchAction = +/*#__PURE__*/ +function () { + function TouchAction(manager, value) { + this.manager = manager; + this.set(value); + } + /** + * @private + * set the touchAction value on the element or enable the polyfill + * @param {String} value + */ + + + var _proto = TouchAction.prototype; + + _proto.set = function set(value) { + // find out the touch-action by the event handlers + if (value === TOUCH_ACTION_COMPUTE) { + value = this.compute(); + } + + if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) { + this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; + } + + this.actions = value.toLowerCase().trim(); + }; + /** + * @private + * just re-set the touchAction value + */ + + + _proto.update = function update() { + this.set(this.manager.options.touchAction); + }; + /** + * @private + * compute the value for the touchAction property based on the recognizer's settings + * @returns {String} value + */ + + + _proto.compute = function compute() { + var actions = []; + each(this.manager.recognizers, function (recognizer) { + if (boolOrFn(recognizer.options.enable, [recognizer])) { + actions = actions.concat(recognizer.getTouchAction()); + } + }); + return cleanTouchActions(actions.join(' ')); + }; + /** + * @private + * this method is called on each input cycle and provides the preventing of the browser behavior + * @param {Object} input + */ + + + _proto.preventDefaults = function preventDefaults(input) { + var srcEvent = input.srcEvent; + var direction = input.offsetDirection; // if the touch action did prevented once this session + + if (this.manager.session.prevented) { + srcEvent.preventDefault(); + return; + } + + var actions = this.actions; + var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE]; + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y]; + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X]; + + if (hasNone) { + // do not prevent defaults if this is a tap gesture + var isTapPointer = input.pointers.length === 1; + var isTapMovement = input.distance < 2; + var isTapTouchTime = input.deltaTime < 250; + + if (isTapPointer && isTapMovement && isTapTouchTime) { + return; + } + } + + if (hasPanX && hasPanY) { + // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent + return; + } + + if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) { + return this.preventSrc(srcEvent); + } + }; + /** + * @private + * call preventDefault to prevent the browser's default behavior (scrolling in most cases) + * @param {Object} srcEvent + */ + + + _proto.preventSrc = function preventSrc(srcEvent) { + this.manager.session.prevented = true; + srcEvent.preventDefault(); + }; + + return TouchAction; +}(); + +/** + * @private + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ +function hasParent(node, parent) { + while (node) { + if (node === parent) { + return true; + } + + node = node.parentNode; + } + + return false; +} + +/** + * @private + * get the center of all the pointers + * @param {Array} pointers + * @return {Object} center contains `x` and `y` properties + */ + +function getCenter(pointers) { + var pointersLength = pointers.length; // no need to loop when only one touch + + if (pointersLength === 1) { + return { + x: round(pointers[0].clientX), + y: round(pointers[0].clientY) + }; + } + + var x = 0; + var y = 0; + var i = 0; + + while (i < pointersLength) { + x += pointers[i].clientX; + y += pointers[i].clientY; + i++; + } + + return { + x: round(x / pointersLength), + y: round(y / pointersLength) + }; +} + +/** + * @private + * create a simple clone from the input used for storage of firstInput and firstMultiple + * @param {Object} input + * @returns {Object} clonedInputData + */ + +function simpleCloneInputData(input) { + // make a simple copy of the pointers because we will get a reference if we don't + // we only need clientXY for the calculations + var pointers = []; + var i = 0; + + while (i < input.pointers.length) { + pointers[i] = { + clientX: round(input.pointers[i].clientX), + clientY: round(input.pointers[i].clientY) + }; + i++; + } + + return { + timeStamp: now(), + pointers: pointers, + center: getCenter(pointers), + deltaX: input.deltaX, + deltaY: input.deltaY + }; +} + +/** + * @private + * calculate the absolute distance between two points + * @param {Object} p1 {x, y} + * @param {Object} p2 {x, y} + * @param {Array} [props] containing x and y keys + * @return {Number} distance + */ + +function getDistance(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + + var x = p2[props[0]] - p1[props[0]]; + var y = p2[props[1]] - p1[props[1]]; + return Math.sqrt(x * x + y * y); +} + +/** + * @private + * calculate the angle between two coordinates + * @param {Object} p1 + * @param {Object} p2 + * @param {Array} [props] containing x and y keys + * @return {Number} angle + */ + +function getAngle(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + + var x = p2[props[0]] - p1[props[0]]; + var y = p2[props[1]] - p1[props[1]]; + return Math.atan2(y, x) * 180 / Math.PI; +} + +/** + * @private + * get the direction between two points + * @param {Number} x + * @param {Number} y + * @return {Number} direction + */ + +function getDirection(x, y) { + if (x === y) { + return DIRECTION_NONE; + } + + if (abs(x) >= abs(y)) { + return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + + return y < 0 ? DIRECTION_UP : DIRECTION_DOWN; +} + +function computeDeltaXY(session, input) { + var center = input.center; // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session; + // jscs throwing error on defalut destructured values and without defaults tests fail + + var offset = session.offsetDelta || {}; + var prevDelta = session.prevDelta || {}; + var prevInput = session.prevInput || {}; + + if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { + prevDelta = session.prevDelta = { + x: prevInput.deltaX || 0, + y: prevInput.deltaY || 0 + }; + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; + } + + input.deltaX = prevDelta.x + (center.x - offset.x); + input.deltaY = prevDelta.y + (center.y - offset.y); +} + +/** + * @private + * calculate the velocity between two points. unit is in px per ms. + * @param {Number} deltaTime + * @param {Number} x + * @param {Number} y + * @return {Object} velocity `x` and `y` + */ +function getVelocity(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; +} + +/** + * @private + * calculate the scale factor between two pointersets + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} scale + */ + +function getScale(start, end) { + return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); +} + +/** + * @private + * calculate the rotation degrees between two pointersets + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} rotation + */ + +function getRotation(start, end) { + return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY); +} + +/** + * @private + * velocity is calculated every x ms + * @param {Object} session + * @param {Object} input + */ + +function computeIntervalInputData(session, input) { + var last = session.lastInterval || input; + var deltaTime = input.timeStamp - last.timeStamp; + var velocity; + var velocityX; + var velocityY; + var direction; + + if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { + var deltaX = input.deltaX - last.deltaX; + var deltaY = input.deltaY - last.deltaY; + var v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = abs(v.x) > abs(v.y) ? v.x : v.y; + direction = getDirection(deltaX, deltaY); + session.lastInterval = input; + } else { + // use latest velocity info if it doesn't overtake a minimum period + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } + + input.velocity = velocity; + input.velocityX = velocityX; + input.velocityY = velocityY; + input.direction = direction; +} + +/** +* @private + * extend the data with some usable properties like scale, rotate, velocity etc + * @param {Object} manager + * @param {Object} input + */ + +function computeInputData(manager, input) { + var session = manager.session; + var pointers = input.pointers; + var pointersLength = pointers.length; // store the first input to calculate the distance and direction + + if (!session.firstInput) { + session.firstInput = simpleCloneInputData(input); + } // to compute scale and rotation we need to store the multiple touches + + + if (pointersLength > 1 && !session.firstMultiple) { + session.firstMultiple = simpleCloneInputData(input); + } else if (pointersLength === 1) { + session.firstMultiple = false; + } + + var firstInput = session.firstInput, + firstMultiple = session.firstMultiple; + var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; + var center = input.center = getCenter(pointers); + input.timeStamp = now(); + input.deltaTime = input.timeStamp - firstInput.timeStamp; + input.angle = getAngle(offsetCenter, center); + input.distance = getDistance(offsetCenter, center); + computeDeltaXY(session, input); + input.offsetDirection = getDirection(input.deltaX, input.deltaY); + var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY); + input.overallVelocityX = overallVelocity.x; + input.overallVelocityY = overallVelocity.y; + input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y; + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; + input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers; + computeIntervalInputData(session, input); // find the correct target + + var target = manager.element; + var srcEvent = input.srcEvent; + var srcEventTarget; + + if (srcEvent.composedPath) { + srcEventTarget = srcEvent.composedPath()[0]; + } else if (srcEvent.path) { + srcEventTarget = srcEvent.path[0]; + } else { + srcEventTarget = srcEvent.target; + } + + if (hasParent(srcEventTarget, target)) { + target = srcEventTarget; + } + + input.target = target; +} + +/** + * @private + * handle input events + * @param {Manager} manager + * @param {String} eventType + * @param {Object} input + */ + +function inputHandler(manager, eventType, input) { + var pointersLen = input.pointers.length; + var changedPointersLen = input.changedPointers.length; + var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0; + var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0; + input.isFirst = !!isFirst; + input.isFinal = !!isFinal; + + if (isFirst) { + manager.session = {}; + } // source event is the normalized value of the domEvents + // like 'touchstart, mouseup, pointerdown' + + + input.eventType = eventType; // compute scale, rotation etc + + computeInputData(manager, input); // emit secret event + + manager.emit('hammer.input', input); + manager.recognize(input); + manager.session.prevInput = input; +} + +/** + * @private + * split string on whitespace + * @param {String} str + * @returns {Array} words + */ +function splitStr(str) { + return str.trim().split(/\s+/g); +} + +/** + * @private + * addEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ + +function addEventListeners(target, types, handler) { + each(splitStr(types), function (type) { + target.addEventListener(type, handler, false); + }); +} + +/** + * @private + * removeEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ + +function removeEventListeners(target, types, handler) { + each(splitStr(types), function (type) { + target.removeEventListener(type, handler, false); + }); +} + +/** + * @private + * get the window object of an element + * @param {HTMLElement} element + * @returns {DocumentView|Window} + */ +function getWindowForElement(element) { + var doc = element.ownerDocument || element; + return doc.defaultView || doc.parentWindow || window; +} + +/** + * @private + * create new input type manager + * @param {Manager} manager + * @param {Function} callback + * @returns {Input} + * @constructor + */ + +var Input = +/*#__PURE__*/ +function () { + function Input(manager, callback) { + var self = this; + this.manager = manager; + this.callback = callback; + this.element = manager.element; + this.target = manager.options.inputTarget; // smaller wrapper around the handler, for the scope and the enabled state of the manager, + // so when disabled the input events are completely bypassed. + + this.domHandler = function (ev) { + if (boolOrFn(manager.options.enable, [manager])) { + self.handler(ev); + } + }; + + this.init(); + } + /** + * @private + * should handle the inputEvent data and trigger the callback + * @virtual + */ + + + var _proto = Input.prototype; + + _proto.handler = function handler() {}; + /** + * @private + * bind the events + */ + + + _proto.init = function init() { + this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }; + /** + * @private + * unbind the events + */ + + + _proto.destroy = function destroy() { + this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }; + + return Input; +}(); + +/** + * @private + * find if a array contains the object using indexOf or a simple polyFill + * @param {Array} src + * @param {String} find + * @param {String} [findByKey] + * @return {Boolean|Number} false when not found, or the index + */ +function inArray(src, find, findByKey) { + if (src.indexOf && !findByKey) { + return src.indexOf(find); + } else { + var i = 0; + + while (i < src.length) { + if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) { + // do not use === here, test fails + return i; + } + + i++; + } + + return -1; + } +} + +var POINTER_INPUT_MAP = { + pointerdown: INPUT_START, + pointermove: INPUT_MOVE, + pointerup: INPUT_END, + pointercancel: INPUT_CANCEL, + pointerout: INPUT_CANCEL +}; // in IE10 the pointer types is defined as an enum + +var IE10_POINTER_TYPE_ENUM = { + 2: INPUT_TYPE_TOUCH, + 3: INPUT_TYPE_PEN, + 4: INPUT_TYPE_MOUSE, + 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 + +}; +var POINTER_ELEMENT_EVENTS = 'pointerdown'; +var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive + +if (win.MSPointerEvent && !win.PointerEvent) { + POINTER_ELEMENT_EVENTS = 'MSPointerDown'; + POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; +} +/** + * @private + * Pointer events input + * @constructor + * @extends Input + */ + + +var PointerEventInput = +/*#__PURE__*/ +function (_Input) { + _inheritsLoose(PointerEventInput, _Input); + + function PointerEventInput() { + var _this; + + var proto = PointerEventInput.prototype; + proto.evEl = POINTER_ELEMENT_EVENTS; + proto.evWin = POINTER_WINDOW_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.store = _this.manager.session.pointerEvents = []; + return _this; + } + /** + * @private + * handle mouse events + * @param {Object} ev + */ + + + var _proto = PointerEventInput.prototype; + + _proto.handler = function handler(ev) { + var store = this.store; + var removePointer = false; + var eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); + var eventType = POINTER_INPUT_MAP[eventTypeNormalized]; + var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; + var isTouch = pointerType === INPUT_TYPE_TOUCH; // get index of the event in the store + + var storeIndex = inArray(store, ev.pointerId, 'pointerId'); // start and mouse must be down + + if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { + if (storeIndex < 0) { + store.push(ev); + storeIndex = store.length - 1; + } + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + removePointer = true; + } // it not found, so the pointer hasn't been down (so it's probably a hover) + + + if (storeIndex < 0) { + return; + } // update the event in the store + + + store[storeIndex] = ev; + this.callback(this.manager, eventType, { + pointers: store, + changedPointers: [ev], + pointerType: pointerType, + srcEvent: ev + }); + + if (removePointer) { + // remove from the store + store.splice(storeIndex, 1); + } + }; + + return PointerEventInput; +}(Input); + +/** + * @private + * convert array-like objects to real arrays + * @param {Object} obj + * @returns {Array} + */ +function toArray(obj) { + return Array.prototype.slice.call(obj, 0); +} + +/** + * @private + * unique array with objects based on a key (like 'id') or just by the array's value + * @param {Array} src [{id:1},{id:2},{id:1}] + * @param {String} [key] + * @param {Boolean} [sort=False] + * @returns {Array} [{id:1},{id:2}] + */ + +function uniqueArray(src, key, sort) { + var results = []; + var values = []; + var i = 0; + + while (i < src.length) { + var val = key ? src[i][key] : src[i]; + + if (inArray(values, val) < 0) { + results.push(src[i]); + } + + values[i] = val; + i++; + } + + if (sort) { + if (!key) { + results = results.sort(); + } else { + results = results.sort(function (a, b) { + return a[key] > b[key]; + }); + } + } + + return results; +} + +var TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; +var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; +/** + * @private + * Multi-user touch events input + * @constructor + * @extends Input + */ + +var TouchInput = +/*#__PURE__*/ +function (_Input) { + _inheritsLoose(TouchInput, _Input); + + function TouchInput() { + var _this; + + TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.targetIds = {}; // this.evTarget = TOUCH_TARGET_EVENTS; + + return _this; + } + + var _proto = TouchInput.prototype; + + _proto.handler = function handler(ev) { + var type = TOUCH_INPUT_MAP[ev.type]; + var touches = getTouches.call(this, ev, type); + + if (!touches) { + return; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + }; + + return TouchInput; +}(Input); + +function getTouches(ev, type) { + var allTouches = toArray(ev.touches); + var targetIds = this.targetIds; // when there is only one touch, the process can be simplified + + if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + return [allTouches, allTouches]; + } + + var i; + var targetTouches; + var changedTouches = toArray(ev.changedTouches); + var changedTargetTouches = []; + var target = this.target; // get target touches from touches + + targetTouches = allTouches.filter(function (touch) { + return hasParent(touch.target, target); + }); // collect touches + + if (type === INPUT_START) { + i = 0; + + while (i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; + } + } // filter changed touches to only contain touches that exist in the collected target ids + + + i = 0; + + while (i < changedTouches.length) { + if (targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } // cleanup removed touches + + + if (type & (INPUT_END | INPUT_CANCEL)) { + delete targetIds[changedTouches[i].identifier]; + } + + i++; + } + + if (!changedTargetTouches.length) { + return; + } + + return [// merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' + uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches]; +} + +var MOUSE_INPUT_MAP = { + mousedown: INPUT_START, + mousemove: INPUT_MOVE, + mouseup: INPUT_END +}; +var MOUSE_ELEMENT_EVENTS = 'mousedown'; +var MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; +/** + * @private + * Mouse events input + * @constructor + * @extends Input + */ + +var MouseInput = +/*#__PURE__*/ +function (_Input) { + _inheritsLoose(MouseInput, _Input); + + function MouseInput() { + var _this; + + var proto = MouseInput.prototype; + proto.evEl = MOUSE_ELEMENT_EVENTS; + proto.evWin = MOUSE_WINDOW_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.pressed = false; // mousedown state + + return _this; + } + /** + * @private + * handle mouse events + * @param {Object} ev + */ + + + var _proto = MouseInput.prototype; + + _proto.handler = function handler(ev) { + var eventType = MOUSE_INPUT_MAP[ev.type]; // on start we want to have the left mouse button down + + if (eventType & INPUT_START && ev.button === 0) { + this.pressed = true; + } + + if (eventType & INPUT_MOVE && ev.which !== 1) { + eventType = INPUT_END; + } // mouse must be down + + + if (!this.pressed) { + return; + } + + if (eventType & INPUT_END) { + this.pressed = false; + } + + this.callback(this.manager, eventType, { + pointers: [ev], + changedPointers: [ev], + pointerType: INPUT_TYPE_MOUSE, + srcEvent: ev + }); + }; + + return MouseInput; +}(Input); + +/** + * @private + * Combined touch and mouse input + * + * Touch has a higher priority then mouse, and while touching no mouse events are allowed. + * This because touch devices also emit mouse events while doing a touch. + * + * @constructor + * @extends Input + */ + +var DEDUP_TIMEOUT = 2500; +var DEDUP_DISTANCE = 25; + +function setLastTouch(eventData) { + var _eventData$changedPoi = eventData.changedPointers, + touch = _eventData$changedPoi[0]; + + if (touch.identifier === this.primaryTouch) { + var lastTouch = { + x: touch.clientX, + y: touch.clientY + }; + var lts = this.lastTouches; + this.lastTouches.push(lastTouch); + + var removeLastTouch = function removeLastTouch() { + var i = lts.indexOf(lastTouch); + + if (i > -1) { + lts.splice(i, 1); + } + }; + + setTimeout(removeLastTouch, DEDUP_TIMEOUT); + } +} + +function recordTouches(eventType, eventData) { + if (eventType & INPUT_START) { + this.primaryTouch = eventData.changedPointers[0].identifier; + setLastTouch.call(this, eventData); + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + setLastTouch.call(this, eventData); + } +} + +function isSyntheticEvent(eventData) { + var x = eventData.srcEvent.clientX; + var y = eventData.srcEvent.clientY; + + for (var i = 0; i < this.lastTouches.length; i++) { + var t = this.lastTouches[i]; + var dx = Math.abs(x - t.x); + var dy = Math.abs(y - t.y); + + if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) { + return true; + } + } + + return false; +} + +var TouchMouseInput = +/*#__PURE__*/ +function () { + var TouchMouseInput = + /*#__PURE__*/ + function (_Input) { + _inheritsLoose(TouchMouseInput, _Input); + + function TouchMouseInput(_manager, callback) { + var _this; + + _this = _Input.call(this, _manager, callback) || this; + + _this.handler = function (manager, inputEvent, inputData) { + var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH; + var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE; + + if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) { + return; + } // when we're in a touch event, record touches to de-dupe synthetic mouse event + + + if (isTouch) { + recordTouches.call(_assertThisInitialized(_assertThisInitialized(_this)), inputEvent, inputData); + } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized(_assertThisInitialized(_this)), inputData)) { + return; + } + + _this.callback(manager, inputEvent, inputData); + }; + + _this.touch = new TouchInput(_this.manager, _this.handler); + _this.mouse = new MouseInput(_this.manager, _this.handler); + _this.primaryTouch = null; + _this.lastTouches = []; + return _this; + } + /** + * @private + * handle mouse and touch events + * @param {Hammer} manager + * @param {String} inputEvent + * @param {Object} inputData + */ + + + var _proto = TouchMouseInput.prototype; + + /** + * @private + * remove the event listeners + */ + _proto.destroy = function destroy() { + this.touch.destroy(); + this.mouse.destroy(); + }; + + return TouchMouseInput; + }(Input); + + return TouchMouseInput; +}(); + +/** + * @private + * create new input type manager + * called by the Manager constructor + * @param {Hammer} manager + * @returns {Input} + */ + +function createInputInstance(manager) { + var Type; // let inputClass = manager.options.inputClass; + + var inputClass = manager.options.inputClass; + + if (inputClass) { + Type = inputClass; + } else if (SUPPORT_POINTER_EVENTS) { + Type = PointerEventInput; + } else if (SUPPORT_ONLY_TOUCH) { + Type = TouchInput; + } else if (!SUPPORT_TOUCH) { + Type = MouseInput; + } else { + Type = TouchMouseInput; + } + + return new Type(manager, inputHandler); +} + +/** + * @private + * if the argument is an array, we want to execute the fn on each entry + * if it aint an array we don't want to do a thing. + * this is used by all the methods that accept a single and array argument. + * @param {*|Array} arg + * @param {String} fn + * @param {Object} [context] + * @returns {Boolean} + */ + +function invokeArrayArg(arg, fn, context) { + if (Array.isArray(arg)) { + each(arg, context[fn], context); + return true; + } + + return false; +} + +var STATE_POSSIBLE = 1; +var STATE_BEGAN = 2; +var STATE_CHANGED = 4; +var STATE_ENDED = 8; +var STATE_RECOGNIZED = STATE_ENDED; +var STATE_CANCELLED = 16; +var STATE_FAILED = 32; + +/** + * @private + * get a unique id + * @returns {number} uniqueId + */ +var _uniqueId = 1; +function uniqueId() { + return _uniqueId++; +} + +/** + * @private + * get a recognizer by name if it is bound to a manager + * @param {Recognizer|String} otherRecognizer + * @param {Recognizer} recognizer + * @returns {Recognizer} + */ +function getRecognizerByNameIfManager(otherRecognizer, recognizer) { + var manager = recognizer.manager; + + if (manager) { + return manager.get(otherRecognizer); + } + + return otherRecognizer; +} + +/** + * @private + * get a usable string, used as event postfix + * @param {constant} state + * @returns {String} state + */ + +function stateStr(state) { + if (state & STATE_CANCELLED) { + return 'cancel'; + } else if (state & STATE_ENDED) { + return 'end'; + } else if (state & STATE_CHANGED) { + return 'move'; + } else if (state & STATE_BEGAN) { + return 'start'; + } + + return ''; +} + +/** + * @private + * Recognizer flow explained; * + * All recognizers have the initial state of POSSIBLE when a input session starts. + * The definition of a input session is from the first input until the last input, with all it's movement in it. * + * Example session for mouse-input: mousedown -> mousemove -> mouseup + * + * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed + * which determines with state it should be. + * + * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to + * POSSIBLE to give it another change on the next cycle. + * + * Possible + * | + * +-----+---------------+ + * | | + * +-----+-----+ | + * | | | + * Failed Cancelled | + * +-------+------+ + * | | + * Recognized Began + * | + * Changed + * | + * Ended/Recognized + */ + +/** + * @private + * Recognizer + * Every recognizer needs to extend from this class. + * @constructor + * @param {Object} options + */ + +var Recognizer = +/*#__PURE__*/ +function () { + function Recognizer(options) { + if (options === void 0) { + options = {}; + } + + this.options = _extends({ + enable: true + }, options); + this.id = uniqueId(); + this.manager = null; // default is enable true + + this.state = STATE_POSSIBLE; + this.simultaneous = {}; + this.requireFail = []; + } + /** + * @private + * set options + * @param {Object} options + * @return {Recognizer} + */ + + + var _proto = Recognizer.prototype; + + _proto.set = function set(options) { + assign$1(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state + + this.manager && this.manager.touchAction.update(); + return this; + }; + /** + * @private + * recognize simultaneous with an other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.recognizeWith = function recognizeWith(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { + return this; + } + + var simultaneous = this.simultaneous; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + + if (!simultaneous[otherRecognizer.id]) { + simultaneous[otherRecognizer.id] = otherRecognizer; + otherRecognizer.recognizeWith(this); + } + + return this; + }; + /** + * @private + * drop the simultaneous link. it doesnt remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + delete this.simultaneous[otherRecognizer.id]; + return this; + }; + /** + * @private + * recognizer can only run when an other is failing + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.requireFailure = function requireFailure(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { + return this; + } + + var requireFail = this.requireFail; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + + if (inArray(requireFail, otherRecognizer) === -1) { + requireFail.push(otherRecognizer); + otherRecognizer.requireFailure(this); + } + + return this; + }; + /** + * @private + * drop the requireFailure link. it does not remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + var index = inArray(this.requireFail, otherRecognizer); + + if (index > -1) { + this.requireFail.splice(index, 1); + } + + return this; + }; + /** + * @private + * has require failures boolean + * @returns {boolean} + */ + + + _proto.hasRequireFailures = function hasRequireFailures() { + return this.requireFail.length > 0; + }; + /** + * @private + * if the recognizer can recognize simultaneous with an other recognizer + * @param {Recognizer} otherRecognizer + * @returns {Boolean} + */ + + + _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) { + return !!this.simultaneous[otherRecognizer.id]; + }; + /** + * @private + * You should use `tryEmit` instead of `emit` directly to check + * that all the needed recognizers has failed before emitting. + * @param {Object} input + */ + + + _proto.emit = function emit(input) { + var self = this; + var state = this.state; + + function emit(event) { + self.manager.emit(event, input); + } // 'panstart' and 'panmove' + + + if (state < STATE_ENDED) { + emit(self.options.event + stateStr(state)); + } + + emit(self.options.event); // simple 'eventName' events + + if (input.additionalEvent) { + // additional event(panleft, panright, pinchin, pinchout...) + emit(input.additionalEvent); + } // panend and pancancel + + + if (state >= STATE_ENDED) { + emit(self.options.event + stateStr(state)); + } + }; + /** + * @private + * Check that all the require failure recognizers has failed, + * if true, it emits a gesture event, + * otherwise, setup the state to FAILED. + * @param {Object} input + */ + + + _proto.tryEmit = function tryEmit(input) { + if (this.canEmit()) { + return this.emit(input); + } // it's failing anyway + + + this.state = STATE_FAILED; + }; + /** + * @private + * can we emit? + * @returns {boolean} + */ + + + _proto.canEmit = function canEmit() { + var i = 0; + + while (i < this.requireFail.length) { + if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { + return false; + } + + i++; + } + + return true; + }; + /** + * @private + * update the recognizer + * @param {Object} inputData + */ + + + _proto.recognize = function recognize(inputData) { + // make a new copy of the inputData + // so we can change the inputData without messing up the other recognizers + var inputDataClone = assign$1({}, inputData); // is is enabled and allow recognizing? + + if (!boolOrFn(this.options.enable, [this, inputDataClone])) { + this.reset(); + this.state = STATE_FAILED; + return; + } // reset when we've reached the end + + + if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { + this.state = STATE_POSSIBLE; + } + + this.state = this.process(inputDataClone); // the recognizer has recognized a gesture + // so trigger an event + + if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { + this.tryEmit(inputDataClone); + } + }; + /** + * @private + * return the state of the recognizer + * the actual recognizing happens in this method + * @virtual + * @param {Object} inputData + * @returns {constant} STATE + */ + + /* jshint ignore:start */ + + + _proto.process = function process(inputData) {}; + /* jshint ignore:end */ + + /** + * @private + * return the preferred touch-action + * @virtual + * @returns {Array} + */ + + + _proto.getTouchAction = function getTouchAction() {}; + /** + * @private + * called when the gesture isn't allowed to recognize + * like when another is being recognized or it is disabled + * @virtual + */ + + + _proto.reset = function reset() {}; + + return Recognizer; +}(); + +/** + * @private + * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur + * between the given interval and position. The delay option can be used to recognize multi-taps without firing + * a single tap. + * + * The eventData from the emitted event contains the property `tapCount`, which contains the amount of + * multi-taps being recognized. + * @constructor + * @extends Recognizer + */ + +var TapRecognizer = +/*#__PURE__*/ +function (_Recognizer) { + _inheritsLoose(TapRecognizer, _Recognizer); + + function TapRecognizer(options) { + var _this; + + if (options === void 0) { + options = {}; + } + + _this = _Recognizer.call(this, _extends({ + event: 'tap', + pointers: 1, + taps: 1, + interval: 300, + // max time between the multi-tap taps + time: 250, + // max time of the pointer to be down (like finger on the screen) + threshold: 9, + // a minimal movement is ok, but keep it low + posThreshold: 10 + }, options)) || this; // previous time and center, + // used for tap counting + + _this.pTime = false; + _this.pCenter = false; + _this._timer = null; + _this._input = null; + _this.count = 0; + return _this; + } + + var _proto = TapRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_MANIPULATION]; + }; + + _proto.process = function process(input) { + var _this2 = this; + + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTouchTime = input.deltaTime < options.time; + this.reset(); + + if (input.eventType & INPUT_START && this.count === 0) { + return this.failTimeout(); + } // we only allow little movement + // and we've reached an end event, so a tap is possible + + + if (validMovement && validTouchTime && validPointers) { + if (input.eventType !== INPUT_END) { + return this.failTimeout(); + } + + var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true; + var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; + this.pTime = input.timeStamp; + this.pCenter = input.center; + + if (!validMultiTap || !validInterval) { + this.count = 1; + } else { + this.count += 1; + } + + this._input = input; // if tap count matches we have recognized it, + // else it has began recognizing... + + var tapCount = this.count % options.taps; + + if (tapCount === 0) { + // no failing requirements, immediately trigger the tap event + // or wait as long as the multitap interval to trigger + if (!this.hasRequireFailures()) { + return STATE_RECOGNIZED; + } else { + this._timer = setTimeout(function () { + _this2.state = STATE_RECOGNIZED; + + _this2.tryEmit(); + }, options.interval); + return STATE_BEGAN; + } + } + } + + return STATE_FAILED; + }; + + _proto.failTimeout = function failTimeout() { + var _this3 = this; + + this._timer = setTimeout(function () { + _this3.state = STATE_FAILED; + }, this.options.interval); + return STATE_FAILED; + }; + + _proto.reset = function reset() { + clearTimeout(this._timer); + }; + + _proto.emit = function emit() { + if (this.state === STATE_RECOGNIZED) { + this._input.tapCount = this.count; + this.manager.emit(this.options.event, this._input); + } + }; + + return TapRecognizer; +}(Recognizer); + +/** + * @private + * This recognizer is just used as a base for the simple attribute recognizers. + * @constructor + * @extends Recognizer + */ + +var AttrRecognizer = +/*#__PURE__*/ +function (_Recognizer) { + _inheritsLoose(AttrRecognizer, _Recognizer); + + function AttrRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _Recognizer.call(this, _extends({ + pointers: 1 + }, options)) || this; + } + /** + * @private + * Used to check if it the recognizer receives valid input, like input.distance > 10. + * @memberof AttrRecognizer + * @param {Object} input + * @returns {Boolean} recognized + */ + + + var _proto = AttrRecognizer.prototype; + + _proto.attrTest = function attrTest(input) { + var optionPointers = this.options.pointers; + return optionPointers === 0 || input.pointers.length === optionPointers; + }; + /** + * @private + * Process the input and return the state for the recognizer + * @memberof AttrRecognizer + * @param {Object} input + * @returns {*} State + */ + + + _proto.process = function process(input) { + var state = this.state; + var eventType = input.eventType; + var isRecognized = state & (STATE_BEGAN | STATE_CHANGED); + var isValid = this.attrTest(input); // on cancel input and we've recognized before, return STATE_CANCELLED + + if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { + return state | STATE_CANCELLED; + } else if (isRecognized || isValid) { + if (eventType & INPUT_END) { + return state | STATE_ENDED; + } else if (!(state & STATE_BEGAN)) { + return STATE_BEGAN; + } + + return state | STATE_CHANGED; + } + + return STATE_FAILED; + }; + + return AttrRecognizer; +}(Recognizer); + +/** + * @private + * direction cons to string + * @param {constant} direction + * @returns {String} + */ + +function directionStr(direction) { + if (direction === DIRECTION_DOWN) { + return 'down'; + } else if (direction === DIRECTION_UP) { + return 'up'; + } else if (direction === DIRECTION_LEFT) { + return 'left'; + } else if (direction === DIRECTION_RIGHT) { + return 'right'; + } + + return ''; +} + +/** + * @private + * Pan + * Recognized when the pointer is down and moved in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ + +var PanRecognizer = +/*#__PURE__*/ +function (_AttrRecognizer) { + _inheritsLoose(PanRecognizer, _AttrRecognizer); + + function PanRecognizer(options) { + var _this; + + if (options === void 0) { + options = {}; + } + + _this = _AttrRecognizer.call(this, _extends({ + event: 'pan', + threshold: 10, + pointers: 1, + direction: DIRECTION_ALL + }, options)) || this; + _this.pX = null; + _this.pY = null; + return _this; + } + + var _proto = PanRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + var direction = this.options.direction; + var actions = []; + + if (direction & DIRECTION_HORIZONTAL) { + actions.push(TOUCH_ACTION_PAN_Y); + } + + if (direction & DIRECTION_VERTICAL) { + actions.push(TOUCH_ACTION_PAN_X); + } + + return actions; + }; + + _proto.directionTest = function directionTest(input) { + var options = this.options; + var hasMoved = true; + var distance = input.distance; + var direction = input.direction; + var x = input.deltaX; + var y = input.deltaY; // lock to axis? + + if (!(direction & options.direction)) { + if (options.direction & DIRECTION_HORIZONTAL) { + direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + hasMoved = x !== this.pX; + distance = Math.abs(input.deltaX); + } else { + direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN; + hasMoved = y !== this.pY; + distance = Math.abs(input.deltaY); + } + } + + input.direction = direction; + return hasMoved && distance > options.threshold && direction & options.direction; + }; + + _proto.attrTest = function attrTest(input) { + return AttrRecognizer.prototype.attrTest.call(this, input) && ( // replace with a super call + this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input)); + }; + + _proto.emit = function emit(input) { + this.pX = input.deltaX; + this.pY = input.deltaY; + var direction = directionStr(input.direction); + + if (direction) { + input.additionalEvent = this.options.event + direction; + } + + _AttrRecognizer.prototype.emit.call(this, input); + }; + + return PanRecognizer; +}(AttrRecognizer); + +/** + * @private + * Swipe + * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ + +var SwipeRecognizer = +/*#__PURE__*/ +function (_AttrRecognizer) { + _inheritsLoose(SwipeRecognizer, _AttrRecognizer); + + function SwipeRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _AttrRecognizer.call(this, _extends({ + event: 'swipe', + threshold: 10, + velocity: 0.3, + direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, + pointers: 1 + }, options)) || this; + } + + var _proto = SwipeRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return PanRecognizer.prototype.getTouchAction.call(this); + }; + + _proto.attrTest = function attrTest(input) { + var direction = this.options.direction; + var velocity; + + if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { + velocity = input.overallVelocity; + } else if (direction & DIRECTION_HORIZONTAL) { + velocity = input.overallVelocityX; + } else if (direction & DIRECTION_VERTICAL) { + velocity = input.overallVelocityY; + } + + return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END; + }; + + _proto.emit = function emit(input) { + var direction = directionStr(input.offsetDirection); + + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this.manager.emit(this.options.event, input); + }; + + return SwipeRecognizer; +}(AttrRecognizer); + +/** + * @private + * Pinch + * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). + * @constructor + * @extends AttrRecognizer + */ + +var PinchRecognizer = +/*#__PURE__*/ +function (_AttrRecognizer) { + _inheritsLoose(PinchRecognizer, _AttrRecognizer); + + function PinchRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _AttrRecognizer.call(this, _extends({ + event: 'pinch', + threshold: 0, + pointers: 2 + }, options)) || this; + } + + var _proto = PinchRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_NONE]; + }; + + _proto.attrTest = function attrTest(input) { + return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); + }; + + _proto.emit = function emit(input) { + if (input.scale !== 1) { + var inOut = input.scale < 1 ? 'in' : 'out'; + input.additionalEvent = this.options.event + inOut; + } + + _AttrRecognizer.prototype.emit.call(this, input); + }; + + return PinchRecognizer; +}(AttrRecognizer); + +/** + * @private + * Rotate + * Recognized when two or more pointer are moving in a circular motion. + * @constructor + * @extends AttrRecognizer + */ + +var RotateRecognizer = +/*#__PURE__*/ +function (_AttrRecognizer) { + _inheritsLoose(RotateRecognizer, _AttrRecognizer); + + function RotateRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _AttrRecognizer.call(this, _extends({ + event: 'rotate', + threshold: 0, + pointers: 2 + }, options)) || this; + } + + var _proto = RotateRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_NONE]; + }; + + _proto.attrTest = function attrTest(input) { + return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); + }; + + return RotateRecognizer; +}(AttrRecognizer); + +/** + * @private + * Press + * Recognized when the pointer is down for x ms without any movement. + * @constructor + * @extends Recognizer + */ + +var PressRecognizer = +/*#__PURE__*/ +function (_Recognizer) { + _inheritsLoose(PressRecognizer, _Recognizer); + + function PressRecognizer(options) { + var _this; + + if (options === void 0) { + options = {}; + } + + _this = _Recognizer.call(this, _extends({ + event: 'press', + pointers: 1, + time: 251, + // minimal time of the pointer to be pressed + threshold: 9 + }, options)) || this; + _this._timer = null; + _this._input = null; + return _this; + } + + var _proto = PressRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_AUTO]; + }; + + _proto.process = function process(input) { + var _this2 = this; + + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTime = input.deltaTime > options.time; + this._input = input; // we only allow little movement + // and we've reached an end event, so a tap is possible + + if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) { + this.reset(); + } else if (input.eventType & INPUT_START) { + this.reset(); + this._timer = setTimeout(function () { + _this2.state = STATE_RECOGNIZED; + + _this2.tryEmit(); + }, options.time); + } else if (input.eventType & INPUT_END) { + return STATE_RECOGNIZED; + } + + return STATE_FAILED; + }; + + _proto.reset = function reset() { + clearTimeout(this._timer); + }; + + _proto.emit = function emit(input) { + if (this.state !== STATE_RECOGNIZED) { + return; + } + + if (input && input.eventType & INPUT_END) { + this.manager.emit(this.options.event + "up", input); + } else { + this._input.timeStamp = now(); + this.manager.emit(this.options.event, this._input); + } + }; + + return PressRecognizer; +}(Recognizer); + +var defaults = { + /** + * @private + * set if DOM events are being triggered. + * But this is slower and unused by simple implementations, so disabled by default. + * @type {Boolean} + * @default false + */ + domEvents: false, + + /** + * @private + * The value for the touchAction property/fallback. + * When set to `compute` it will magically set the correct value based on the added recognizers. + * @type {String} + * @default compute + */ + touchAction: TOUCH_ACTION_COMPUTE, + + /** + * @private + * @type {Boolean} + * @default true + */ + enable: true, + + /** + * @private + * EXPERIMENTAL FEATURE -- can be removed/changed + * Change the parent input target element. + * If Null, then it is being set the to main element. + * @type {Null|EventTarget} + * @default null + */ + inputTarget: null, + + /** + * @private + * force an input class + * @type {Null|Function} + * @default null + */ + inputClass: null, + + /** + * @private + * Some CSS properties can be used to improve the working of Hammer. + * Add them to this method and they will be set when creating a new Manager. + * @namespace + */ + cssProps: { + /** + * @private + * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userSelect: "none", + + /** + * @private + * Disable the Windows Phone grippers when pressing an element. + * @type {String} + * @default 'none' + */ + touchSelect: "none", + + /** + * @private + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @type {String} + * @default 'none' + */ + touchCallout: "none", + + /** + * @private + * Specifies whether zooming is enabled. Used by IE10> + * @type {String} + * @default 'none' + */ + contentZooming: "none", + + /** + * @private + * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userDrag: "none", + + /** + * @private + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in iOS. This property obeys the alpha value, if specified. + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: "rgba(0,0,0,0)" + } +}; +/** + * @private + * Default recognizer setup when calling `Hammer()` + * When creating a new Manager these will be skipped. + * This is separated with other defaults because of tree-shaking. + * @type {Array} + */ + +var preset = [[RotateRecognizer, { + enable: false +}], [PinchRecognizer, { + enable: false +}, ['rotate']], [SwipeRecognizer, { + direction: DIRECTION_HORIZONTAL +}], [PanRecognizer, { + direction: DIRECTION_HORIZONTAL +}, ['swipe']], [TapRecognizer], [TapRecognizer, { + event: 'doubletap', + taps: 2 +}, ['tap']], [PressRecognizer]]; + +var STOP = 1; +var FORCED_STOP = 2; +/** + * @private + * add/remove the css properties as defined in manager.options.cssProps + * @param {Manager} manager + * @param {Boolean} add + */ + +function toggleCssProps(manager, add) { + var element = manager.element; + + if (!element.style) { + return; + } + + var prop; + each(manager.options.cssProps, function (value, name) { + prop = prefixed(element.style, name); + + if (add) { + manager.oldCssProps[prop] = element.style[prop]; + element.style[prop] = value; + } else { + element.style[prop] = manager.oldCssProps[prop] || ""; + } + }); + + if (!add) { + manager.oldCssProps = {}; + } +} +/** + * @private + * trigger dom event + * @param {String} event + * @param {Object} data + */ + + +function triggerDomEvent(event, data) { + var gestureEvent = document.createEvent("Event"); + gestureEvent.initEvent(event, true, true); + gestureEvent.gesture = data; + data.target.dispatchEvent(gestureEvent); +} +/** +* @private + * Manager + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ + + +var Manager = +/*#__PURE__*/ +function () { + function Manager(element, options) { + var _this = this; + + this.options = assign$1({}, defaults, options || {}); + this.options.inputTarget = this.options.inputTarget || element; + this.handlers = {}; + this.session = {}; + this.recognizers = []; + this.oldCssProps = {}; + this.element = element; + this.input = createInputInstance(this); + this.touchAction = new TouchAction(this, this.options.touchAction); + toggleCssProps(this, true); + each(this.options.recognizers, function (item) { + var recognizer = _this.add(new item[0](item[1])); + + item[2] && recognizer.recognizeWith(item[2]); + item[3] && recognizer.requireFailure(item[3]); + }, this); + } + /** + * @private + * set options + * @param {Object} options + * @returns {Manager} + */ + + + var _proto = Manager.prototype; + + _proto.set = function set(options) { + assign$1(this.options, options); // Options that need a little more setup + + if (options.touchAction) { + this.touchAction.update(); + } + + if (options.inputTarget) { + // Clean up existing event listeners and reinitialize + this.input.destroy(); + this.input.target = options.inputTarget; + this.input.init(); + } + + return this; + }; + /** + * @private + * stop recognizing for this session. + * This session will be discarded, when a new [input]start event is fired. + * When forced, the recognizer cycle is stopped immediately. + * @param {Boolean} [force] + */ + + + _proto.stop = function stop(force) { + this.session.stopped = force ? FORCED_STOP : STOP; + }; + /** + * @private + * run the recognizers! + * called by the inputHandler function on every movement of the pointers (touches) + * it walks through all the recognizers and tries to detect the gesture that is being made + * @param {Object} inputData + */ + + + _proto.recognize = function recognize(inputData) { + var session = this.session; + + if (session.stopped) { + return; + } // run the touch-action polyfill + + + this.touchAction.preventDefaults(inputData); + var recognizer; + var recognizers = this.recognizers; // this holds the recognizer that is being recognized. + // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED + // if no recognizer is detecting a thing, it is set to `null` + + var curRecognizer = session.curRecognizer; // reset when the last recognizer is recognized + // or when we're in a new session + + if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) { + session.curRecognizer = null; + curRecognizer = null; + } + + var i = 0; + + while (i < recognizers.length) { + recognizer = recognizers[i]; // find out if we are allowed try to recognize the input for this one. + // 1. allow if the session is NOT forced stopped (see the .stop() method) + // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one + // that is being recognized. + // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. + // this can be setup with the `recognizeWith()` method on the recognizer. + + if (session.stopped !== FORCED_STOP && ( // 1 + !curRecognizer || recognizer === curRecognizer || // 2 + recognizer.canRecognizeWith(curRecognizer))) { + // 3 + recognizer.recognize(inputData); + } else { + recognizer.reset(); + } // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the + // current active recognizer. but only if we don't already have an active recognizer + + + if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { + session.curRecognizer = recognizer; + curRecognizer = recognizer; + } + + i++; + } + }; + /** + * @private + * get a recognizer by its event name. + * @param {Recognizer|String} recognizer + * @returns {Recognizer|Null} + */ + + + _proto.get = function get(recognizer) { + if (recognizer instanceof Recognizer) { + return recognizer; + } + + var recognizers = this.recognizers; + + for (var i = 0; i < recognizers.length; i++) { + if (recognizers[i].options.event === recognizer) { + return recognizers[i]; + } + } + + return null; + }; + /** + * @private add a recognizer to the manager + * existing recognizers with the same event name will be removed + * @param {Recognizer} recognizer + * @returns {Recognizer|Manager} + */ + + + _proto.add = function add(recognizer) { + if (invokeArrayArg(recognizer, "add", this)) { + return this; + } // remove existing + + + var existing = this.get(recognizer.options.event); + + if (existing) { + this.remove(existing); + } + + this.recognizers.push(recognizer); + recognizer.manager = this; + this.touchAction.update(); + return recognizer; + }; + /** + * @private + * remove a recognizer by name or instance + * @param {Recognizer|String} recognizer + * @returns {Manager} + */ + + + _proto.remove = function remove(recognizer) { + if (invokeArrayArg(recognizer, "remove", this)) { + return this; + } + + var targetRecognizer = this.get(recognizer); // let's make sure this recognizer exists + + if (recognizer) { + var recognizers = this.recognizers; + var index = inArray(recognizers, targetRecognizer); + + if (index !== -1) { + recognizers.splice(index, 1); + this.touchAction.update(); + } + } + + return this; + }; + /** + * @private + * bind event + * @param {String} events + * @param {Function} handler + * @returns {EventEmitter} this + */ + + + _proto.on = function on(events, handler) { + if (events === undefined || handler === undefined) { + return this; + } + + var handlers = this.handlers; + each(splitStr(events), function (event) { + handlers[event] = handlers[event] || []; + handlers[event].push(handler); + }); + return this; + }; + /** + * @private unbind event, leave emit blank to remove all handlers + * @param {String} events + * @param {Function} [handler] + * @returns {EventEmitter} this + */ + + + _proto.off = function off(events, handler) { + if (events === undefined) { + return this; + } + + var handlers = this.handlers; + each(splitStr(events), function (event) { + if (!handler) { + delete handlers[event]; + } else { + handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1); + } + }); + return this; + }; + /** + * @private emit event to the listeners + * @param {String} event + * @param {Object} data + */ + + + _proto.emit = function emit(event, data) { + // we also want to trigger dom events + if (this.options.domEvents) { + triggerDomEvent(event, data); + } // no handlers, so skip it all + + + var handlers = this.handlers[event] && this.handlers[event].slice(); + + if (!handlers || !handlers.length) { + return; + } + + data.type = event; + + data.preventDefault = function () { + data.srcEvent.preventDefault(); + }; + + var i = 0; + + while (i < handlers.length) { + handlers[i](data); + i++; + } + }; + /** + * @private + * destroy the manager and unbinds all events + * it doesn't unbind dom events, that is the user own responsibility + */ + + + _proto.destroy = function destroy() { + this.element && toggleCssProps(this, false); + this.handlers = {}; + this.session = {}; + this.input.destroy(); + this.element = null; + }; + + return Manager; +}(); + +var SINGLE_TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; +var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; +var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; +/** + * @private + * Touch events input + * @constructor + * @extends Input + */ + +var SingleTouchInput = +/*#__PURE__*/ +function (_Input) { + _inheritsLoose(SingleTouchInput, _Input); + + function SingleTouchInput() { + var _this; + + var proto = SingleTouchInput.prototype; + proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS; + proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.started = false; + return _this; + } + + var _proto = SingleTouchInput.prototype; + + _proto.handler = function handler(ev) { + var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; // should we handle the touch events? + + if (type === INPUT_START) { + this.started = true; + } + + if (!this.started) { + return; + } + + var touches = normalizeSingleTouches.call(this, ev, type); // when done, reset the started state + + if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { + this.started = false; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + }; + + return SingleTouchInput; +}(Input); + +function normalizeSingleTouches(ev, type) { + var all = toArray(ev.touches); + var changed = toArray(ev.changedTouches); + + if (type & (INPUT_END | INPUT_CANCEL)) { + all = uniqueArray(all.concat(changed), 'identifier', true); + } + + return [all, changed]; +} + +/** + * @private + * wrap a method with a deprecation warning and stack trace + * @param {Function} method + * @param {String} name + * @param {String} message + * @returns {Function} A new function wrapping the supplied method. + */ +function deprecate(method, name, message) { + var deprecationMessage = "DEPRECATED METHOD: " + name + "\n" + message + " AT \n"; + return function () { + var e = new Error('get-stack-trace'); + var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '').replace(/^\s+at\s+/gm, '').replace(/^Object.\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace'; + var log = window.console && (window.console.warn || window.console.log); + + if (log) { + log.call(window.console, deprecationMessage, stack); + } + + return method.apply(this, arguments); + }; +} + +/** + * @private + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] + * @returns {Object} dest + */ + +var extend = deprecate(function (dest, src, merge) { + var keys = Object.keys(src); + var i = 0; + + while (i < keys.length) { + if (!merge || merge && dest[keys[i]] === undefined) { + dest[keys[i]] = src[keys[i]]; + } + + i++; + } + + return dest; +}, 'extend', 'Use `assign`.'); + +/** + * @private + * merge the values from src in the dest. + * means that properties that exist in dest will not be overwritten by src + * @param {Object} dest + * @param {Object} src + * @returns {Object} dest + */ + +var merge = deprecate(function (dest, src) { + return extend(dest, src, true); +}, 'merge', 'Use `assign`.'); + +/** + * @private + * simple class inheritance + * @param {Function} child + * @param {Function} base + * @param {Object} [properties] + */ + +function inherit(child, base, properties) { + var baseP = base.prototype; + var childP; + childP = child.prototype = Object.create(baseP); + childP.constructor = child; + childP._super = baseP; + + if (properties) { + assign$1(childP, properties); + } +} + +/** + * @private + * simple function bind + * @param {Function} fn + * @param {Object} context + * @returns {Function} + */ +function bindFn(fn, context) { + return function boundFn() { + return fn.apply(context, arguments); + }; +} + +/** + * @private + * Simple way to create a manager with a default set of recognizers. + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ + +var Hammer = +/*#__PURE__*/ +function () { + var Hammer = + /** + * @private + * @const {string} + */ + function Hammer(element, options) { + if (options === void 0) { + options = {}; + } + + return new Manager(element, _extends({ + recognizers: preset.concat() + }, options)); + }; + + Hammer.VERSION = "2.0.17-rc"; + Hammer.DIRECTION_ALL = DIRECTION_ALL; + Hammer.DIRECTION_DOWN = DIRECTION_DOWN; + Hammer.DIRECTION_LEFT = DIRECTION_LEFT; + Hammer.DIRECTION_RIGHT = DIRECTION_RIGHT; + Hammer.DIRECTION_UP = DIRECTION_UP; + Hammer.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL; + Hammer.DIRECTION_VERTICAL = DIRECTION_VERTICAL; + Hammer.DIRECTION_NONE = DIRECTION_NONE; + Hammer.DIRECTION_DOWN = DIRECTION_DOWN; + Hammer.INPUT_START = INPUT_START; + Hammer.INPUT_MOVE = INPUT_MOVE; + Hammer.INPUT_END = INPUT_END; + Hammer.INPUT_CANCEL = INPUT_CANCEL; + Hammer.STATE_POSSIBLE = STATE_POSSIBLE; + Hammer.STATE_BEGAN = STATE_BEGAN; + Hammer.STATE_CHANGED = STATE_CHANGED; + Hammer.STATE_ENDED = STATE_ENDED; + Hammer.STATE_RECOGNIZED = STATE_RECOGNIZED; + Hammer.STATE_CANCELLED = STATE_CANCELLED; + Hammer.STATE_FAILED = STATE_FAILED; + Hammer.Manager = Manager; + Hammer.Input = Input; + Hammer.TouchAction = TouchAction; + Hammer.TouchInput = TouchInput; + Hammer.MouseInput = MouseInput; + Hammer.PointerEventInput = PointerEventInput; + Hammer.TouchMouseInput = TouchMouseInput; + Hammer.SingleTouchInput = SingleTouchInput; + Hammer.Recognizer = Recognizer; + Hammer.AttrRecognizer = AttrRecognizer; + Hammer.Tap = TapRecognizer; + Hammer.Pan = PanRecognizer; + Hammer.Swipe = SwipeRecognizer; + Hammer.Pinch = PinchRecognizer; + Hammer.Rotate = RotateRecognizer; + Hammer.Press = PressRecognizer; + Hammer.on = addEventListeners; + Hammer.off = removeEventListeners; + Hammer.each = each; + Hammer.merge = merge; + Hammer.extend = extend; + Hammer.bindFn = bindFn; + Hammer.assign = assign$1; + Hammer.inherit = inherit; + Hammer.bindFn = bindFn; + Hammer.prefixed = prefixed; + Hammer.toArray = toArray; + Hammer.inArray = inArray; + Hammer.uniqueArray = uniqueArray; + Hammer.splitStr = splitStr; + Hammer.boolOrFn = boolOrFn; + Hammer.hasParent = hasParent; + Hammer.addEventListeners = addEventListeners; + Hammer.removeEventListeners = removeEventListeners; + Hammer.defaults = assign$1({}, defaults, { + preset: preset + }); + return Hammer; +}(); + +// style loader but by script tag, not by the loader. + +var defaults$1 = Hammer.defaults; + +export default Hammer; +export { INPUT_START, INPUT_MOVE, INPUT_END, INPUT_CANCEL, STATE_POSSIBLE, STATE_BEGAN, STATE_CHANGED, STATE_ENDED, STATE_RECOGNIZED, STATE_CANCELLED, STATE_FAILED, DIRECTION_NONE, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP, DIRECTION_DOWN, DIRECTION_HORIZONTAL, DIRECTION_VERTICAL, DIRECTION_ALL, Manager, Input, TouchAction, TouchInput, MouseInput, PointerEventInput, TouchMouseInput, SingleTouchInput, Recognizer, AttrRecognizer, TapRecognizer as Tap, PanRecognizer as Pan, SwipeRecognizer as Swipe, PinchRecognizer as Pinch, RotateRecognizer as Rotate, PressRecognizer as Press, addEventListeners as on, removeEventListeners as off, each, merge, extend, assign$1 as assign, inherit, bindFn, prefixed, toArray, inArray, uniqueArray, splitStr, boolOrFn, hasParent, addEventListeners, removeEventListeners, defaults$1 as defaults }; +//# sourceMappingURL=hammer.esm.js.map diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js.map b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js.map new file mode 100644 index 00000000..2b9bc7b4 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hammer.esm.js","sources":["../src/utils/assign.js","../src/utils/utils-consts.js","../src/utils/prefixed.js","../src/browser.js","../src/touchactionjs/get-touchaction-props.js","../src/touchactionjs/touchaction-Consts.js","../src/inputjs/input-consts.js","../src/utils/each.js","../src/utils/bool-or-fn.js","../src/utils/in-str.js","../src/touchactionjs/clean-touch-actions.js","../src/touchactionjs/touchaction-constructor.js","../src/utils/has-parent.js","../src/inputjs/get-center.js","../src/inputjs/simple-clone-input-data.js","../src/inputjs/get-distance.js","../src/inputjs/get-angle.js","../src/inputjs/get-direction.js","../src/inputjs/compute-delta-xy.js","../src/inputjs/get-velocity.js","../src/inputjs/get-scale.js","../src/inputjs/get-rotation.js","../src/inputjs/compute-interval-input-data.js","../src/inputjs/compute-input-data.js","../src/inputjs/input-handler.js","../src/utils/split-str.js","../src/utils/add-event-listeners.js","../src/utils/remove-event-listeners.js","../src/utils/get-window-for-element.js","../src/inputjs/input-constructor.js","../src/utils/in-array.js","../src/input/pointerevent.js","../src/utils/to-array.js","../src/utils/unique-array.js","../src/input/touch.js","../src/input/mouse.js","../src/input/touchmouse.js","../src/inputjs/create-input-instance.js","../src/utils/invoke-array-arg.js","../src/recognizerjs/recognizer-consts.js","../src/utils/unique-id.js","../src/recognizerjs/get-recognizer-by-name-if-manager.js","../src/recognizerjs/state-str.js","../src/recognizerjs/recognizer-constructor.js","../src/recognizers/tap.js","../src/recognizers/attribute.js","../src/recognizerjs/direction-str.js","../src/recognizers/pan.js","../src/recognizers/swipe.js","../src/recognizers/pinch.js","../src/recognizers/rotate.js","../src/recognizers/press.js","../src/defaults.js","../src/manager.js","../src/input/singletouch.js","../src/utils/deprecate.js","../src/utils/extend.js","../src/utils/merge.js","../src/utils/inherit.js","../src/utils/bind-fn.js","../src/hammer.js","../src/index.js"],"sourcesContent":["/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nlet assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n let output = Object(target);\n for (let index = 1; index < arguments.length; index++) {\n const source = arguments[index];\n if (source !== undefined && source !== null) {\n for (const nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\nexport default assign;","\nconst VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nconst TEST_ELEMENT = typeof document === \"undefined\" ? {style: {}} : document.createElement('div');\n\nconst TYPE_FUNCTION = 'function';\n\nconst { round, abs } = Math;\nconst { now } = Date;\n\nexport {\n VENDOR_PREFIXES,\n TEST_ELEMENT,\n TYPE_FUNCTION,\n round,\n abs,\n now\n};\n","import { VENDOR_PREFIXES } from './utils-consts';\n/**\n * @private\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nexport default function prefixed(obj, property) {\n let prefix;\n let prop;\n let camelProp = property[0].toUpperCase() + property.slice(1);\n\n let i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n","/* eslint-disable no-new-func, no-nested-ternary */\n\nlet win;\n\nif (typeof window === \"undefined\") {\n\t// window is undefined in node.js\n\twin = {};\n} else {\n\twin = window;\n}\n/* eslint-enable no-new-func, no-nested-ternary */\n\nexport {win as window};\n","import prefixed from '../utils/prefixed';\nimport { TEST_ELEMENT } from '../utils/utils-consts';\nimport {window} from '../browser';\n\nexport const PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nexport const NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\nexport default function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n let touchMap = {};\n let cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach((val) => {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n return touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n","import getTouchActionProps from './get-touchaction-props';\n\n\n\n// magical touchAction value\nconst TOUCH_ACTION_COMPUTE = 'compute';\nconst TOUCH_ACTION_AUTO = 'auto';\nconst TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nconst TOUCH_ACTION_NONE = 'none';\nconst TOUCH_ACTION_PAN_X = 'pan-x';\nconst TOUCH_ACTION_PAN_Y = 'pan-y';\nconst TOUCH_ACTION_MAP = getTouchActionProps();\n\nexport {\n TOUCH_ACTION_AUTO,\n TOUCH_ACTION_COMPUTE,\n TOUCH_ACTION_MANIPULATION,\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y,\n TOUCH_ACTION_MAP\n};\n","import prefixed from '../utils/prefixed';\nimport {window} from \"../browser\";\n\nconst MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nconst SUPPORT_TOUCH = ('ontouchstart' in window);\nconst SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nconst SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nconst INPUT_TYPE_TOUCH = 'touch';\nconst INPUT_TYPE_PEN = 'pen';\nconst INPUT_TYPE_MOUSE = 'mouse';\nconst INPUT_TYPE_KINECT = 'kinect';\n\nconst COMPUTE_INTERVAL = 25;\n\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst INPUT_CANCEL = 8;\n\nconst DIRECTION_NONE = 1;\nconst DIRECTION_LEFT = 2;\nconst DIRECTION_RIGHT = 4;\nconst DIRECTION_UP = 8;\nconst DIRECTION_DOWN = 16;\n\nconst DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nconst DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nconst DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nconst PROPS_XY = ['x', 'y'];\nconst PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\nexport {\n MOBILE_REGEX,\n SUPPORT_ONLY_TOUCH,\n SUPPORT_POINTER_EVENTS,\n SUPPORT_TOUCH,\n INPUT_TYPE_KINECT,\n INPUT_TYPE_MOUSE,\n INPUT_TYPE_PEN,\n INPUT_TYPE_TOUCH,\n COMPUTE_INTERVAL,\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n PROPS_XY,\n PROPS_CLIENT_XY\n};\n","/**\n * @private\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nexport default function each(obj, iterator, context) {\n let i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n","import { TYPE_FUNCTION } from './utils-consts';\n/**\n * @private\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nexport default function boolOrFn(val, args) {\n if (typeof val === TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n","/**\n * @private\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nexport default function inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n","import inStr from '../utils/in-str';\nimport {\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y,\n TOUCH_ACTION_MANIPULATION,\n TOUCH_ACTION_AUTO\n} from './touchaction-Consts';\n\n/**\n * @private\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nexport default function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n","import {\n TOUCH_ACTION_COMPUTE,\n TOUCH_ACTION_MAP,\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y\n} from './touchaction-Consts';\nimport {\n NATIVE_TOUCH_ACTION,\n PREFIXED_TOUCH_ACTION,\n} from \"./get-touchaction-props\";\nimport {\n DIRECTION_VERTICAL,\n DIRECTION_HORIZONTAL\n} from '../inputjs/input-consts';\nimport each from '../utils/each';\nimport boolOrFn from '../utils/bool-or-fn';\nimport inStr from '../utils/in-str';\nimport cleanTouchActions from './clean-touch-actions';\n\n/**\n * @private\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nexport default class TouchAction {\n constructor(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n\n /**\n * @private\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set(value) {\n // find out the touch-action by the event handlers\n if (value === TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n }\n\n /**\n * @private\n * just re-set the touchAction value\n */\n update() {\n this.set(this.manager.options.touchAction);\n }\n\n /**\n * @private\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute() {\n let actions = [];\n each(this.manager.recognizers, (recognizer) => {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n }\n\n /**\n * @private\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults(input) {\n let { srcEvent } = input;\n let direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n let { actions } = this;\n let hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n // do not prevent defaults if this is a tap gesture\n let isTapPointer = input.pointers.length === 1;\n let isTapMovement = input.distance < 2;\n let isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n }\n\n /**\n * @private\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n}\n","/**\n * @private\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nexport default function hasParent(node, parent) {\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","import { round } from '../utils/utils-consts';\n\n/**\n * @private\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nexport default function getCenter(pointers) {\n let pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n","import { now,round } from '../utils/utils-consts';\nimport getCenter from './get-center';\n\n/**\n * @private\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nexport default function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n let pointers = [];\n let i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n","import { PROPS_XY } from './input-consts';\n\n/**\n * @private\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nexport default function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n let x = p2[props[0]] - p1[props[0]];\n let y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n","import { PROPS_XY } from './input-consts';\n\n/**\n * @private\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nexport default function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n let x = p2[props[0]] - p1[props[0]];\n let y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n","import { abs } from '../utils/utils-consts';\nimport { DIRECTION_NONE,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP,DIRECTION_DOWN } from './input-consts';\n\n/**\n * @private\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nexport default function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n","import { INPUT_START, INPUT_END } from './input-consts';\n\nexport default function computeDeltaXY(session, input) {\n let { center } = input;\n // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session;\n // jscs throwing error on defalut destructured values and without defaults tests fail\n let offset = session.offsetDelta || {};\n let prevDelta = session.prevDelta || {};\n let prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n","/**\n * @private\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nexport default function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n","import { PROPS_CLIENT_XY } from './input-consts';\nimport getDistance from './get-distance';\n/**\n * @private\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nexport default function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n","import getAngle from './get-angle';\nimport { PROPS_CLIENT_XY } from './input-consts';\n\n/**\n * @private\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nexport default function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n","import { INPUT_CANCEL,COMPUTE_INTERVAL } from './input-consts';\nimport { abs } from '../utils/utils-consts';\nimport getVelocity from './get-velocity';\nimport getDirection from './get-direction';\n\n/**\n * @private\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nexport default function computeIntervalInputData(session, input) {\n let last = session.lastInterval || input;\n let deltaTime = input.timeStamp - last.timeStamp;\n let velocity;\n let velocityX;\n let velocityY;\n let direction;\n\n if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n let deltaX = input.deltaX - last.deltaX;\n let deltaY = input.deltaY - last.deltaY;\n\n let v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n","import { now } from '../utils/utils-consts';\nimport { abs } from '../utils/utils-consts';\nimport hasParent from '../utils/has-parent';\nimport simpleCloneInputData from './simple-clone-input-data';\nimport getCenter from './get-center';\nimport getDistance from './get-distance';\nimport getAngle from './get-angle';\nimport getDirection from './get-direction';\nimport computeDeltaXY from './compute-delta-xy';\nimport getVelocity from './get-velocity';\nimport getScale from './get-scale';\nimport getRotation from './get-rotation';\nimport computeIntervalInputData from './compute-interval-input-data';\n\n/**\n* @private\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nexport default function computeInputData(manager, input) {\n let { session } = manager;\n let { pointers } = input;\n let { length:pointersLength } = pointers;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n let { firstInput, firstMultiple } = session;\n let offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n let center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n let overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n let target = manager.element;\n const srcEvent = input.srcEvent;\n let srcEventTarget;\n\n if (srcEvent.composedPath) {\n srcEventTarget = srcEvent.composedPath()[0];\n } else if (srcEvent.path) {\n srcEventTarget = srcEvent.path[0];\n } else {\n srcEventTarget = srcEvent.target;\n }\n\n if (hasParent(srcEventTarget, target)) {\n target = srcEventTarget;\n }\n input.target = target;\n}\n","import { INPUT_START,INPUT_END,INPUT_CANCEL } from './input-consts';\nimport computeInputData from './compute-input-data';\n\n/**\n * @private\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nexport default function inputHandler(manager, eventType, input) {\n let pointersLen = input.pointers.length;\n let changedPointersLen = input.changedPointers.length;\n let isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n let isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n","/**\n * @private\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n\nexport default function splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n","import each from './each';\nimport splitStr from './split-str';\n/**\n * @private\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nexport default function addEventListeners(target, types, handler) {\n each(splitStr(types), (type) => {\n target.addEventListener(type, handler, false);\n });\n}\n","import each from './each';\nimport splitStr from './split-str';\n/**\n * @private\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nexport default function removeEventListeners(target, types, handler) {\n each(splitStr(types), (type) => {\n target.removeEventListener(type, handler, false);\n });\n}\n","/**\n * @private\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nexport default function getWindowForElement(element) {\n let doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n","import boolOrFn from '../utils/bool-or-fn';\nimport addEventListeners from '../utils/add-event-listeners';\nimport removeEventListeners from '../utils/remove-event-listeners';\nimport getWindowForElement from '../utils/get-window-for-element';\n\n/**\n * @private\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nexport default class Input {\n constructor(manager, callback) {\n let self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n }\n /**\n * @private\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler() { }\n\n /**\n * @private\n * bind the events\n */\n init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n\n /**\n * @private\n * unbind the events\n */\n destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n}\n","/**\n * @private\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nexport default function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n let i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {// do not use === here, test fails\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n","import {\n INPUT_START,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_MOVE,\n INPUT_TYPE_TOUCH,\n INPUT_TYPE_MOUSE,\n INPUT_TYPE_PEN,\n INPUT_TYPE_KINECT\n} from '../inputjs/input-consts';\nimport {window} from \"../browser\";\nimport Input from '../inputjs/input-constructor';\nimport inArray from '../utils/in-array';\n\nconst POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nconst IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nlet POINTER_ELEMENT_EVENTS = 'pointerdown';\nlet POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * @private\n * Pointer events input\n * @constructor\n * @extends Input\n */\nexport default class PointerEventInput extends Input {\n constructor() {\n var proto = PointerEventInput.prototype;\n\n proto.evEl = POINTER_ELEMENT_EVENTS;\n proto.evWin = POINTER_WINDOW_EVENTS;\n super(...arguments);\n this.store = (this.manager.session.pointerEvents = []);\n }\n\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n handler(ev) {\n let { store } = this;\n let removePointer = false;\n\n let eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n let eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n let pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n let isTouch = (pointerType === INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n let storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n}\n","/**\n * @private\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nexport default function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n","import inArray from './in-array';\n\n/**\n * @private\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nexport default function uniqueArray(src, key, sort) {\n let results = [];\n let values = [];\n let i = 0;\n\n while (i < src.length) {\n let val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort((a, b) => {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_TYPE_TOUCH\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\nimport toArray from '../utils/to-array';\nimport hasParent from '../utils/has-parent';\nimport uniqueArray from '../utils/unique-array';\n\nconst TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nconst TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * @private\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nexport default class TouchInput extends Input {\n constructor() {\n TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS;\n super(...arguments);\n this.targetIds = {};\n // this.evTarget = TOUCH_TARGET_EVENTS;\n }\n handler(ev) {\n let type = TOUCH_INPUT_MAP[ev.type];\n let touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n}\n\n/**\n * @private\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n let allTouches = toArray(ev.touches);\n let { targetIds } = this;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n let i;\n let targetTouches;\n let changedTouches = toArray(ev.changedTouches);\n let changedTargetTouches = [];\n let { target } = this;\n\n // get target touches from touches\n targetTouches = allTouches.filter((touch) => {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_TYPE_MOUSE\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\n\nconst MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nconst MOUSE_ELEMENT_EVENTS = 'mousedown';\nconst MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * @private\n * Mouse events input\n * @constructor\n * @extends Input\n */\nexport default class MouseInput extends Input {\n constructor() {\n var proto = MouseInput.prototype;\n proto.evEl = MOUSE_ELEMENT_EVENTS;\n proto.evWin = MOUSE_WINDOW_EVENTS;\n\n super(...arguments);\n this.pressed = false; // mousedown state\n }\n\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n handler(ev) {\n let eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n}\n","import Input from \"../inputjs/input-constructor\";\nimport TouchInput from \"./touch\";\nimport MouseInput from \"./mouse\";\nimport {\n\tINPUT_START,\n\tINPUT_END,\n\tINPUT_CANCEL,\n\tINPUT_TYPE_TOUCH,\n\tINPUT_TYPE_MOUSE,\n} from \"../inputjs/input-consts\";\n\n/**\n * @private\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nconst DEDUP_TIMEOUT = 2500;\nconst DEDUP_DISTANCE = 25;\n\nfunction setLastTouch(eventData) {\n\tconst { changedPointers: [touch] } = eventData;\n\n\tif (touch.identifier === this.primaryTouch) {\n\t\tconst lastTouch = { x: touch.clientX, y: touch.clientY };\n\t\tconst lts = this.lastTouches;\n\n\t\tthis.lastTouches.push(lastTouch);\n\n\n\t\tconst removeLastTouch = function() {\n\t\t\tconst i = lts.indexOf(lastTouch);\n\n\t\t\tif (i > -1) {\n\t\t\t\tlts.splice(i, 1);\n\t\t\t}\n\t\t};\n\n\t\tsetTimeout(removeLastTouch, DEDUP_TIMEOUT);\n\t}\n}\n\n\nfunction recordTouches(eventType, eventData) {\n\tif (eventType & INPUT_START) {\n\t\tthis.primaryTouch = eventData.changedPointers[0].identifier;\n\t\tsetLastTouch.call(this, eventData);\n\t} else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n\t\tsetLastTouch.call(this, eventData);\n\t}\n}\nfunction isSyntheticEvent(eventData) {\n\tconst x = eventData.srcEvent.clientX;\n\tconst y = eventData.srcEvent.clientY;\n\n\tfor (let i = 0; i < this.lastTouches.length; i++) {\n\t\tconst t = this.lastTouches[i];\n\t\tconst dx = Math.abs(x - t.x);\n\t\tconst dy = Math.abs(y - t.y);\n\n\t\tif (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\nexport default class TouchMouseInput extends Input {\n\tconstructor(manager, callback) {\n\t\tsuper(manager, callback);\n\n\t\tthis.touch = new TouchInput(this.manager, this.handler);\n\t\tthis.mouse = new MouseInput(this.manager, this.handler);\n\t\tthis.primaryTouch = null;\n\t\tthis.lastTouches = [];\n\t}\n\n\t/**\n\t * @private\n\t * handle mouse and touch events\n\t * @param {Hammer} manager\n\t * @param {String} inputEvent\n\t * @param {Object} inputData\n\t */\n\thandler = (manager, inputEvent, inputData) => {\n\t\tconst isTouch = (inputData.pointerType === INPUT_TYPE_TOUCH);\n\t\tconst isMouse = (inputData.pointerType === INPUT_TYPE_MOUSE);\n\n\t\tif (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\t// when we're in a touch event, record touches to de-dupe synthetic mouse event\n\t\tif (isTouch) {\n\t\t\trecordTouches.call(this, inputEvent, inputData);\n\t\t} else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.callback(manager, inputEvent, inputData);\n\t}\n\n\t/**\n\t * @private\n\t * remove the event listeners\n\t */\n\tdestroy() {\n\t\tthis.touch.destroy();\n\t\tthis.mouse.destroy();\n\t}\n}\n","import { SUPPORT_POINTER_EVENTS,SUPPORT_ONLY_TOUCH,SUPPORT_TOUCH } from './input-consts';\nimport inputHandler from './input-handler';\nimport PointerEventInput from '../input/pointerevent';\nimport TouchInput from '../input/touch';\nimport MouseInput from '../input/mouse';\nimport TouchMouseInput from '../input/touchmouse';\n\n/**\n * @private\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nexport default function createInputInstance(manager) {\n let Type;\n // let inputClass = manager.options.inputClass;\n let { options:{ inputClass } } = manager;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n","import each from './each';\n/**\n * @private\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nexport default function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n","const STATE_POSSIBLE = 1;\nconst STATE_BEGAN = 2;\nconst STATE_CHANGED = 4;\nconst STATE_ENDED = 8;\nconst STATE_RECOGNIZED = STATE_ENDED;\nconst STATE_CANCELLED = 16;\nconst STATE_FAILED = 32;\n\nexport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED\n};\n","/**\n * @private\n * get a unique id\n * @returns {number} uniqueId\n */\nlet _uniqueId = 1;\nexport default function uniqueId() {\n return _uniqueId++;\n}\n","/**\n * @private\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nexport default function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n let { manager } = recognizer;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n","import {\n STATE_CANCELLED,\n STATE_ENDED,\n STATE_CHANGED,\n STATE_BEGAN\n} from './recognizer-consts';\n\n/**\n * @private\n * get a usable string, used as event postfix\n * @param {constant} state\n * @returns {String} state\n */\nexport default function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n","import {\n STATE_POSSIBLE,\n STATE_ENDED,\n STATE_FAILED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_BEGAN,\n STATE_CHANGED\n} from './recognizer-consts';\nimport assign from '../utils/assign';\nimport uniqueId from '../utils/unique-id';\nimport invokeArrayArg from '../utils/invoke-array-arg';\nimport inArray from '../utils/in-array';\nimport boolOrFn from '../utils/bool-or-fn';\nimport getRecognizerByNameIfManager from './get-recognizer-by-name-if-manager';\nimport stateStr from './state-str';\n\n/**\n * @private\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n\n/**\n * @private\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nexport default class Recognizer {\n constructor(options = {}) {\n this.options = {\n enable: true,\n ...options,\n };\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n\n /**\n * @private\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n }\n\n /**\n * @private\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n let { simultaneous } = this;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n }\n\n /**\n * @private\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n }\n\n /**\n * @private\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n let { requireFail } = this;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n }\n\n /**\n * @private\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n let index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n }\n\n /**\n * @private\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures() {\n return this.requireFail.length > 0;\n }\n\n /**\n * @private\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n }\n\n /**\n * @private\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit(input) {\n let self = this;\n let { state } = this;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n }\n\n /**\n * @private\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n }\n\n /**\n * @private\n * can we emit?\n * @returns {boolean}\n */\n canEmit() {\n let i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n }\n\n /**\n * @private\n * update the recognizer\n * @param {Object} inputData\n */\n recognize(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n let inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n }\n\n /**\n * @private\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {constant} STATE\n */\n\n /* jshint ignore:start */\n process(inputData) { }\n /* jshint ignore:end */\n\n /**\n * @private\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction() { }\n\n /**\n * @private\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset() { }\n}","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport { TOUCH_ACTION_MANIPULATION } from '../touchactionjs/touchaction-Consts';\nimport {INPUT_START,INPUT_END } from '../inputjs/input-consts';\nimport {\n STATE_RECOGNIZED,\n STATE_BEGAN,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport getDistance from '../inputjs/get-distance';\n\n/**\n * @private\n * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nexport default class TapRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10, // a multi-tap can be a bit off the initial position\n ...options,\n });\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n }\n\n process(input) {\n let { options } = this;\n\n let validPointers = input.pointers.length === options.pointers;\n let validMovement = input.distance < options.threshold;\n let validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType !== INPUT_END) {\n return this.failTimeout();\n }\n\n let validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n let validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n let tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeout(() => {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n }\n\n failTimeout() {\n this._timer = setTimeout(() => {\n this.state = STATE_FAILED;\n }, this.options.interval);\n return STATE_FAILED;\n }\n\n reset() {\n clearTimeout(this._timer);\n }\n\n emit() {\n if (this.state === STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n}\n","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport {\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_CANCELLED,\n STATE_ENDED,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport {\n INPUT_CANCEL,\n INPUT_END\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nexport default class AttrRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n pointers: 1,\n ...options,\n });\n }\n\n /**\n * @private\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest(input) {\n let optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n }\n\n /**\n * @private\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process(input) {\n let { state } = this;\n let { eventType } = input;\n\n let isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n let isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n}\n","import {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * direction cons to string\n * @param {constant} direction\n * @returns {String}\n */\nexport default function directionStr(direction) {\n if (direction === DIRECTION_DOWN) {\n return 'down';\n } else if (direction === DIRECTION_UP) {\n return 'up';\n } else if (direction === DIRECTION_LEFT) {\n return 'left';\n } else if (direction === DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n","import AttrRecognizer from './attribute';\nimport {\n DIRECTION_ALL,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_NONE,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_LEFT,\n DIRECTION_RIGHT\n} from '../inputjs/input-consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\nimport { TOUCH_ACTION_PAN_X,TOUCH_ACTION_PAN_Y } from '../touchactionjs/touchaction-Consts';\nimport directionStr from '../recognizerjs/direction-str';\n\n/**\n * @private\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class PanRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL,\n ...options,\n });\n this.pX = null;\n this.pY = null;\n }\n\n getTouchAction() {\n let { options:{ direction } } = this;\n let actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n }\n\n directionTest(input) {\n let { options } = this;\n let hasMoved = true;\n let { distance } = input;\n let { direction } = input;\n let x = input.deltaX;\n let y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x !== this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y !== this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n }\n\n attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && // replace with a super call\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n }\n\n emit(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n let direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n super.emit(input);\n }\n}\n","import AttrRecognizer from '../recognizers/attribute';\nimport { abs } from '../utils/utils-consts';\nimport { DIRECTION_HORIZONTAL,DIRECTION_VERTICAL } from '../inputjs/input-consts';\nimport PanRecognizer from './pan';\nimport { INPUT_END } from '../inputjs/input-consts';\nimport directionStr from '../recognizerjs/direction-str';\n\n/**\n * @private\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class SwipeRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1,\n ...options,\n });\n }\n\n getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n }\n\n attrTest(input) {\n let { direction } = this.options;\n let velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return super.attrTest(input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers === this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n }\n\n emit(input) {\n let direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n}\n","import AttrRecognizer from './attribute';\nimport { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\n\n/**\n * @private\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class PinchRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'pinch',\n threshold: 0,\n pointers: 2,\n ...options,\n });\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_NONE];\n }\n\n attrTest(input) {\n return super.attrTest(input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n }\n\n emit(input) {\n if (input.scale !== 1) {\n let inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n super.emit(input);\n }\n}\n","import AttrRecognizer from './attribute';\nimport { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\n\n/**\n * @private\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class RotateRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super( {\n event: 'rotate',\n threshold: 0,\n pointers: 2,\n ...options,\n });\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_NONE];\n }\n\n attrTest(input) {\n return super.attrTest(input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n}","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport {\n STATE_RECOGNIZED,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport { now } from '../utils/utils-consts';\nimport { TOUCH_ACTION_AUTO } from '../touchactionjs/touchaction-Consts';\nimport {\n INPUT_START,\n INPUT_END,\n INPUT_CANCEL\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nexport default class PressRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9, // a minimal movement is ok, but keep it low\n ...options,\n });\n this._timer = null;\n this._input = null;\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n }\n\n process(input) {\n let { options } = this;\n let validPointers = input.pointers.length === options.pointers;\n let validMovement = input.distance < options.threshold;\n let validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeout(() => {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n }\n\n reset() {\n clearTimeout(this._timer);\n }\n\n emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(`${this.options.event}up`, input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n}\n\n","import { TOUCH_ACTION_COMPUTE } from \"./touchactionjs/touchaction-Consts\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\nimport {DIRECTION_HORIZONTAL} from \"./inputjs/input-consts\";\n\nexport default {\n\t/**\n\t * @private\n\t * set if DOM events are being triggered.\n\t * But this is slower and unused by simple implementations, so disabled by default.\n\t * @type {Boolean}\n\t * @default false\n\t */\n\tdomEvents: false,\n\n\t/**\n\t * @private\n\t * The value for the touchAction property/fallback.\n\t * When set to `compute` it will magically set the correct value based on the added recognizers.\n\t * @type {String}\n\t * @default compute\n\t */\n\ttouchAction: TOUCH_ACTION_COMPUTE,\n\n\t/**\n\t * @private\n\t * @type {Boolean}\n\t * @default true\n\t */\n\tenable: true,\n\n\t/**\n\t * @private\n\t * EXPERIMENTAL FEATURE -- can be removed/changed\n\t * Change the parent input target element.\n\t * If Null, then it is being set the to main element.\n\t * @type {Null|EventTarget}\n\t * @default null\n\t */\n\tinputTarget: null,\n\n\t/**\n\t * @private\n\t * force an input class\n\t * @type {Null|Function}\n\t * @default null\n\t */\n\tinputClass: null,\n\n\t/**\n\t * @private\n\t * Some CSS properties can be used to improve the working of Hammer.\n\t * Add them to this method and they will be set when creating a new Manager.\n\t * @namespace\n\t */\n\tcssProps: {\n\t\t/**\n\t\t * @private\n\t\t * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tuserSelect: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Disable the Windows Phone grippers when pressing an element.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\ttouchSelect: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Disables the default callout shown when you touch and hold a touch target.\n\t\t * On iOS, when you touch and hold a touch target such as a link, Safari displays\n\t\t * a callout containing information about the link. This property allows you to disable that callout.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\ttouchCallout: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Specifies whether zooming is enabled. Used by IE10>\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tcontentZooming: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tuserDrag: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Overrides the highlight color shown when the user taps a link or a JavaScript\n\t\t * clickable element in iOS. This property obeys the alpha value, if specified.\n\t\t * @type {String}\n\t\t * @default 'rgba(0,0,0,0)'\n\t\t */\n\t\ttapHighlightColor: \"rgba(0,0,0,0)\",\n\t},\n};\n\n/**\n * @private\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * This is separated with other defaults because of tree-shaking.\n * @type {Array}\n */\nexport const preset = [\n [RotateRecognizer, { enable: false }],\n [PinchRecognizer, { enable: false }, ['rotate']],\n [SwipeRecognizer, { direction: DIRECTION_HORIZONTAL }],\n [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']],\n [PressRecognizer]\n];\n","import assign from \"./utils/assign\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport createInputInstance from \"./inputjs/create-input-instance\";\nimport each from \"./utils/each\";\nimport inArray from \"./utils/in-array\";\nimport invokeArrayArg from \"./utils/invoke-array-arg\";\nimport splitStr from \"./utils/split-str\";\nimport prefixed from \"./utils/prefixed\";\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport {\n STATE_BEGAN,\n STATE_ENDED,\n STATE_CHANGED,\n STATE_RECOGNIZED,\n} from \"./recognizerjs/recognizer-consts\";\nimport defaults from \"./defaults\";\n\nconst STOP = 1;\nconst FORCED_STOP = 2;\n\n\n/**\n * @private\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n const { element } = manager;\n\n if (!element.style) {\n return;\n }\n let prop;\n\n each(manager.options.cssProps, (value, name) => {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || \"\";\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * @private\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n const gestureEvent = document.createEvent(\"Event\");\n\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\n\n/**\n* @private\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nexport default class Manager {\n constructor(element, options) {\n this.options = assign({}, defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, item => {\n const recognizer = this.add(new (item[0])(item[1]));\n\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n\n\t/**\n\t * @private\n\t * set options\n\t * @param {Object} options\n\t * @returns {Manager}\n\t */\n set(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n }\n\n\t/**\n\t * @private\n\t * stop recognizing for this session.\n\t * This session will be discarded, when a new [input]start event is fired.\n\t * When forced, the recognizer cycle is stopped immediately.\n\t * @param {Boolean} [force]\n\t */\n stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n }\n\n\t/**\n\t * @private\n\t * run the recognizers!\n\t * called by the inputHandler function on every movement of the pointers (touches)\n\t * it walks through all the recognizers and tries to detect the gesture that is being made\n\t * @param {Object} inputData\n\t */\n recognize(inputData) {\n const { session } = this;\n\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n let recognizer;\n const { recognizers } = this;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n let { curRecognizer } = session;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n session.curRecognizer = null;\n curRecognizer = null;\n }\n\n let i = 0;\n\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (// 1\n !curRecognizer || recognizer === curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n session.curRecognizer = recognizer;\n curRecognizer = recognizer;\n }\n i++;\n }\n }\n\n\t/**\n\t * @private\n\t * get a recognizer by its event name.\n\t * @param {Recognizer|String} recognizer\n\t * @returns {Recognizer|Null}\n\t */\n get(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n const { recognizers } = this;\n\n for (let i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event === recognizer) {\n return recognizers[i];\n }\n }\n return null;\n }\n\n\t/**\n\t * @private add a recognizer to the manager\n\t * existing recognizers with the same event name will be removed\n\t * @param {Recognizer} recognizer\n\t * @returns {Recognizer|Manager}\n\t */\n add(recognizer) {\n if (invokeArrayArg(recognizer, \"add\", this)) {\n return this;\n }\n\n // remove existing\n const existing = this.get(recognizer.options.event);\n\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n }\n\n\t/**\n\t * @private\n\t * remove a recognizer by name or instance\n\t * @param {Recognizer|String} recognizer\n\t * @returns {Manager}\n\t */\n remove(recognizer) {\n if (invokeArrayArg(recognizer, \"remove\", this)) {\n return this;\n }\n\n const targetRecognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n const { recognizers } = this;\n const index = inArray(recognizers, targetRecognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n }\n\n\t/**\n\t * @private\n\t * bind event\n\t * @param {String} events\n\t * @param {Function} handler\n\t * @returns {EventEmitter} this\n\t */\n on(events, handler) {\n if (events === undefined || handler === undefined) {\n return this;\n }\n\n const { handlers } = this;\n\n each(splitStr(events), event => {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n }\n\n\t/**\n\t * @private unbind event, leave emit blank to remove all handlers\n\t * @param {String} events\n\t * @param {Function} [handler]\n\t * @returns {EventEmitter} this\n\t */\n off(events, handler) {\n if (events === undefined) {\n return this;\n }\n\n const { handlers } = this;\n\n each(splitStr(events), event => {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n }\n\n\t/**\n\t * @private emit event to the listeners\n\t * @param {String} event\n\t * @param {Object} data\n\t */\n emit(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n const handlers = this.handlers[event] && this.handlers[event].slice();\n\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n\n let i = 0;\n\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n }\n\n\t/**\n\t * @private\n\t * destroy the manager and unbinds all events\n\t * it doesn't unbind dom events, that is the user own responsibility\n\t */\n destroy() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_TYPE_TOUCH\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\nimport toArray from '../utils/to-array';\nimport uniqueArray from '../utils/unique-array';\n\nconst SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nconst SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nconst SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * @private\n * Touch events input\n * @constructor\n * @extends Input\n */\nexport default class SingleTouchInput extends Input {\n constructor() {\n var proto = SingleTouchInput.prototype;\n proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n\n super(...arguments);\n this.started = false;\n }\n\n handler(ev) {\n let type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n let touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n}\n\n/**\n * @private\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n let all = toArray(ev.touches);\n let changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n","/**\n * @private\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nexport default function deprecate(method, name, message) {\n let deprecationMessage = `DEPRECATED METHOD: ${name}\\n${message} AT \\n`;\n return function() {\n let e = new Error('get-stack-trace');\n let stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n let log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n","import deprecate from './deprecate';\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nconst extend = deprecate((dest, src, merge) => {\n let keys = Object.keys(src);\n let i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\nexport default extend;\n","import deprecate from './deprecate';\nimport extend from './extend';\n/**\n * @private\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nconst merge = deprecate((dest, src) => {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\nexport default merge;\n","import assign from './assign';\n/**\n * @private\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nexport default function inherit(child, base, properties) {\n let baseP = base.prototype;\n let childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n","/**\n * @private\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nexport default function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n","import Manager from \"./manager\";\nimport defaults, { preset } from \"./defaults\";\nimport assign from './utils/assign';\nimport {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n} from \"./inputjs/input-consts\";\nimport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED,\n} from \"./recognizerjs/recognizer-consts\";\n\nimport Input from \"./inputjs/input-constructor\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport TouchInput from \"./input/touch\";\nimport MouseInput from \"./input/mouse\";\nimport PointerEventInput from \"./input/pointerevent\";\nimport SingleTouchInput from \"./input/singletouch\";\nimport TouchMouseInput from \"./input/touchmouse\";\n\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport AttrRecognizer from \"./recognizers/attribute\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\n\nimport addEventListeners from \"./utils/add-event-listeners\";\nimport removeEventListeners from \"./utils/remove-event-listeners\";\nimport each from \"./utils/each\";\nimport merge from \"./utils/merge\";\nimport extend from \"./utils/extend\";\nimport inherit from \"./utils/inherit\";\nimport bindFn from \"./utils/bind-fn\";\nimport prefixed from \"./utils/prefixed\";\nimport toArray from \"./utils/to-array\";\nimport uniqueArray from \"./utils/unique-array\";\nimport splitStr from \"./utils/split-str\";\nimport inArray from \"./utils/in-array\";\nimport boolOrFn from \"./utils/bool-or-fn\";\nimport hasParent from \"./utils/has-parent\";\n/**\n * @private\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nexport default class Hammer {\n\t/**\n * @private\n * @const {string}\n */\n\tstatic VERSION = \"#__VERSION__#\";\n\tstatic DIRECTION_ALL = DIRECTION_ALL;\n\tstatic DIRECTION_DOWN = DIRECTION_DOWN;\n\tstatic DIRECTION_LEFT = DIRECTION_LEFT;\n\tstatic DIRECTION_RIGHT = DIRECTION_RIGHT;\n\tstatic DIRECTION_UP = DIRECTION_UP;\n\tstatic DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n\tstatic DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n\tstatic DIRECTION_NONE = DIRECTION_NONE;\n\tstatic DIRECTION_DOWN = DIRECTION_DOWN;\n\tstatic INPUT_START = INPUT_START;\n\tstatic INPUT_MOVE = INPUT_MOVE;\n static INPUT_END = INPUT_END;\n\tstatic INPUT_CANCEL = INPUT_CANCEL;\n\tstatic STATE_POSSIBLE = STATE_POSSIBLE;\n\tstatic STATE_BEGAN = STATE_BEGAN;\n\tstatic STATE_CHANGED = STATE_CHANGED;\n\tstatic STATE_ENDED = STATE_ENDED;\n\tstatic STATE_RECOGNIZED = STATE_RECOGNIZED;\n\tstatic STATE_CANCELLED = STATE_CANCELLED;\n\tstatic STATE_FAILED = STATE_FAILED;\n\tstatic Manager = Manager;\n\tstatic Input = Input;\n\tstatic TouchAction = TouchAction;\n\tstatic TouchInput = TouchInput;\n\tstatic MouseInput = MouseInput;\n\tstatic PointerEventInput = PointerEventInput;\n\tstatic TouchMouseInput = TouchMouseInput;\n\tstatic SingleTouchInput = SingleTouchInput;\n\tstatic Recognizer = Recognizer;\n\tstatic AttrRecognizer = AttrRecognizer;\n\tstatic Tap = TapRecognizer;\n\tstatic Pan = PanRecognizer;\n\tstatic Swipe = SwipeRecognizer;\n\tstatic Pinch = PinchRecognizer;\n\tstatic Rotate = RotateRecognizer;\n\tstatic Press = PressRecognizer;\n\tstatic on = addEventListeners;\n\tstatic off = removeEventListeners;\n\tstatic each = each;\n\tstatic merge = merge;\n\tstatic extend = extend;\n\tstatic bindFn = bindFn;\n\tstatic assign = assign;\n\tstatic inherit = inherit;\n\tstatic bindFn = bindFn;\n\tstatic prefixed = prefixed;\n\tstatic toArray = toArray;\n\tstatic inArray = inArray;\n\tstatic uniqueArray = uniqueArray;\n\tstatic splitStr = splitStr;\n\tstatic boolOrFn = boolOrFn;\n\tstatic hasParent = hasParent;\n\tstatic addEventListeners = addEventListeners;\n\tstatic removeEventListeners = removeEventListeners;\n\tstatic defaults = assign({}, defaults, { preset });\n\tconstructor(element, options = {}) {\n\t\treturn new Manager(element, {\n\t\t\trecognizers: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n ...preset\n\t\t\t],\n\t\t\t...options,\n\t\t});\n\t}\n}\n","\nimport Hammer from \"./hammer\";\nimport assign from \"./utils/assign\";\n\nimport {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n} from \"./inputjs/input-consts\";\nimport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED,\n} from \"./recognizerjs/recognizer-consts\";\n\nimport Manager from \"./manager\";\nimport Input from \"./inputjs/input-constructor\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport TouchInput from \"./input/touch\";\nimport MouseInput from \"./input/mouse\";\nimport PointerEventInput from \"./input/pointerevent\";\nimport SingleTouchInput from \"./input/singletouch\";\nimport TouchMouseInput from \"./input/touchmouse\";\n\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport AttrRecognizer from \"./recognizers/attribute\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\n\nimport addEventListeners from \"./utils/add-event-listeners\";\nimport removeEventListeners from \"./utils/remove-event-listeners\";\nimport each from \"./utils/each\";\nimport merge from \"./utils/merge\";\nimport extend from \"./utils/extend\";\nimport inherit from \"./utils/inherit\";\nimport bindFn from \"./utils/bind-fn\";\nimport prefixed from \"./utils/prefixed\";\nimport toArray from \"./utils/to-array\";\nimport uniqueArray from \"./utils/unique-array\";\nimport splitStr from \"./utils/split-str\";\nimport inArray from \"./utils/in-array\";\nimport boolOrFn from \"./utils/bool-or-fn\";\nimport hasParent from \"./utils/has-parent\";\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\n\nconst defaults = Hammer.defaults;\n\nexport {\n Hammer as default,\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED,\n\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n Manager,\n Input,\n TouchAction,\n TouchInput,\n MouseInput,\n PointerEventInput,\n TouchMouseInput,\n SingleTouchInput,\n Recognizer,\n AttrRecognizer,\n TapRecognizer as Tap,\n PanRecognizer as Pan,\n SwipeRecognizer as Swipe,\n PinchRecognizer as Pinch,\n RotateRecognizer as Rotate,\n PressRecognizer as Press,\n addEventListeners as on,\n removeEventListeners as off,\n each,\n merge,\n extend,\n assign,\n inherit,\n bindFn,\n prefixed,\n toArray,\n inArray,\n uniqueArray,\n splitStr,\n boolOrFn,\n hasParent,\n addEventListeners,\n removeEventListeners,\n defaults,\n};\n"],"names":["assign","Object","target","undefined","TypeError","output","index","arguments","length","source","nextKey","hasOwnProperty","VENDOR_PREFIXES","TEST_ELEMENT","document","style","createElement","TYPE_FUNCTION","round","Math","abs","now","Date","prefixed","obj","property","prefix","prop","camelProp","toUpperCase","slice","i","win","window","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","getTouchActionProps","touchMap","cssSupports","CSS","supports","forEach","val","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","test","navigator","userAgent","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","each","iterator","context","call","boolOrFn","args","apply","inStr","str","find","indexOf","cleanTouchActions","actions","hasPanX","hasPanY","TouchAction","manager","value","set","compute","element","toLowerCase","trim","update","options","touchAction","recognizers","recognizer","enable","concat","getTouchAction","join","preventDefaults","input","srcEvent","direction","offsetDirection","session","prevented","preventDefault","hasNone","isTapPointer","pointers","isTapMovement","distance","isTapTouchTime","deltaTime","preventSrc","hasParent","node","parent","parentNode","getCenter","pointersLength","x","clientX","y","clientY","simpleCloneInputData","timeStamp","center","deltaX","deltaY","getDistance","p1","p2","props","sqrt","getAngle","atan2","PI","getDirection","computeDeltaXY","offset","offsetDelta","prevDelta","prevInput","eventType","getVelocity","getScale","start","end","getRotation","computeIntervalInputData","last","lastInterval","velocity","velocityX","velocityY","v","computeInputData","firstInput","firstMultiple","offsetCenter","angle","overallVelocity","overallVelocityX","overallVelocityY","scale","rotation","maxPointers","srcEventTarget","composedPath","path","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","emit","recognize","splitStr","split","addEventListeners","types","handler","type","addEventListener","removeEventListeners","removeEventListener","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","callback","self","inputTarget","domHandler","ev","init","evEl","evTarget","evWin","destroy","inArray","src","findByKey","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","PointerEventInput","proto","prototype","store","pointerEvents","removePointer","eventTypeNormalized","replace","pointerType","isTouch","storeIndex","pointerId","button","push","splice","toArray","Array","uniqueArray","key","sort","results","values","a","b","TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_TARGET_EVENTS","TouchInput","targetIds","touches","getTouches","allTouches","identifier","targetTouches","changedTouches","changedTargetTouches","filter","touch","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","which","DEDUP_TIMEOUT","DEDUP_DISTANCE","setLastTouch","eventData","primaryTouch","lastTouch","lts","lastTouches","removeLastTouch","setTimeout","recordTouches","isSyntheticEvent","t","dx","dy","TouchMouseInput","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","mouse","createInputInstance","Type","inputClass","invokeArrayArg","arg","fn","isArray","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","_uniqueId","uniqueId","getRecognizerByNameIfManager","otherRecognizer","get","stateStr","state","Recognizer","id","simultaneous","requireFail","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","TapRecognizer","taps","interval","time","threshold","posThreshold","pTime","pCenter","_timer","_input","count","validPointers","validMovement","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","clearTimeout","AttrRecognizer","attrTest","optionPointers","isRecognized","isValid","directionStr","PanRecognizer","pX","pY","directionTest","hasMoved","SwipeRecognizer","PinchRecognizer","inOut","RotateRecognizer","PressRecognizer","validTime","domEvents","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","preset","STOP","FORCED_STOP","toggleCssProps","add","name","oldCssProps","triggerDomEvent","data","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","Manager","defaults","handlers","item","stop","force","stopped","curRecognizer","existing","remove","targetRecognizer","on","events","off","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","all","changed","deprecate","method","message","deprecationMessage","e","Error","stack","log","console","warn","extend","dest","merge","keys","inherit","child","base","properties","baseP","childP","create","constructor","_super","bindFn","boundFn","Hammer","VERSION","Tap","Pan","Swipe","Pinch","Rotate","Press"],"mappings":"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"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js new file mode 100644 index 00000000..b3837840 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js @@ -0,0 +1,2995 @@ +/*! Hammer.JS - v2.0.17-rc - 2019-12-16 + * http://naver.github.io/egjs + * + * Forked By Naver egjs + * Copyright (c) hammerjs + * Licensed under the MIT license */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Hammer = factory()); +}(this, (function () { 'use strict'; + + function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + /** + * @private + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} target + * @param {...Object} objects_to_assign + * @returns {Object} target + */ + var assign; + + if (typeof Object.assign !== 'function') { + assign = function assign(target) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + + if (source !== undefined && source !== null) { + for (var nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey]; + } + } + } + } + + return output; + }; + } else { + assign = Object.assign; + } + + var assign$1 = assign; + + var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o']; + var TEST_ELEMENT = typeof document === "undefined" ? { + style: {} + } : document.createElement('div'); + var TYPE_FUNCTION = 'function'; + var round = Math.round, + abs = Math.abs; + var now = Date.now; + + /** + * @private + * get the prefixed property + * @param {Object} obj + * @param {String} property + * @returns {String|Undefined} prefixed + */ + + function prefixed(obj, property) { + var prefix; + var prop; + var camelProp = property[0].toUpperCase() + property.slice(1); + var i = 0; + + while (i < VENDOR_PREFIXES.length) { + prefix = VENDOR_PREFIXES[i]; + prop = prefix ? prefix + camelProp : property; + + if (prop in obj) { + return prop; + } + + i++; + } + + return undefined; + } + + /* eslint-disable no-new-func, no-nested-ternary */ + var win; + + if (typeof window === "undefined") { + // window is undefined in node.js + win = {}; + } else { + win = window; + } + + var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); + var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; + function getTouchActionProps() { + if (!NATIVE_TOUCH_ACTION) { + return false; + } + + var touchMap = {}; + var cssSupports = win.CSS && win.CSS.supports; + ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) { + // If css.supports is not supported but there is native touch-action assume it supports + // all values. This is the case for IE 10 and 11. + return touchMap[val] = cssSupports ? win.CSS.supports('touch-action', val) : true; + }); + return touchMap; + } + + var TOUCH_ACTION_COMPUTE = 'compute'; + var TOUCH_ACTION_AUTO = 'auto'; + var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented + + var TOUCH_ACTION_NONE = 'none'; + var TOUCH_ACTION_PAN_X = 'pan-x'; + var TOUCH_ACTION_PAN_Y = 'pan-y'; + var TOUCH_ACTION_MAP = getTouchActionProps(); + + var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; + var SUPPORT_TOUCH = 'ontouchstart' in win; + var SUPPORT_POINTER_EVENTS = prefixed(win, 'PointerEvent') !== undefined; + var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); + var INPUT_TYPE_TOUCH = 'touch'; + var INPUT_TYPE_PEN = 'pen'; + var INPUT_TYPE_MOUSE = 'mouse'; + var INPUT_TYPE_KINECT = 'kinect'; + var COMPUTE_INTERVAL = 25; + var INPUT_START = 1; + var INPUT_MOVE = 2; + var INPUT_END = 4; + var INPUT_CANCEL = 8; + var DIRECTION_NONE = 1; + var DIRECTION_LEFT = 2; + var DIRECTION_RIGHT = 4; + var DIRECTION_UP = 8; + var DIRECTION_DOWN = 16; + var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; + var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; + var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; + var PROPS_XY = ['x', 'y']; + var PROPS_CLIENT_XY = ['clientX', 'clientY']; + + /** + * @private + * walk objects and arrays + * @param {Object} obj + * @param {Function} iterator + * @param {Object} context + */ + function each(obj, iterator, context) { + var i; + + if (!obj) { + return; + } + + if (obj.forEach) { + obj.forEach(iterator, context); + } else if (obj.length !== undefined) { + i = 0; + + while (i < obj.length) { + iterator.call(context, obj[i], i, obj); + i++; + } + } else { + for (i in obj) { + obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); + } + } + } + + /** + * @private + * let a boolean value also be a function that must return a boolean + * this first item in args will be used as the context + * @param {Boolean|Function} val + * @param {Array} [args] + * @returns {Boolean} + */ + + function boolOrFn(val, args) { + if (typeof val === TYPE_FUNCTION) { + return val.apply(args ? args[0] || undefined : undefined, args); + } + + return val; + } + + /** + * @private + * small indexOf wrapper + * @param {String} str + * @param {String} find + * @returns {Boolean} found + */ + function inStr(str, find) { + return str.indexOf(find) > -1; + } + + /** + * @private + * when the touchActions are collected they are not a valid value, so we need to clean things up. * + * @param {String} actions + * @returns {*} + */ + + function cleanTouchActions(actions) { + // none + if (inStr(actions, TOUCH_ACTION_NONE)) { + return TOUCH_ACTION_NONE; + } + + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); // if both pan-x and pan-y are set (different recognizers + // for different directions, e.g. horizontal pan but vertical swipe?) + // we need none (as otherwise with pan-x pan-y combined none of these + // recognizers will work, since the browser would handle all panning + + if (hasPanX && hasPanY) { + return TOUCH_ACTION_NONE; + } // pan-x OR pan-y + + + if (hasPanX || hasPanY) { + return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; + } // manipulation + + + if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { + return TOUCH_ACTION_MANIPULATION; + } + + return TOUCH_ACTION_AUTO; + } + + /** + * @private + * Touch Action + * sets the touchAction property or uses the js alternative + * @param {Manager} manager + * @param {String} value + * @constructor + */ + + var TouchAction = + /*#__PURE__*/ + function () { + function TouchAction(manager, value) { + this.manager = manager; + this.set(value); + } + /** + * @private + * set the touchAction value on the element or enable the polyfill + * @param {String} value + */ + + + var _proto = TouchAction.prototype; + + _proto.set = function set(value) { + // find out the touch-action by the event handlers + if (value === TOUCH_ACTION_COMPUTE) { + value = this.compute(); + } + + if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) { + this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; + } + + this.actions = value.toLowerCase().trim(); + }; + /** + * @private + * just re-set the touchAction value + */ + + + _proto.update = function update() { + this.set(this.manager.options.touchAction); + }; + /** + * @private + * compute the value for the touchAction property based on the recognizer's settings + * @returns {String} value + */ + + + _proto.compute = function compute() { + var actions = []; + each(this.manager.recognizers, function (recognizer) { + if (boolOrFn(recognizer.options.enable, [recognizer])) { + actions = actions.concat(recognizer.getTouchAction()); + } + }); + return cleanTouchActions(actions.join(' ')); + }; + /** + * @private + * this method is called on each input cycle and provides the preventing of the browser behavior + * @param {Object} input + */ + + + _proto.preventDefaults = function preventDefaults(input) { + var srcEvent = input.srcEvent; + var direction = input.offsetDirection; // if the touch action did prevented once this session + + if (this.manager.session.prevented) { + srcEvent.preventDefault(); + return; + } + + var actions = this.actions; + var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE]; + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y]; + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X]; + + if (hasNone) { + // do not prevent defaults if this is a tap gesture + var isTapPointer = input.pointers.length === 1; + var isTapMovement = input.distance < 2; + var isTapTouchTime = input.deltaTime < 250; + + if (isTapPointer && isTapMovement && isTapTouchTime) { + return; + } + } + + if (hasPanX && hasPanY) { + // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent + return; + } + + if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) { + return this.preventSrc(srcEvent); + } + }; + /** + * @private + * call preventDefault to prevent the browser's default behavior (scrolling in most cases) + * @param {Object} srcEvent + */ + + + _proto.preventSrc = function preventSrc(srcEvent) { + this.manager.session.prevented = true; + srcEvent.preventDefault(); + }; + + return TouchAction; + }(); + + /** + * @private + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + function hasParent(node, parent) { + while (node) { + if (node === parent) { + return true; + } + + node = node.parentNode; + } + + return false; + } + + /** + * @private + * get the center of all the pointers + * @param {Array} pointers + * @return {Object} center contains `x` and `y` properties + */ + + function getCenter(pointers) { + var pointersLength = pointers.length; // no need to loop when only one touch + + if (pointersLength === 1) { + return { + x: round(pointers[0].clientX), + y: round(pointers[0].clientY) + }; + } + + var x = 0; + var y = 0; + var i = 0; + + while (i < pointersLength) { + x += pointers[i].clientX; + y += pointers[i].clientY; + i++; + } + + return { + x: round(x / pointersLength), + y: round(y / pointersLength) + }; + } + + /** + * @private + * create a simple clone from the input used for storage of firstInput and firstMultiple + * @param {Object} input + * @returns {Object} clonedInputData + */ + + function simpleCloneInputData(input) { + // make a simple copy of the pointers because we will get a reference if we don't + // we only need clientXY for the calculations + var pointers = []; + var i = 0; + + while (i < input.pointers.length) { + pointers[i] = { + clientX: round(input.pointers[i].clientX), + clientY: round(input.pointers[i].clientY) + }; + i++; + } + + return { + timeStamp: now(), + pointers: pointers, + center: getCenter(pointers), + deltaX: input.deltaX, + deltaY: input.deltaY + }; + } + + /** + * @private + * calculate the absolute distance between two points + * @param {Object} p1 {x, y} + * @param {Object} p2 {x, y} + * @param {Array} [props] containing x and y keys + * @return {Number} distance + */ + + function getDistance(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + + var x = p2[props[0]] - p1[props[0]]; + var y = p2[props[1]] - p1[props[1]]; + return Math.sqrt(x * x + y * y); + } + + /** + * @private + * calculate the angle between two coordinates + * @param {Object} p1 + * @param {Object} p2 + * @param {Array} [props] containing x and y keys + * @return {Number} angle + */ + + function getAngle(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + + var x = p2[props[0]] - p1[props[0]]; + var y = p2[props[1]] - p1[props[1]]; + return Math.atan2(y, x) * 180 / Math.PI; + } + + /** + * @private + * get the direction between two points + * @param {Number} x + * @param {Number} y + * @return {Number} direction + */ + + function getDirection(x, y) { + if (x === y) { + return DIRECTION_NONE; + } + + if (abs(x) >= abs(y)) { + return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + + return y < 0 ? DIRECTION_UP : DIRECTION_DOWN; + } + + function computeDeltaXY(session, input) { + var center = input.center; // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session; + // jscs throwing error on defalut destructured values and without defaults tests fail + + var offset = session.offsetDelta || {}; + var prevDelta = session.prevDelta || {}; + var prevInput = session.prevInput || {}; + + if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { + prevDelta = session.prevDelta = { + x: prevInput.deltaX || 0, + y: prevInput.deltaY || 0 + }; + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; + } + + input.deltaX = prevDelta.x + (center.x - offset.x); + input.deltaY = prevDelta.y + (center.y - offset.y); + } + + /** + * @private + * calculate the velocity between two points. unit is in px per ms. + * @param {Number} deltaTime + * @param {Number} x + * @param {Number} y + * @return {Object} velocity `x` and `y` + */ + function getVelocity(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; + } + + /** + * @private + * calculate the scale factor between two pointersets + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} scale + */ + + function getScale(start, end) { + return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); + } + + /** + * @private + * calculate the rotation degrees between two pointersets + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} rotation + */ + + function getRotation(start, end) { + return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY); + } + + /** + * @private + * velocity is calculated every x ms + * @param {Object} session + * @param {Object} input + */ + + function computeIntervalInputData(session, input) { + var last = session.lastInterval || input; + var deltaTime = input.timeStamp - last.timeStamp; + var velocity; + var velocityX; + var velocityY; + var direction; + + if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { + var deltaX = input.deltaX - last.deltaX; + var deltaY = input.deltaY - last.deltaY; + var v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = abs(v.x) > abs(v.y) ? v.x : v.y; + direction = getDirection(deltaX, deltaY); + session.lastInterval = input; + } else { + // use latest velocity info if it doesn't overtake a minimum period + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } + + input.velocity = velocity; + input.velocityX = velocityX; + input.velocityY = velocityY; + input.direction = direction; + } + + /** + * @private + * extend the data with some usable properties like scale, rotate, velocity etc + * @param {Object} manager + * @param {Object} input + */ + + function computeInputData(manager, input) { + var session = manager.session; + var pointers = input.pointers; + var pointersLength = pointers.length; // store the first input to calculate the distance and direction + + if (!session.firstInput) { + session.firstInput = simpleCloneInputData(input); + } // to compute scale and rotation we need to store the multiple touches + + + if (pointersLength > 1 && !session.firstMultiple) { + session.firstMultiple = simpleCloneInputData(input); + } else if (pointersLength === 1) { + session.firstMultiple = false; + } + + var firstInput = session.firstInput, + firstMultiple = session.firstMultiple; + var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; + var center = input.center = getCenter(pointers); + input.timeStamp = now(); + input.deltaTime = input.timeStamp - firstInput.timeStamp; + input.angle = getAngle(offsetCenter, center); + input.distance = getDistance(offsetCenter, center); + computeDeltaXY(session, input); + input.offsetDirection = getDirection(input.deltaX, input.deltaY); + var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY); + input.overallVelocityX = overallVelocity.x; + input.overallVelocityY = overallVelocity.y; + input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y; + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; + input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers; + computeIntervalInputData(session, input); // find the correct target + + var target = manager.element; + var srcEvent = input.srcEvent; + var srcEventTarget; + + if (srcEvent.composedPath) { + srcEventTarget = srcEvent.composedPath()[0]; + } else if (srcEvent.path) { + srcEventTarget = srcEvent.path[0]; + } else { + srcEventTarget = srcEvent.target; + } + + if (hasParent(srcEventTarget, target)) { + target = srcEventTarget; + } + + input.target = target; + } + + /** + * @private + * handle input events + * @param {Manager} manager + * @param {String} eventType + * @param {Object} input + */ + + function inputHandler(manager, eventType, input) { + var pointersLen = input.pointers.length; + var changedPointersLen = input.changedPointers.length; + var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0; + var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0; + input.isFirst = !!isFirst; + input.isFinal = !!isFinal; + + if (isFirst) { + manager.session = {}; + } // source event is the normalized value of the domEvents + // like 'touchstart, mouseup, pointerdown' + + + input.eventType = eventType; // compute scale, rotation etc + + computeInputData(manager, input); // emit secret event + + manager.emit('hammer.input', input); + manager.recognize(input); + manager.session.prevInput = input; + } + + /** + * @private + * split string on whitespace + * @param {String} str + * @returns {Array} words + */ + function splitStr(str) { + return str.trim().split(/\s+/g); + } + + /** + * @private + * addEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ + + function addEventListeners(target, types, handler) { + each(splitStr(types), function (type) { + target.addEventListener(type, handler, false); + }); + } + + /** + * @private + * removeEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ + + function removeEventListeners(target, types, handler) { + each(splitStr(types), function (type) { + target.removeEventListener(type, handler, false); + }); + } + + /** + * @private + * get the window object of an element + * @param {HTMLElement} element + * @returns {DocumentView|Window} + */ + function getWindowForElement(element) { + var doc = element.ownerDocument || element; + return doc.defaultView || doc.parentWindow || window; + } + + /** + * @private + * create new input type manager + * @param {Manager} manager + * @param {Function} callback + * @returns {Input} + * @constructor + */ + + var Input = + /*#__PURE__*/ + function () { + function Input(manager, callback) { + var self = this; + this.manager = manager; + this.callback = callback; + this.element = manager.element; + this.target = manager.options.inputTarget; // smaller wrapper around the handler, for the scope and the enabled state of the manager, + // so when disabled the input events are completely bypassed. + + this.domHandler = function (ev) { + if (boolOrFn(manager.options.enable, [manager])) { + self.handler(ev); + } + }; + + this.init(); + } + /** + * @private + * should handle the inputEvent data and trigger the callback + * @virtual + */ + + + var _proto = Input.prototype; + + _proto.handler = function handler() {}; + /** + * @private + * bind the events + */ + + + _proto.init = function init() { + this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }; + /** + * @private + * unbind the events + */ + + + _proto.destroy = function destroy() { + this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }; + + return Input; + }(); + + /** + * @private + * find if a array contains the object using indexOf or a simple polyFill + * @param {Array} src + * @param {String} find + * @param {String} [findByKey] + * @return {Boolean|Number} false when not found, or the index + */ + function inArray(src, find, findByKey) { + if (src.indexOf && !findByKey) { + return src.indexOf(find); + } else { + var i = 0; + + while (i < src.length) { + if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) { + // do not use === here, test fails + return i; + } + + i++; + } + + return -1; + } + } + + var POINTER_INPUT_MAP = { + pointerdown: INPUT_START, + pointermove: INPUT_MOVE, + pointerup: INPUT_END, + pointercancel: INPUT_CANCEL, + pointerout: INPUT_CANCEL + }; // in IE10 the pointer types is defined as an enum + + var IE10_POINTER_TYPE_ENUM = { + 2: INPUT_TYPE_TOUCH, + 3: INPUT_TYPE_PEN, + 4: INPUT_TYPE_MOUSE, + 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 + + }; + var POINTER_ELEMENT_EVENTS = 'pointerdown'; + var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive + + if (win.MSPointerEvent && !win.PointerEvent) { + POINTER_ELEMENT_EVENTS = 'MSPointerDown'; + POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; + } + /** + * @private + * Pointer events input + * @constructor + * @extends Input + */ + + + var PointerEventInput = + /*#__PURE__*/ + function (_Input) { + _inheritsLoose(PointerEventInput, _Input); + + function PointerEventInput() { + var _this; + + var proto = PointerEventInput.prototype; + proto.evEl = POINTER_ELEMENT_EVENTS; + proto.evWin = POINTER_WINDOW_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.store = _this.manager.session.pointerEvents = []; + return _this; + } + /** + * @private + * handle mouse events + * @param {Object} ev + */ + + + var _proto = PointerEventInput.prototype; + + _proto.handler = function handler(ev) { + var store = this.store; + var removePointer = false; + var eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); + var eventType = POINTER_INPUT_MAP[eventTypeNormalized]; + var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; + var isTouch = pointerType === INPUT_TYPE_TOUCH; // get index of the event in the store + + var storeIndex = inArray(store, ev.pointerId, 'pointerId'); // start and mouse must be down + + if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { + if (storeIndex < 0) { + store.push(ev); + storeIndex = store.length - 1; + } + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + removePointer = true; + } // it not found, so the pointer hasn't been down (so it's probably a hover) + + + if (storeIndex < 0) { + return; + } // update the event in the store + + + store[storeIndex] = ev; + this.callback(this.manager, eventType, { + pointers: store, + changedPointers: [ev], + pointerType: pointerType, + srcEvent: ev + }); + + if (removePointer) { + // remove from the store + store.splice(storeIndex, 1); + } + }; + + return PointerEventInput; + }(Input); + + /** + * @private + * convert array-like objects to real arrays + * @param {Object} obj + * @returns {Array} + */ + function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + } + + /** + * @private + * unique array with objects based on a key (like 'id') or just by the array's value + * @param {Array} src [{id:1},{id:2},{id:1}] + * @param {String} [key] + * @param {Boolean} [sort=False] + * @returns {Array} [{id:1},{id:2}] + */ + + function uniqueArray(src, key, sort) { + var results = []; + var values = []; + var i = 0; + + while (i < src.length) { + var val = key ? src[i][key] : src[i]; + + if (inArray(values, val) < 0) { + results.push(src[i]); + } + + values[i] = val; + i++; + } + + if (sort) { + if (!key) { + results = results.sort(); + } else { + results = results.sort(function (a, b) { + return a[key] > b[key]; + }); + } + } + + return results; + } + + var TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL + }; + var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; + /** + * @private + * Multi-user touch events input + * @constructor + * @extends Input + */ + + var TouchInput = + /*#__PURE__*/ + function (_Input) { + _inheritsLoose(TouchInput, _Input); + + function TouchInput() { + var _this; + + TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.targetIds = {}; // this.evTarget = TOUCH_TARGET_EVENTS; + + return _this; + } + + var _proto = TouchInput.prototype; + + _proto.handler = function handler(ev) { + var type = TOUCH_INPUT_MAP[ev.type]; + var touches = getTouches.call(this, ev, type); + + if (!touches) { + return; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + }; + + return TouchInput; + }(Input); + + function getTouches(ev, type) { + var allTouches = toArray(ev.touches); + var targetIds = this.targetIds; // when there is only one touch, the process can be simplified + + if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + return [allTouches, allTouches]; + } + + var i; + var targetTouches; + var changedTouches = toArray(ev.changedTouches); + var changedTargetTouches = []; + var target = this.target; // get target touches from touches + + targetTouches = allTouches.filter(function (touch) { + return hasParent(touch.target, target); + }); // collect touches + + if (type === INPUT_START) { + i = 0; + + while (i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; + } + } // filter changed touches to only contain touches that exist in the collected target ids + + + i = 0; + + while (i < changedTouches.length) { + if (targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } // cleanup removed touches + + + if (type & (INPUT_END | INPUT_CANCEL)) { + delete targetIds[changedTouches[i].identifier]; + } + + i++; + } + + if (!changedTargetTouches.length) { + return; + } + + return [// merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' + uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches]; + } + + var MOUSE_INPUT_MAP = { + mousedown: INPUT_START, + mousemove: INPUT_MOVE, + mouseup: INPUT_END + }; + var MOUSE_ELEMENT_EVENTS = 'mousedown'; + var MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; + /** + * @private + * Mouse events input + * @constructor + * @extends Input + */ + + var MouseInput = + /*#__PURE__*/ + function (_Input) { + _inheritsLoose(MouseInput, _Input); + + function MouseInput() { + var _this; + + var proto = MouseInput.prototype; + proto.evEl = MOUSE_ELEMENT_EVENTS; + proto.evWin = MOUSE_WINDOW_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.pressed = false; // mousedown state + + return _this; + } + /** + * @private + * handle mouse events + * @param {Object} ev + */ + + + var _proto = MouseInput.prototype; + + _proto.handler = function handler(ev) { + var eventType = MOUSE_INPUT_MAP[ev.type]; // on start we want to have the left mouse button down + + if (eventType & INPUT_START && ev.button === 0) { + this.pressed = true; + } + + if (eventType & INPUT_MOVE && ev.which !== 1) { + eventType = INPUT_END; + } // mouse must be down + + + if (!this.pressed) { + return; + } + + if (eventType & INPUT_END) { + this.pressed = false; + } + + this.callback(this.manager, eventType, { + pointers: [ev], + changedPointers: [ev], + pointerType: INPUT_TYPE_MOUSE, + srcEvent: ev + }); + }; + + return MouseInput; + }(Input); + + /** + * @private + * Combined touch and mouse input + * + * Touch has a higher priority then mouse, and while touching no mouse events are allowed. + * This because touch devices also emit mouse events while doing a touch. + * + * @constructor + * @extends Input + */ + + var DEDUP_TIMEOUT = 2500; + var DEDUP_DISTANCE = 25; + + function setLastTouch(eventData) { + var _eventData$changedPoi = eventData.changedPointers, + touch = _eventData$changedPoi[0]; + + if (touch.identifier === this.primaryTouch) { + var lastTouch = { + x: touch.clientX, + y: touch.clientY + }; + var lts = this.lastTouches; + this.lastTouches.push(lastTouch); + + var removeLastTouch = function removeLastTouch() { + var i = lts.indexOf(lastTouch); + + if (i > -1) { + lts.splice(i, 1); + } + }; + + setTimeout(removeLastTouch, DEDUP_TIMEOUT); + } + } + + function recordTouches(eventType, eventData) { + if (eventType & INPUT_START) { + this.primaryTouch = eventData.changedPointers[0].identifier; + setLastTouch.call(this, eventData); + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + setLastTouch.call(this, eventData); + } + } + + function isSyntheticEvent(eventData) { + var x = eventData.srcEvent.clientX; + var y = eventData.srcEvent.clientY; + + for (var i = 0; i < this.lastTouches.length; i++) { + var t = this.lastTouches[i]; + var dx = Math.abs(x - t.x); + var dy = Math.abs(y - t.y); + + if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) { + return true; + } + } + + return false; + } + + var TouchMouseInput = + /*#__PURE__*/ + function () { + var TouchMouseInput = + /*#__PURE__*/ + function (_Input) { + _inheritsLoose(TouchMouseInput, _Input); + + function TouchMouseInput(_manager, callback) { + var _this; + + _this = _Input.call(this, _manager, callback) || this; + + _this.handler = function (manager, inputEvent, inputData) { + var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH; + var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE; + + if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) { + return; + } // when we're in a touch event, record touches to de-dupe synthetic mouse event + + + if (isTouch) { + recordTouches.call(_assertThisInitialized(_assertThisInitialized(_this)), inputEvent, inputData); + } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized(_assertThisInitialized(_this)), inputData)) { + return; + } + + _this.callback(manager, inputEvent, inputData); + }; + + _this.touch = new TouchInput(_this.manager, _this.handler); + _this.mouse = new MouseInput(_this.manager, _this.handler); + _this.primaryTouch = null; + _this.lastTouches = []; + return _this; + } + /** + * @private + * handle mouse and touch events + * @param {Hammer} manager + * @param {String} inputEvent + * @param {Object} inputData + */ + + + var _proto = TouchMouseInput.prototype; + + /** + * @private + * remove the event listeners + */ + _proto.destroy = function destroy() { + this.touch.destroy(); + this.mouse.destroy(); + }; + + return TouchMouseInput; + }(Input); + + return TouchMouseInput; + }(); + + /** + * @private + * create new input type manager + * called by the Manager constructor + * @param {Hammer} manager + * @returns {Input} + */ + + function createInputInstance(manager) { + var Type; // let inputClass = manager.options.inputClass; + + var inputClass = manager.options.inputClass; + + if (inputClass) { + Type = inputClass; + } else if (SUPPORT_POINTER_EVENTS) { + Type = PointerEventInput; + } else if (SUPPORT_ONLY_TOUCH) { + Type = TouchInput; + } else if (!SUPPORT_TOUCH) { + Type = MouseInput; + } else { + Type = TouchMouseInput; + } + + return new Type(manager, inputHandler); + } + + /** + * @private + * if the argument is an array, we want to execute the fn on each entry + * if it aint an array we don't want to do a thing. + * this is used by all the methods that accept a single and array argument. + * @param {*|Array} arg + * @param {String} fn + * @param {Object} [context] + * @returns {Boolean} + */ + + function invokeArrayArg(arg, fn, context) { + if (Array.isArray(arg)) { + each(arg, context[fn], context); + return true; + } + + return false; + } + + var STATE_POSSIBLE = 1; + var STATE_BEGAN = 2; + var STATE_CHANGED = 4; + var STATE_ENDED = 8; + var STATE_RECOGNIZED = STATE_ENDED; + var STATE_CANCELLED = 16; + var STATE_FAILED = 32; + + /** + * @private + * get a unique id + * @returns {number} uniqueId + */ + var _uniqueId = 1; + function uniqueId() { + return _uniqueId++; + } + + /** + * @private + * get a recognizer by name if it is bound to a manager + * @param {Recognizer|String} otherRecognizer + * @param {Recognizer} recognizer + * @returns {Recognizer} + */ + function getRecognizerByNameIfManager(otherRecognizer, recognizer) { + var manager = recognizer.manager; + + if (manager) { + return manager.get(otherRecognizer); + } + + return otherRecognizer; + } + + /** + * @private + * get a usable string, used as event postfix + * @param {constant} state + * @returns {String} state + */ + + function stateStr(state) { + if (state & STATE_CANCELLED) { + return 'cancel'; + } else if (state & STATE_ENDED) { + return 'end'; + } else if (state & STATE_CHANGED) { + return 'move'; + } else if (state & STATE_BEGAN) { + return 'start'; + } + + return ''; + } + + /** + * @private + * Recognizer flow explained; * + * All recognizers have the initial state of POSSIBLE when a input session starts. + * The definition of a input session is from the first input until the last input, with all it's movement in it. * + * Example session for mouse-input: mousedown -> mousemove -> mouseup + * + * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed + * which determines with state it should be. + * + * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to + * POSSIBLE to give it another change on the next cycle. + * + * Possible + * | + * +-----+---------------+ + * | | + * +-----+-----+ | + * | | | + * Failed Cancelled | + * +-------+------+ + * | | + * Recognized Began + * | + * Changed + * | + * Ended/Recognized + */ + + /** + * @private + * Recognizer + * Every recognizer needs to extend from this class. + * @constructor + * @param {Object} options + */ + + var Recognizer = + /*#__PURE__*/ + function () { + function Recognizer(options) { + if (options === void 0) { + options = {}; + } + + this.options = _extends({ + enable: true + }, options); + this.id = uniqueId(); + this.manager = null; // default is enable true + + this.state = STATE_POSSIBLE; + this.simultaneous = {}; + this.requireFail = []; + } + /** + * @private + * set options + * @param {Object} options + * @return {Recognizer} + */ + + + var _proto = Recognizer.prototype; + + _proto.set = function set(options) { + assign$1(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state + + this.manager && this.manager.touchAction.update(); + return this; + }; + /** + * @private + * recognize simultaneous with an other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.recognizeWith = function recognizeWith(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { + return this; + } + + var simultaneous = this.simultaneous; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + + if (!simultaneous[otherRecognizer.id]) { + simultaneous[otherRecognizer.id] = otherRecognizer; + otherRecognizer.recognizeWith(this); + } + + return this; + }; + /** + * @private + * drop the simultaneous link. it doesnt remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + delete this.simultaneous[otherRecognizer.id]; + return this; + }; + /** + * @private + * recognizer can only run when an other is failing + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.requireFailure = function requireFailure(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { + return this; + } + + var requireFail = this.requireFail; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + + if (inArray(requireFail, otherRecognizer) === -1) { + requireFail.push(otherRecognizer); + otherRecognizer.requireFailure(this); + } + + return this; + }; + /** + * @private + * drop the requireFailure link. it does not remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + + + _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + var index = inArray(this.requireFail, otherRecognizer); + + if (index > -1) { + this.requireFail.splice(index, 1); + } + + return this; + }; + /** + * @private + * has require failures boolean + * @returns {boolean} + */ + + + _proto.hasRequireFailures = function hasRequireFailures() { + return this.requireFail.length > 0; + }; + /** + * @private + * if the recognizer can recognize simultaneous with an other recognizer + * @param {Recognizer} otherRecognizer + * @returns {Boolean} + */ + + + _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) { + return !!this.simultaneous[otherRecognizer.id]; + }; + /** + * @private + * You should use `tryEmit` instead of `emit` directly to check + * that all the needed recognizers has failed before emitting. + * @param {Object} input + */ + + + _proto.emit = function emit(input) { + var self = this; + var state = this.state; + + function emit(event) { + self.manager.emit(event, input); + } // 'panstart' and 'panmove' + + + if (state < STATE_ENDED) { + emit(self.options.event + stateStr(state)); + } + + emit(self.options.event); // simple 'eventName' events + + if (input.additionalEvent) { + // additional event(panleft, panright, pinchin, pinchout...) + emit(input.additionalEvent); + } // panend and pancancel + + + if (state >= STATE_ENDED) { + emit(self.options.event + stateStr(state)); + } + }; + /** + * @private + * Check that all the require failure recognizers has failed, + * if true, it emits a gesture event, + * otherwise, setup the state to FAILED. + * @param {Object} input + */ + + + _proto.tryEmit = function tryEmit(input) { + if (this.canEmit()) { + return this.emit(input); + } // it's failing anyway + + + this.state = STATE_FAILED; + }; + /** + * @private + * can we emit? + * @returns {boolean} + */ + + + _proto.canEmit = function canEmit() { + var i = 0; + + while (i < this.requireFail.length) { + if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { + return false; + } + + i++; + } + + return true; + }; + /** + * @private + * update the recognizer + * @param {Object} inputData + */ + + + _proto.recognize = function recognize(inputData) { + // make a new copy of the inputData + // so we can change the inputData without messing up the other recognizers + var inputDataClone = assign$1({}, inputData); // is is enabled and allow recognizing? + + if (!boolOrFn(this.options.enable, [this, inputDataClone])) { + this.reset(); + this.state = STATE_FAILED; + return; + } // reset when we've reached the end + + + if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { + this.state = STATE_POSSIBLE; + } + + this.state = this.process(inputDataClone); // the recognizer has recognized a gesture + // so trigger an event + + if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { + this.tryEmit(inputDataClone); + } + }; + /** + * @private + * return the state of the recognizer + * the actual recognizing happens in this method + * @virtual + * @param {Object} inputData + * @returns {constant} STATE + */ + + /* jshint ignore:start */ + + + _proto.process = function process(inputData) {}; + /* jshint ignore:end */ + + /** + * @private + * return the preferred touch-action + * @virtual + * @returns {Array} + */ + + + _proto.getTouchAction = function getTouchAction() {}; + /** + * @private + * called when the gesture isn't allowed to recognize + * like when another is being recognized or it is disabled + * @virtual + */ + + + _proto.reset = function reset() {}; + + return Recognizer; + }(); + + /** + * @private + * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur + * between the given interval and position. The delay option can be used to recognize multi-taps without firing + * a single tap. + * + * The eventData from the emitted event contains the property `tapCount`, which contains the amount of + * multi-taps being recognized. + * @constructor + * @extends Recognizer + */ + + var TapRecognizer = + /*#__PURE__*/ + function (_Recognizer) { + _inheritsLoose(TapRecognizer, _Recognizer); + + function TapRecognizer(options) { + var _this; + + if (options === void 0) { + options = {}; + } + + _this = _Recognizer.call(this, _extends({ + event: 'tap', + pointers: 1, + taps: 1, + interval: 300, + // max time between the multi-tap taps + time: 250, + // max time of the pointer to be down (like finger on the screen) + threshold: 9, + // a minimal movement is ok, but keep it low + posThreshold: 10 + }, options)) || this; // previous time and center, + // used for tap counting + + _this.pTime = false; + _this.pCenter = false; + _this._timer = null; + _this._input = null; + _this.count = 0; + return _this; + } + + var _proto = TapRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_MANIPULATION]; + }; + + _proto.process = function process(input) { + var _this2 = this; + + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTouchTime = input.deltaTime < options.time; + this.reset(); + + if (input.eventType & INPUT_START && this.count === 0) { + return this.failTimeout(); + } // we only allow little movement + // and we've reached an end event, so a tap is possible + + + if (validMovement && validTouchTime && validPointers) { + if (input.eventType !== INPUT_END) { + return this.failTimeout(); + } + + var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true; + var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; + this.pTime = input.timeStamp; + this.pCenter = input.center; + + if (!validMultiTap || !validInterval) { + this.count = 1; + } else { + this.count += 1; + } + + this._input = input; // if tap count matches we have recognized it, + // else it has began recognizing... + + var tapCount = this.count % options.taps; + + if (tapCount === 0) { + // no failing requirements, immediately trigger the tap event + // or wait as long as the multitap interval to trigger + if (!this.hasRequireFailures()) { + return STATE_RECOGNIZED; + } else { + this._timer = setTimeout(function () { + _this2.state = STATE_RECOGNIZED; + + _this2.tryEmit(); + }, options.interval); + return STATE_BEGAN; + } + } + } + + return STATE_FAILED; + }; + + _proto.failTimeout = function failTimeout() { + var _this3 = this; + + this._timer = setTimeout(function () { + _this3.state = STATE_FAILED; + }, this.options.interval); + return STATE_FAILED; + }; + + _proto.reset = function reset() { + clearTimeout(this._timer); + }; + + _proto.emit = function emit() { + if (this.state === STATE_RECOGNIZED) { + this._input.tapCount = this.count; + this.manager.emit(this.options.event, this._input); + } + }; + + return TapRecognizer; + }(Recognizer); + + /** + * @private + * This recognizer is just used as a base for the simple attribute recognizers. + * @constructor + * @extends Recognizer + */ + + var AttrRecognizer = + /*#__PURE__*/ + function (_Recognizer) { + _inheritsLoose(AttrRecognizer, _Recognizer); + + function AttrRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _Recognizer.call(this, _extends({ + pointers: 1 + }, options)) || this; + } + /** + * @private + * Used to check if it the recognizer receives valid input, like input.distance > 10. + * @memberof AttrRecognizer + * @param {Object} input + * @returns {Boolean} recognized + */ + + + var _proto = AttrRecognizer.prototype; + + _proto.attrTest = function attrTest(input) { + var optionPointers = this.options.pointers; + return optionPointers === 0 || input.pointers.length === optionPointers; + }; + /** + * @private + * Process the input and return the state for the recognizer + * @memberof AttrRecognizer + * @param {Object} input + * @returns {*} State + */ + + + _proto.process = function process(input) { + var state = this.state; + var eventType = input.eventType; + var isRecognized = state & (STATE_BEGAN | STATE_CHANGED); + var isValid = this.attrTest(input); // on cancel input and we've recognized before, return STATE_CANCELLED + + if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { + return state | STATE_CANCELLED; + } else if (isRecognized || isValid) { + if (eventType & INPUT_END) { + return state | STATE_ENDED; + } else if (!(state & STATE_BEGAN)) { + return STATE_BEGAN; + } + + return state | STATE_CHANGED; + } + + return STATE_FAILED; + }; + + return AttrRecognizer; + }(Recognizer); + + /** + * @private + * direction cons to string + * @param {constant} direction + * @returns {String} + */ + + function directionStr(direction) { + if (direction === DIRECTION_DOWN) { + return 'down'; + } else if (direction === DIRECTION_UP) { + return 'up'; + } else if (direction === DIRECTION_LEFT) { + return 'left'; + } else if (direction === DIRECTION_RIGHT) { + return 'right'; + } + + return ''; + } + + /** + * @private + * Pan + * Recognized when the pointer is down and moved in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ + + var PanRecognizer = + /*#__PURE__*/ + function (_AttrRecognizer) { + _inheritsLoose(PanRecognizer, _AttrRecognizer); + + function PanRecognizer(options) { + var _this; + + if (options === void 0) { + options = {}; + } + + _this = _AttrRecognizer.call(this, _extends({ + event: 'pan', + threshold: 10, + pointers: 1, + direction: DIRECTION_ALL + }, options)) || this; + _this.pX = null; + _this.pY = null; + return _this; + } + + var _proto = PanRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + var direction = this.options.direction; + var actions = []; + + if (direction & DIRECTION_HORIZONTAL) { + actions.push(TOUCH_ACTION_PAN_Y); + } + + if (direction & DIRECTION_VERTICAL) { + actions.push(TOUCH_ACTION_PAN_X); + } + + return actions; + }; + + _proto.directionTest = function directionTest(input) { + var options = this.options; + var hasMoved = true; + var distance = input.distance; + var direction = input.direction; + var x = input.deltaX; + var y = input.deltaY; // lock to axis? + + if (!(direction & options.direction)) { + if (options.direction & DIRECTION_HORIZONTAL) { + direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + hasMoved = x !== this.pX; + distance = Math.abs(input.deltaX); + } else { + direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN; + hasMoved = y !== this.pY; + distance = Math.abs(input.deltaY); + } + } + + input.direction = direction; + return hasMoved && distance > options.threshold && direction & options.direction; + }; + + _proto.attrTest = function attrTest(input) { + return AttrRecognizer.prototype.attrTest.call(this, input) && ( // replace with a super call + this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input)); + }; + + _proto.emit = function emit(input) { + this.pX = input.deltaX; + this.pY = input.deltaY; + var direction = directionStr(input.direction); + + if (direction) { + input.additionalEvent = this.options.event + direction; + } + + _AttrRecognizer.prototype.emit.call(this, input); + }; + + return PanRecognizer; + }(AttrRecognizer); + + /** + * @private + * Swipe + * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ + + var SwipeRecognizer = + /*#__PURE__*/ + function (_AttrRecognizer) { + _inheritsLoose(SwipeRecognizer, _AttrRecognizer); + + function SwipeRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _AttrRecognizer.call(this, _extends({ + event: 'swipe', + threshold: 10, + velocity: 0.3, + direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, + pointers: 1 + }, options)) || this; + } + + var _proto = SwipeRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return PanRecognizer.prototype.getTouchAction.call(this); + }; + + _proto.attrTest = function attrTest(input) { + var direction = this.options.direction; + var velocity; + + if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { + velocity = input.overallVelocity; + } else if (direction & DIRECTION_HORIZONTAL) { + velocity = input.overallVelocityX; + } else if (direction & DIRECTION_VERTICAL) { + velocity = input.overallVelocityY; + } + + return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END; + }; + + _proto.emit = function emit(input) { + var direction = directionStr(input.offsetDirection); + + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this.manager.emit(this.options.event, input); + }; + + return SwipeRecognizer; + }(AttrRecognizer); + + /** + * @private + * Pinch + * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). + * @constructor + * @extends AttrRecognizer + */ + + var PinchRecognizer = + /*#__PURE__*/ + function (_AttrRecognizer) { + _inheritsLoose(PinchRecognizer, _AttrRecognizer); + + function PinchRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _AttrRecognizer.call(this, _extends({ + event: 'pinch', + threshold: 0, + pointers: 2 + }, options)) || this; + } + + var _proto = PinchRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_NONE]; + }; + + _proto.attrTest = function attrTest(input) { + return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); + }; + + _proto.emit = function emit(input) { + if (input.scale !== 1) { + var inOut = input.scale < 1 ? 'in' : 'out'; + input.additionalEvent = this.options.event + inOut; + } + + _AttrRecognizer.prototype.emit.call(this, input); + }; + + return PinchRecognizer; + }(AttrRecognizer); + + /** + * @private + * Rotate + * Recognized when two or more pointer are moving in a circular motion. + * @constructor + * @extends AttrRecognizer + */ + + var RotateRecognizer = + /*#__PURE__*/ + function (_AttrRecognizer) { + _inheritsLoose(RotateRecognizer, _AttrRecognizer); + + function RotateRecognizer(options) { + if (options === void 0) { + options = {}; + } + + return _AttrRecognizer.call(this, _extends({ + event: 'rotate', + threshold: 0, + pointers: 2 + }, options)) || this; + } + + var _proto = RotateRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_NONE]; + }; + + _proto.attrTest = function attrTest(input) { + return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); + }; + + return RotateRecognizer; + }(AttrRecognizer); + + /** + * @private + * Press + * Recognized when the pointer is down for x ms without any movement. + * @constructor + * @extends Recognizer + */ + + var PressRecognizer = + /*#__PURE__*/ + function (_Recognizer) { + _inheritsLoose(PressRecognizer, _Recognizer); + + function PressRecognizer(options) { + var _this; + + if (options === void 0) { + options = {}; + } + + _this = _Recognizer.call(this, _extends({ + event: 'press', + pointers: 1, + time: 251, + // minimal time of the pointer to be pressed + threshold: 9 + }, options)) || this; + _this._timer = null; + _this._input = null; + return _this; + } + + var _proto = PressRecognizer.prototype; + + _proto.getTouchAction = function getTouchAction() { + return [TOUCH_ACTION_AUTO]; + }; + + _proto.process = function process(input) { + var _this2 = this; + + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTime = input.deltaTime > options.time; + this._input = input; // we only allow little movement + // and we've reached an end event, so a tap is possible + + if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) { + this.reset(); + } else if (input.eventType & INPUT_START) { + this.reset(); + this._timer = setTimeout(function () { + _this2.state = STATE_RECOGNIZED; + + _this2.tryEmit(); + }, options.time); + } else if (input.eventType & INPUT_END) { + return STATE_RECOGNIZED; + } + + return STATE_FAILED; + }; + + _proto.reset = function reset() { + clearTimeout(this._timer); + }; + + _proto.emit = function emit(input) { + if (this.state !== STATE_RECOGNIZED) { + return; + } + + if (input && input.eventType & INPUT_END) { + this.manager.emit(this.options.event + "up", input); + } else { + this._input.timeStamp = now(); + this.manager.emit(this.options.event, this._input); + } + }; + + return PressRecognizer; + }(Recognizer); + + var defaults = { + /** + * @private + * set if DOM events are being triggered. + * But this is slower and unused by simple implementations, so disabled by default. + * @type {Boolean} + * @default false + */ + domEvents: false, + + /** + * @private + * The value for the touchAction property/fallback. + * When set to `compute` it will magically set the correct value based on the added recognizers. + * @type {String} + * @default compute + */ + touchAction: TOUCH_ACTION_COMPUTE, + + /** + * @private + * @type {Boolean} + * @default true + */ + enable: true, + + /** + * @private + * EXPERIMENTAL FEATURE -- can be removed/changed + * Change the parent input target element. + * If Null, then it is being set the to main element. + * @type {Null|EventTarget} + * @default null + */ + inputTarget: null, + + /** + * @private + * force an input class + * @type {Null|Function} + * @default null + */ + inputClass: null, + + /** + * @private + * Some CSS properties can be used to improve the working of Hammer. + * Add them to this method and they will be set when creating a new Manager. + * @namespace + */ + cssProps: { + /** + * @private + * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userSelect: "none", + + /** + * @private + * Disable the Windows Phone grippers when pressing an element. + * @type {String} + * @default 'none' + */ + touchSelect: "none", + + /** + * @private + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @type {String} + * @default 'none' + */ + touchCallout: "none", + + /** + * @private + * Specifies whether zooming is enabled. Used by IE10> + * @type {String} + * @default 'none' + */ + contentZooming: "none", + + /** + * @private + * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userDrag: "none", + + /** + * @private + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in iOS. This property obeys the alpha value, if specified. + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: "rgba(0,0,0,0)" + } + }; + /** + * @private + * Default recognizer setup when calling `Hammer()` + * When creating a new Manager these will be skipped. + * This is separated with other defaults because of tree-shaking. + * @type {Array} + */ + + var preset = [[RotateRecognizer, { + enable: false + }], [PinchRecognizer, { + enable: false + }, ['rotate']], [SwipeRecognizer, { + direction: DIRECTION_HORIZONTAL + }], [PanRecognizer, { + direction: DIRECTION_HORIZONTAL + }, ['swipe']], [TapRecognizer], [TapRecognizer, { + event: 'doubletap', + taps: 2 + }, ['tap']], [PressRecognizer]]; + + var STOP = 1; + var FORCED_STOP = 2; + /** + * @private + * add/remove the css properties as defined in manager.options.cssProps + * @param {Manager} manager + * @param {Boolean} add + */ + + function toggleCssProps(manager, add) { + var element = manager.element; + + if (!element.style) { + return; + } + + var prop; + each(manager.options.cssProps, function (value, name) { + prop = prefixed(element.style, name); + + if (add) { + manager.oldCssProps[prop] = element.style[prop]; + element.style[prop] = value; + } else { + element.style[prop] = manager.oldCssProps[prop] || ""; + } + }); + + if (!add) { + manager.oldCssProps = {}; + } + } + /** + * @private + * trigger dom event + * @param {String} event + * @param {Object} data + */ + + + function triggerDomEvent(event, data) { + var gestureEvent = document.createEvent("Event"); + gestureEvent.initEvent(event, true, true); + gestureEvent.gesture = data; + data.target.dispatchEvent(gestureEvent); + } + /** + * @private + * Manager + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ + + + var Manager = + /*#__PURE__*/ + function () { + function Manager(element, options) { + var _this = this; + + this.options = assign$1({}, defaults, options || {}); + this.options.inputTarget = this.options.inputTarget || element; + this.handlers = {}; + this.session = {}; + this.recognizers = []; + this.oldCssProps = {}; + this.element = element; + this.input = createInputInstance(this); + this.touchAction = new TouchAction(this, this.options.touchAction); + toggleCssProps(this, true); + each(this.options.recognizers, function (item) { + var recognizer = _this.add(new item[0](item[1])); + + item[2] && recognizer.recognizeWith(item[2]); + item[3] && recognizer.requireFailure(item[3]); + }, this); + } + /** + * @private + * set options + * @param {Object} options + * @returns {Manager} + */ + + + var _proto = Manager.prototype; + + _proto.set = function set(options) { + assign$1(this.options, options); // Options that need a little more setup + + if (options.touchAction) { + this.touchAction.update(); + } + + if (options.inputTarget) { + // Clean up existing event listeners and reinitialize + this.input.destroy(); + this.input.target = options.inputTarget; + this.input.init(); + } + + return this; + }; + /** + * @private + * stop recognizing for this session. + * This session will be discarded, when a new [input]start event is fired. + * When forced, the recognizer cycle is stopped immediately. + * @param {Boolean} [force] + */ + + + _proto.stop = function stop(force) { + this.session.stopped = force ? FORCED_STOP : STOP; + }; + /** + * @private + * run the recognizers! + * called by the inputHandler function on every movement of the pointers (touches) + * it walks through all the recognizers and tries to detect the gesture that is being made + * @param {Object} inputData + */ + + + _proto.recognize = function recognize(inputData) { + var session = this.session; + + if (session.stopped) { + return; + } // run the touch-action polyfill + + + this.touchAction.preventDefaults(inputData); + var recognizer; + var recognizers = this.recognizers; // this holds the recognizer that is being recognized. + // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED + // if no recognizer is detecting a thing, it is set to `null` + + var curRecognizer = session.curRecognizer; // reset when the last recognizer is recognized + // or when we're in a new session + + if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) { + session.curRecognizer = null; + curRecognizer = null; + } + + var i = 0; + + while (i < recognizers.length) { + recognizer = recognizers[i]; // find out if we are allowed try to recognize the input for this one. + // 1. allow if the session is NOT forced stopped (see the .stop() method) + // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one + // that is being recognized. + // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. + // this can be setup with the `recognizeWith()` method on the recognizer. + + if (session.stopped !== FORCED_STOP && ( // 1 + !curRecognizer || recognizer === curRecognizer || // 2 + recognizer.canRecognizeWith(curRecognizer))) { + // 3 + recognizer.recognize(inputData); + } else { + recognizer.reset(); + } // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the + // current active recognizer. but only if we don't already have an active recognizer + + + if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { + session.curRecognizer = recognizer; + curRecognizer = recognizer; + } + + i++; + } + }; + /** + * @private + * get a recognizer by its event name. + * @param {Recognizer|String} recognizer + * @returns {Recognizer|Null} + */ + + + _proto.get = function get(recognizer) { + if (recognizer instanceof Recognizer) { + return recognizer; + } + + var recognizers = this.recognizers; + + for (var i = 0; i < recognizers.length; i++) { + if (recognizers[i].options.event === recognizer) { + return recognizers[i]; + } + } + + return null; + }; + /** + * @private add a recognizer to the manager + * existing recognizers with the same event name will be removed + * @param {Recognizer} recognizer + * @returns {Recognizer|Manager} + */ + + + _proto.add = function add(recognizer) { + if (invokeArrayArg(recognizer, "add", this)) { + return this; + } // remove existing + + + var existing = this.get(recognizer.options.event); + + if (existing) { + this.remove(existing); + } + + this.recognizers.push(recognizer); + recognizer.manager = this; + this.touchAction.update(); + return recognizer; + }; + /** + * @private + * remove a recognizer by name or instance + * @param {Recognizer|String} recognizer + * @returns {Manager} + */ + + + _proto.remove = function remove(recognizer) { + if (invokeArrayArg(recognizer, "remove", this)) { + return this; + } + + var targetRecognizer = this.get(recognizer); // let's make sure this recognizer exists + + if (recognizer) { + var recognizers = this.recognizers; + var index = inArray(recognizers, targetRecognizer); + + if (index !== -1) { + recognizers.splice(index, 1); + this.touchAction.update(); + } + } + + return this; + }; + /** + * @private + * bind event + * @param {String} events + * @param {Function} handler + * @returns {EventEmitter} this + */ + + + _proto.on = function on(events, handler) { + if (events === undefined || handler === undefined) { + return this; + } + + var handlers = this.handlers; + each(splitStr(events), function (event) { + handlers[event] = handlers[event] || []; + handlers[event].push(handler); + }); + return this; + }; + /** + * @private unbind event, leave emit blank to remove all handlers + * @param {String} events + * @param {Function} [handler] + * @returns {EventEmitter} this + */ + + + _proto.off = function off(events, handler) { + if (events === undefined) { + return this; + } + + var handlers = this.handlers; + each(splitStr(events), function (event) { + if (!handler) { + delete handlers[event]; + } else { + handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1); + } + }); + return this; + }; + /** + * @private emit event to the listeners + * @param {String} event + * @param {Object} data + */ + + + _proto.emit = function emit(event, data) { + // we also want to trigger dom events + if (this.options.domEvents) { + triggerDomEvent(event, data); + } // no handlers, so skip it all + + + var handlers = this.handlers[event] && this.handlers[event].slice(); + + if (!handlers || !handlers.length) { + return; + } + + data.type = event; + + data.preventDefault = function () { + data.srcEvent.preventDefault(); + }; + + var i = 0; + + while (i < handlers.length) { + handlers[i](data); + i++; + } + }; + /** + * @private + * destroy the manager and unbinds all events + * it doesn't unbind dom events, that is the user own responsibility + */ + + + _proto.destroy = function destroy() { + this.element && toggleCssProps(this, false); + this.handlers = {}; + this.session = {}; + this.input.destroy(); + this.element = null; + }; + + return Manager; + }(); + + var SINGLE_TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL + }; + var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; + var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; + /** + * @private + * Touch events input + * @constructor + * @extends Input + */ + + var SingleTouchInput = + /*#__PURE__*/ + function (_Input) { + _inheritsLoose(SingleTouchInput, _Input); + + function SingleTouchInput() { + var _this; + + var proto = SingleTouchInput.prototype; + proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS; + proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS; + _this = _Input.apply(this, arguments) || this; + _this.started = false; + return _this; + } + + var _proto = SingleTouchInput.prototype; + + _proto.handler = function handler(ev) { + var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; // should we handle the touch events? + + if (type === INPUT_START) { + this.started = true; + } + + if (!this.started) { + return; + } + + var touches = normalizeSingleTouches.call(this, ev, type); // when done, reset the started state + + if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { + this.started = false; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + }; + + return SingleTouchInput; + }(Input); + + function normalizeSingleTouches(ev, type) { + var all = toArray(ev.touches); + var changed = toArray(ev.changedTouches); + + if (type & (INPUT_END | INPUT_CANCEL)) { + all = uniqueArray(all.concat(changed), 'identifier', true); + } + + return [all, changed]; + } + + /** + * @private + * wrap a method with a deprecation warning and stack trace + * @param {Function} method + * @param {String} name + * @param {String} message + * @returns {Function} A new function wrapping the supplied method. + */ + function deprecate(method, name, message) { + var deprecationMessage = "DEPRECATED METHOD: " + name + "\n" + message + " AT \n"; + return function () { + var e = new Error('get-stack-trace'); + var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '').replace(/^\s+at\s+/gm, '').replace(/^Object.\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace'; + var log = window.console && (window.console.warn || window.console.log); + + if (log) { + log.call(window.console, deprecationMessage, stack); + } + + return method.apply(this, arguments); + }; + } + + /** + * @private + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] + * @returns {Object} dest + */ + + var extend = deprecate(function (dest, src, merge) { + var keys = Object.keys(src); + var i = 0; + + while (i < keys.length) { + if (!merge || merge && dest[keys[i]] === undefined) { + dest[keys[i]] = src[keys[i]]; + } + + i++; + } + + return dest; + }, 'extend', 'Use `assign`.'); + + /** + * @private + * merge the values from src in the dest. + * means that properties that exist in dest will not be overwritten by src + * @param {Object} dest + * @param {Object} src + * @returns {Object} dest + */ + + var merge = deprecate(function (dest, src) { + return extend(dest, src, true); + }, 'merge', 'Use `assign`.'); + + /** + * @private + * simple class inheritance + * @param {Function} child + * @param {Function} base + * @param {Object} [properties] + */ + + function inherit(child, base, properties) { + var baseP = base.prototype; + var childP; + childP = child.prototype = Object.create(baseP); + childP.constructor = child; + childP._super = baseP; + + if (properties) { + assign$1(childP, properties); + } + } + + /** + * @private + * simple function bind + * @param {Function} fn + * @param {Object} context + * @returns {Function} + */ + function bindFn(fn, context) { + return function boundFn() { + return fn.apply(context, arguments); + }; + } + + /** + * @private + * Simple way to create a manager with a default set of recognizers. + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ + + var Hammer = + /*#__PURE__*/ + function () { + var Hammer = + /** + * @private + * @const {string} + */ + function Hammer(element, options) { + if (options === void 0) { + options = {}; + } + + return new Manager(element, _extends({ + recognizers: preset.concat() + }, options)); + }; + + Hammer.VERSION = "2.0.17-rc"; + Hammer.DIRECTION_ALL = DIRECTION_ALL; + Hammer.DIRECTION_DOWN = DIRECTION_DOWN; + Hammer.DIRECTION_LEFT = DIRECTION_LEFT; + Hammer.DIRECTION_RIGHT = DIRECTION_RIGHT; + Hammer.DIRECTION_UP = DIRECTION_UP; + Hammer.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL; + Hammer.DIRECTION_VERTICAL = DIRECTION_VERTICAL; + Hammer.DIRECTION_NONE = DIRECTION_NONE; + Hammer.DIRECTION_DOWN = DIRECTION_DOWN; + Hammer.INPUT_START = INPUT_START; + Hammer.INPUT_MOVE = INPUT_MOVE; + Hammer.INPUT_END = INPUT_END; + Hammer.INPUT_CANCEL = INPUT_CANCEL; + Hammer.STATE_POSSIBLE = STATE_POSSIBLE; + Hammer.STATE_BEGAN = STATE_BEGAN; + Hammer.STATE_CHANGED = STATE_CHANGED; + Hammer.STATE_ENDED = STATE_ENDED; + Hammer.STATE_RECOGNIZED = STATE_RECOGNIZED; + Hammer.STATE_CANCELLED = STATE_CANCELLED; + Hammer.STATE_FAILED = STATE_FAILED; + Hammer.Manager = Manager; + Hammer.Input = Input; + Hammer.TouchAction = TouchAction; + Hammer.TouchInput = TouchInput; + Hammer.MouseInput = MouseInput; + Hammer.PointerEventInput = PointerEventInput; + Hammer.TouchMouseInput = TouchMouseInput; + Hammer.SingleTouchInput = SingleTouchInput; + Hammer.Recognizer = Recognizer; + Hammer.AttrRecognizer = AttrRecognizer; + Hammer.Tap = TapRecognizer; + Hammer.Pan = PanRecognizer; + Hammer.Swipe = SwipeRecognizer; + Hammer.Pinch = PinchRecognizer; + Hammer.Rotate = RotateRecognizer; + Hammer.Press = PressRecognizer; + Hammer.on = addEventListeners; + Hammer.off = removeEventListeners; + Hammer.each = each; + Hammer.merge = merge; + Hammer.extend = extend; + Hammer.bindFn = bindFn; + Hammer.assign = assign$1; + Hammer.inherit = inherit; + Hammer.bindFn = bindFn; + Hammer.prefixed = prefixed; + Hammer.toArray = toArray; + Hammer.inArray = inArray; + Hammer.uniqueArray = uniqueArray; + Hammer.splitStr = splitStr; + Hammer.boolOrFn = boolOrFn; + Hammer.hasParent = hasParent; + Hammer.addEventListeners = addEventListeners; + Hammer.removeEventListeners = removeEventListeners; + Hammer.defaults = assign$1({}, defaults, { + preset: preset + }); + return Hammer; + }(); + + return Hammer; + +}))); +//# sourceMappingURL=hammer.js.map diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js.map b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js.map new file mode 100644 index 00000000..875e3ad4 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hammer.js","sources":["../src/utils/assign.js","../src/utils/utils-consts.js","../src/utils/prefixed.js","../src/browser.js","../src/touchactionjs/get-touchaction-props.js","../src/touchactionjs/touchaction-Consts.js","../src/inputjs/input-consts.js","../src/utils/each.js","../src/utils/bool-or-fn.js","../src/utils/in-str.js","../src/touchactionjs/clean-touch-actions.js","../src/touchactionjs/touchaction-constructor.js","../src/utils/has-parent.js","../src/inputjs/get-center.js","../src/inputjs/simple-clone-input-data.js","../src/inputjs/get-distance.js","../src/inputjs/get-angle.js","../src/inputjs/get-direction.js","../src/inputjs/compute-delta-xy.js","../src/inputjs/get-velocity.js","../src/inputjs/get-scale.js","../src/inputjs/get-rotation.js","../src/inputjs/compute-interval-input-data.js","../src/inputjs/compute-input-data.js","../src/inputjs/input-handler.js","../src/utils/split-str.js","../src/utils/add-event-listeners.js","../src/utils/remove-event-listeners.js","../src/utils/get-window-for-element.js","../src/inputjs/input-constructor.js","../src/utils/in-array.js","../src/input/pointerevent.js","../src/utils/to-array.js","../src/utils/unique-array.js","../src/input/touch.js","../src/input/mouse.js","../src/input/touchmouse.js","../src/inputjs/create-input-instance.js","../src/utils/invoke-array-arg.js","../src/recognizerjs/recognizer-consts.js","../src/utils/unique-id.js","../src/recognizerjs/get-recognizer-by-name-if-manager.js","../src/recognizerjs/state-str.js","../src/recognizerjs/recognizer-constructor.js","../src/recognizers/tap.js","../src/recognizers/attribute.js","../src/recognizerjs/direction-str.js","../src/recognizers/pan.js","../src/recognizers/swipe.js","../src/recognizers/pinch.js","../src/recognizers/rotate.js","../src/recognizers/press.js","../src/defaults.js","../src/manager.js","../src/input/singletouch.js","../src/utils/deprecate.js","../src/utils/extend.js","../src/utils/merge.js","../src/utils/inherit.js","../src/utils/bind-fn.js","../src/hammer.js"],"sourcesContent":["/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nlet assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n let output = Object(target);\n for (let index = 1; index < arguments.length; index++) {\n const source = arguments[index];\n if (source !== undefined && source !== null) {\n for (const nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\nexport default assign;","\nconst VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nconst TEST_ELEMENT = typeof document === \"undefined\" ? {style: {}} : document.createElement('div');\n\nconst TYPE_FUNCTION = 'function';\n\nconst { round, abs } = Math;\nconst { now } = Date;\n\nexport {\n VENDOR_PREFIXES,\n TEST_ELEMENT,\n TYPE_FUNCTION,\n round,\n abs,\n now\n};\n","import { VENDOR_PREFIXES } from './utils-consts';\n/**\n * @private\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nexport default function prefixed(obj, property) {\n let prefix;\n let prop;\n let camelProp = property[0].toUpperCase() + property.slice(1);\n\n let i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n","/* eslint-disable no-new-func, no-nested-ternary */\n\nlet win;\n\nif (typeof window === \"undefined\") {\n\t// window is undefined in node.js\n\twin = {};\n} else {\n\twin = window;\n}\n/* eslint-enable no-new-func, no-nested-ternary */\n\nexport {win as window};\n","import prefixed from '../utils/prefixed';\nimport { TEST_ELEMENT } from '../utils/utils-consts';\nimport {window} from '../browser';\n\nexport const PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nexport const NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\nexport default function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n let touchMap = {};\n let cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach((val) => {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n return touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n","import getTouchActionProps from './get-touchaction-props';\n\n\n\n// magical touchAction value\nconst TOUCH_ACTION_COMPUTE = 'compute';\nconst TOUCH_ACTION_AUTO = 'auto';\nconst TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nconst TOUCH_ACTION_NONE = 'none';\nconst TOUCH_ACTION_PAN_X = 'pan-x';\nconst TOUCH_ACTION_PAN_Y = 'pan-y';\nconst TOUCH_ACTION_MAP = getTouchActionProps();\n\nexport {\n TOUCH_ACTION_AUTO,\n TOUCH_ACTION_COMPUTE,\n TOUCH_ACTION_MANIPULATION,\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y,\n TOUCH_ACTION_MAP\n};\n","import prefixed from '../utils/prefixed';\nimport {window} from \"../browser\";\n\nconst MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nconst SUPPORT_TOUCH = ('ontouchstart' in window);\nconst SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nconst SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nconst INPUT_TYPE_TOUCH = 'touch';\nconst INPUT_TYPE_PEN = 'pen';\nconst INPUT_TYPE_MOUSE = 'mouse';\nconst INPUT_TYPE_KINECT = 'kinect';\n\nconst COMPUTE_INTERVAL = 25;\n\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst INPUT_CANCEL = 8;\n\nconst DIRECTION_NONE = 1;\nconst DIRECTION_LEFT = 2;\nconst DIRECTION_RIGHT = 4;\nconst DIRECTION_UP = 8;\nconst DIRECTION_DOWN = 16;\n\nconst DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nconst DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nconst DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nconst PROPS_XY = ['x', 'y'];\nconst PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\nexport {\n MOBILE_REGEX,\n SUPPORT_ONLY_TOUCH,\n SUPPORT_POINTER_EVENTS,\n SUPPORT_TOUCH,\n INPUT_TYPE_KINECT,\n INPUT_TYPE_MOUSE,\n INPUT_TYPE_PEN,\n INPUT_TYPE_TOUCH,\n COMPUTE_INTERVAL,\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n PROPS_XY,\n PROPS_CLIENT_XY\n};\n","/**\n * @private\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nexport default function each(obj, iterator, context) {\n let i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n","import { TYPE_FUNCTION } from './utils-consts';\n/**\n * @private\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nexport default function boolOrFn(val, args) {\n if (typeof val === TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n","/**\n * @private\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nexport default function inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n","import inStr from '../utils/in-str';\nimport {\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y,\n TOUCH_ACTION_MANIPULATION,\n TOUCH_ACTION_AUTO\n} from './touchaction-Consts';\n\n/**\n * @private\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nexport default function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n","import {\n TOUCH_ACTION_COMPUTE,\n TOUCH_ACTION_MAP,\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y\n} from './touchaction-Consts';\nimport {\n NATIVE_TOUCH_ACTION,\n PREFIXED_TOUCH_ACTION,\n} from \"./get-touchaction-props\";\nimport {\n DIRECTION_VERTICAL,\n DIRECTION_HORIZONTAL\n} from '../inputjs/input-consts';\nimport each from '../utils/each';\nimport boolOrFn from '../utils/bool-or-fn';\nimport inStr from '../utils/in-str';\nimport cleanTouchActions from './clean-touch-actions';\n\n/**\n * @private\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nexport default class TouchAction {\n constructor(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n\n /**\n * @private\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set(value) {\n // find out the touch-action by the event handlers\n if (value === TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n }\n\n /**\n * @private\n * just re-set the touchAction value\n */\n update() {\n this.set(this.manager.options.touchAction);\n }\n\n /**\n * @private\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute() {\n let actions = [];\n each(this.manager.recognizers, (recognizer) => {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n }\n\n /**\n * @private\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults(input) {\n let { srcEvent } = input;\n let direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n let { actions } = this;\n let hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n // do not prevent defaults if this is a tap gesture\n let isTapPointer = input.pointers.length === 1;\n let isTapMovement = input.distance < 2;\n let isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n }\n\n /**\n * @private\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n}\n","/**\n * @private\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nexport default function hasParent(node, parent) {\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","import { round } from '../utils/utils-consts';\n\n/**\n * @private\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nexport default function getCenter(pointers) {\n let pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n","import { now,round } from '../utils/utils-consts';\nimport getCenter from './get-center';\n\n/**\n * @private\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nexport default function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n let pointers = [];\n let i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n","import { PROPS_XY } from './input-consts';\n\n/**\n * @private\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nexport default function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n let x = p2[props[0]] - p1[props[0]];\n let y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n","import { PROPS_XY } from './input-consts';\n\n/**\n * @private\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nexport default function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n let x = p2[props[0]] - p1[props[0]];\n let y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n","import { abs } from '../utils/utils-consts';\nimport { DIRECTION_NONE,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP,DIRECTION_DOWN } from './input-consts';\n\n/**\n * @private\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nexport default function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n","import { INPUT_START, INPUT_END } from './input-consts';\n\nexport default function computeDeltaXY(session, input) {\n let { center } = input;\n // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session;\n // jscs throwing error on defalut destructured values and without defaults tests fail\n let offset = session.offsetDelta || {};\n let prevDelta = session.prevDelta || {};\n let prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n","/**\n * @private\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nexport default function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n","import { PROPS_CLIENT_XY } from './input-consts';\nimport getDistance from './get-distance';\n/**\n * @private\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nexport default function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n","import getAngle from './get-angle';\nimport { PROPS_CLIENT_XY } from './input-consts';\n\n/**\n * @private\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nexport default function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n","import { INPUT_CANCEL,COMPUTE_INTERVAL } from './input-consts';\nimport { abs } from '../utils/utils-consts';\nimport getVelocity from './get-velocity';\nimport getDirection from './get-direction';\n\n/**\n * @private\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nexport default function computeIntervalInputData(session, input) {\n let last = session.lastInterval || input;\n let deltaTime = input.timeStamp - last.timeStamp;\n let velocity;\n let velocityX;\n let velocityY;\n let direction;\n\n if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n let deltaX = input.deltaX - last.deltaX;\n let deltaY = input.deltaY - last.deltaY;\n\n let v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n","import { now } from '../utils/utils-consts';\nimport { abs } from '../utils/utils-consts';\nimport hasParent from '../utils/has-parent';\nimport simpleCloneInputData from './simple-clone-input-data';\nimport getCenter from './get-center';\nimport getDistance from './get-distance';\nimport getAngle from './get-angle';\nimport getDirection from './get-direction';\nimport computeDeltaXY from './compute-delta-xy';\nimport getVelocity from './get-velocity';\nimport getScale from './get-scale';\nimport getRotation from './get-rotation';\nimport computeIntervalInputData from './compute-interval-input-data';\n\n/**\n* @private\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nexport default function computeInputData(manager, input) {\n let { session } = manager;\n let { pointers } = input;\n let { length:pointersLength } = pointers;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n let { firstInput, firstMultiple } = session;\n let offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n let center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n let overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n let target = manager.element;\n const srcEvent = input.srcEvent;\n let srcEventTarget;\n\n if (srcEvent.composedPath) {\n srcEventTarget = srcEvent.composedPath()[0];\n } else if (srcEvent.path) {\n srcEventTarget = srcEvent.path[0];\n } else {\n srcEventTarget = srcEvent.target;\n }\n\n if (hasParent(srcEventTarget, target)) {\n target = srcEventTarget;\n }\n input.target = target;\n}\n","import { INPUT_START,INPUT_END,INPUT_CANCEL } from './input-consts';\nimport computeInputData from './compute-input-data';\n\n/**\n * @private\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nexport default function inputHandler(manager, eventType, input) {\n let pointersLen = input.pointers.length;\n let changedPointersLen = input.changedPointers.length;\n let isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n let isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n","/**\n * @private\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n\nexport default function splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n","import each from './each';\nimport splitStr from './split-str';\n/**\n * @private\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nexport default function addEventListeners(target, types, handler) {\n each(splitStr(types), (type) => {\n target.addEventListener(type, handler, false);\n });\n}\n","import each from './each';\nimport splitStr from './split-str';\n/**\n * @private\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nexport default function removeEventListeners(target, types, handler) {\n each(splitStr(types), (type) => {\n target.removeEventListener(type, handler, false);\n });\n}\n","/**\n * @private\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nexport default function getWindowForElement(element) {\n let doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n","import boolOrFn from '../utils/bool-or-fn';\nimport addEventListeners from '../utils/add-event-listeners';\nimport removeEventListeners from '../utils/remove-event-listeners';\nimport getWindowForElement from '../utils/get-window-for-element';\n\n/**\n * @private\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nexport default class Input {\n constructor(manager, callback) {\n let self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n }\n /**\n * @private\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler() { }\n\n /**\n * @private\n * bind the events\n */\n init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n\n /**\n * @private\n * unbind the events\n */\n destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n}\n","/**\n * @private\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nexport default function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n let i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {// do not use === here, test fails\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n","import {\n INPUT_START,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_MOVE,\n INPUT_TYPE_TOUCH,\n INPUT_TYPE_MOUSE,\n INPUT_TYPE_PEN,\n INPUT_TYPE_KINECT\n} from '../inputjs/input-consts';\nimport {window} from \"../browser\";\nimport Input from '../inputjs/input-constructor';\nimport inArray from '../utils/in-array';\n\nconst POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nconst IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nlet POINTER_ELEMENT_EVENTS = 'pointerdown';\nlet POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * @private\n * Pointer events input\n * @constructor\n * @extends Input\n */\nexport default class PointerEventInput extends Input {\n constructor() {\n var proto = PointerEventInput.prototype;\n\n proto.evEl = POINTER_ELEMENT_EVENTS;\n proto.evWin = POINTER_WINDOW_EVENTS;\n super(...arguments);\n this.store = (this.manager.session.pointerEvents = []);\n }\n\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n handler(ev) {\n let { store } = this;\n let removePointer = false;\n\n let eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n let eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n let pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n let isTouch = (pointerType === INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n let storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n}\n","/**\n * @private\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nexport default function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n","import inArray from './in-array';\n\n/**\n * @private\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nexport default function uniqueArray(src, key, sort) {\n let results = [];\n let values = [];\n let i = 0;\n\n while (i < src.length) {\n let val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort((a, b) => {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_TYPE_TOUCH\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\nimport toArray from '../utils/to-array';\nimport hasParent from '../utils/has-parent';\nimport uniqueArray from '../utils/unique-array';\n\nconst TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nconst TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * @private\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nexport default class TouchInput extends Input {\n constructor() {\n TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS;\n super(...arguments);\n this.targetIds = {};\n // this.evTarget = TOUCH_TARGET_EVENTS;\n }\n handler(ev) {\n let type = TOUCH_INPUT_MAP[ev.type];\n let touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n}\n\n/**\n * @private\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n let allTouches = toArray(ev.touches);\n let { targetIds } = this;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n let i;\n let targetTouches;\n let changedTouches = toArray(ev.changedTouches);\n let changedTargetTouches = [];\n let { target } = this;\n\n // get target touches from touches\n targetTouches = allTouches.filter((touch) => {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_TYPE_MOUSE\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\n\nconst MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nconst MOUSE_ELEMENT_EVENTS = 'mousedown';\nconst MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * @private\n * Mouse events input\n * @constructor\n * @extends Input\n */\nexport default class MouseInput extends Input {\n constructor() {\n var proto = MouseInput.prototype;\n proto.evEl = MOUSE_ELEMENT_EVENTS;\n proto.evWin = MOUSE_WINDOW_EVENTS;\n\n super(...arguments);\n this.pressed = false; // mousedown state\n }\n\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n handler(ev) {\n let eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n}\n","import Input from \"../inputjs/input-constructor\";\nimport TouchInput from \"./touch\";\nimport MouseInput from \"./mouse\";\nimport {\n\tINPUT_START,\n\tINPUT_END,\n\tINPUT_CANCEL,\n\tINPUT_TYPE_TOUCH,\n\tINPUT_TYPE_MOUSE,\n} from \"../inputjs/input-consts\";\n\n/**\n * @private\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nconst DEDUP_TIMEOUT = 2500;\nconst DEDUP_DISTANCE = 25;\n\nfunction setLastTouch(eventData) {\n\tconst { changedPointers: [touch] } = eventData;\n\n\tif (touch.identifier === this.primaryTouch) {\n\t\tconst lastTouch = { x: touch.clientX, y: touch.clientY };\n\t\tconst lts = this.lastTouches;\n\n\t\tthis.lastTouches.push(lastTouch);\n\n\n\t\tconst removeLastTouch = function() {\n\t\t\tconst i = lts.indexOf(lastTouch);\n\n\t\t\tif (i > -1) {\n\t\t\t\tlts.splice(i, 1);\n\t\t\t}\n\t\t};\n\n\t\tsetTimeout(removeLastTouch, DEDUP_TIMEOUT);\n\t}\n}\n\n\nfunction recordTouches(eventType, eventData) {\n\tif (eventType & INPUT_START) {\n\t\tthis.primaryTouch = eventData.changedPointers[0].identifier;\n\t\tsetLastTouch.call(this, eventData);\n\t} else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n\t\tsetLastTouch.call(this, eventData);\n\t}\n}\nfunction isSyntheticEvent(eventData) {\n\tconst x = eventData.srcEvent.clientX;\n\tconst y = eventData.srcEvent.clientY;\n\n\tfor (let i = 0; i < this.lastTouches.length; i++) {\n\t\tconst t = this.lastTouches[i];\n\t\tconst dx = Math.abs(x - t.x);\n\t\tconst dy = Math.abs(y - t.y);\n\n\t\tif (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\nexport default class TouchMouseInput extends Input {\n\tconstructor(manager, callback) {\n\t\tsuper(manager, callback);\n\n\t\tthis.touch = new TouchInput(this.manager, this.handler);\n\t\tthis.mouse = new MouseInput(this.manager, this.handler);\n\t\tthis.primaryTouch = null;\n\t\tthis.lastTouches = [];\n\t}\n\n\t/**\n\t * @private\n\t * handle mouse and touch events\n\t * @param {Hammer} manager\n\t * @param {String} inputEvent\n\t * @param {Object} inputData\n\t */\n\thandler = (manager, inputEvent, inputData) => {\n\t\tconst isTouch = (inputData.pointerType === INPUT_TYPE_TOUCH);\n\t\tconst isMouse = (inputData.pointerType === INPUT_TYPE_MOUSE);\n\n\t\tif (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\t// when we're in a touch event, record touches to de-dupe synthetic mouse event\n\t\tif (isTouch) {\n\t\t\trecordTouches.call(this, inputEvent, inputData);\n\t\t} else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.callback(manager, inputEvent, inputData);\n\t}\n\n\t/**\n\t * @private\n\t * remove the event listeners\n\t */\n\tdestroy() {\n\t\tthis.touch.destroy();\n\t\tthis.mouse.destroy();\n\t}\n}\n","import { SUPPORT_POINTER_EVENTS,SUPPORT_ONLY_TOUCH,SUPPORT_TOUCH } from './input-consts';\nimport inputHandler from './input-handler';\nimport PointerEventInput from '../input/pointerevent';\nimport TouchInput from '../input/touch';\nimport MouseInput from '../input/mouse';\nimport TouchMouseInput from '../input/touchmouse';\n\n/**\n * @private\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nexport default function createInputInstance(manager) {\n let Type;\n // let inputClass = manager.options.inputClass;\n let { options:{ inputClass } } = manager;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n","import each from './each';\n/**\n * @private\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nexport default function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n","const STATE_POSSIBLE = 1;\nconst STATE_BEGAN = 2;\nconst STATE_CHANGED = 4;\nconst STATE_ENDED = 8;\nconst STATE_RECOGNIZED = STATE_ENDED;\nconst STATE_CANCELLED = 16;\nconst STATE_FAILED = 32;\n\nexport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED\n};\n","/**\n * @private\n * get a unique id\n * @returns {number} uniqueId\n */\nlet _uniqueId = 1;\nexport default function uniqueId() {\n return _uniqueId++;\n}\n","/**\n * @private\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nexport default function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n let { manager } = recognizer;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n","import {\n STATE_CANCELLED,\n STATE_ENDED,\n STATE_CHANGED,\n STATE_BEGAN\n} from './recognizer-consts';\n\n/**\n * @private\n * get a usable string, used as event postfix\n * @param {constant} state\n * @returns {String} state\n */\nexport default function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n","import {\n STATE_POSSIBLE,\n STATE_ENDED,\n STATE_FAILED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_BEGAN,\n STATE_CHANGED\n} from './recognizer-consts';\nimport assign from '../utils/assign';\nimport uniqueId from '../utils/unique-id';\nimport invokeArrayArg from '../utils/invoke-array-arg';\nimport inArray from '../utils/in-array';\nimport boolOrFn from '../utils/bool-or-fn';\nimport getRecognizerByNameIfManager from './get-recognizer-by-name-if-manager';\nimport stateStr from './state-str';\n\n/**\n * @private\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n\n/**\n * @private\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nexport default class Recognizer {\n constructor(options = {}) {\n this.options = {\n enable: true,\n ...options,\n };\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n\n /**\n * @private\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n }\n\n /**\n * @private\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n let { simultaneous } = this;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n }\n\n /**\n * @private\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n }\n\n /**\n * @private\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n let { requireFail } = this;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n }\n\n /**\n * @private\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n let index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n }\n\n /**\n * @private\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures() {\n return this.requireFail.length > 0;\n }\n\n /**\n * @private\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n }\n\n /**\n * @private\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit(input) {\n let self = this;\n let { state } = this;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n }\n\n /**\n * @private\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n }\n\n /**\n * @private\n * can we emit?\n * @returns {boolean}\n */\n canEmit() {\n let i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n }\n\n /**\n * @private\n * update the recognizer\n * @param {Object} inputData\n */\n recognize(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n let inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n }\n\n /**\n * @private\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {constant} STATE\n */\n\n /* jshint ignore:start */\n process(inputData) { }\n /* jshint ignore:end */\n\n /**\n * @private\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction() { }\n\n /**\n * @private\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset() { }\n}","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport { TOUCH_ACTION_MANIPULATION } from '../touchactionjs/touchaction-Consts';\nimport {INPUT_START,INPUT_END } from '../inputjs/input-consts';\nimport {\n STATE_RECOGNIZED,\n STATE_BEGAN,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport getDistance from '../inputjs/get-distance';\n\n/**\n * @private\n * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nexport default class TapRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10, // a multi-tap can be a bit off the initial position\n ...options,\n });\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n }\n\n process(input) {\n let { options } = this;\n\n let validPointers = input.pointers.length === options.pointers;\n let validMovement = input.distance < options.threshold;\n let validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType !== INPUT_END) {\n return this.failTimeout();\n }\n\n let validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n let validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n let tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeout(() => {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n }\n\n failTimeout() {\n this._timer = setTimeout(() => {\n this.state = STATE_FAILED;\n }, this.options.interval);\n return STATE_FAILED;\n }\n\n reset() {\n clearTimeout(this._timer);\n }\n\n emit() {\n if (this.state === STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n}\n","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport {\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_CANCELLED,\n STATE_ENDED,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport {\n INPUT_CANCEL,\n INPUT_END\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nexport default class AttrRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n pointers: 1,\n ...options,\n });\n }\n\n /**\n * @private\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest(input) {\n let optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n }\n\n /**\n * @private\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process(input) {\n let { state } = this;\n let { eventType } = input;\n\n let isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n let isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n}\n","import {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * direction cons to string\n * @param {constant} direction\n * @returns {String}\n */\nexport default function directionStr(direction) {\n if (direction === DIRECTION_DOWN) {\n return 'down';\n } else if (direction === DIRECTION_UP) {\n return 'up';\n } else if (direction === DIRECTION_LEFT) {\n return 'left';\n } else if (direction === DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n","import AttrRecognizer from './attribute';\nimport {\n DIRECTION_ALL,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_NONE,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_LEFT,\n DIRECTION_RIGHT\n} from '../inputjs/input-consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\nimport { TOUCH_ACTION_PAN_X,TOUCH_ACTION_PAN_Y } from '../touchactionjs/touchaction-Consts';\nimport directionStr from '../recognizerjs/direction-str';\n\n/**\n * @private\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class PanRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL,\n ...options,\n });\n this.pX = null;\n this.pY = null;\n }\n\n getTouchAction() {\n let { options:{ direction } } = this;\n let actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n }\n\n directionTest(input) {\n let { options } = this;\n let hasMoved = true;\n let { distance } = input;\n let { direction } = input;\n let x = input.deltaX;\n let y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x !== this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y !== this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n }\n\n attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && // replace with a super call\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n }\n\n emit(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n let direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n super.emit(input);\n }\n}\n","import AttrRecognizer from '../recognizers/attribute';\nimport { abs } from '../utils/utils-consts';\nimport { DIRECTION_HORIZONTAL,DIRECTION_VERTICAL } from '../inputjs/input-consts';\nimport PanRecognizer from './pan';\nimport { INPUT_END } from '../inputjs/input-consts';\nimport directionStr from '../recognizerjs/direction-str';\n\n/**\n * @private\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class SwipeRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1,\n ...options,\n });\n }\n\n getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n }\n\n attrTest(input) {\n let { direction } = this.options;\n let velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return super.attrTest(input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers === this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n }\n\n emit(input) {\n let direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n}\n","import AttrRecognizer from './attribute';\nimport { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\n\n/**\n * @private\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class PinchRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'pinch',\n threshold: 0,\n pointers: 2,\n ...options,\n });\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_NONE];\n }\n\n attrTest(input) {\n return super.attrTest(input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n }\n\n emit(input) {\n if (input.scale !== 1) {\n let inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n super.emit(input);\n }\n}\n","import AttrRecognizer from './attribute';\nimport { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\n\n/**\n * @private\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class RotateRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super( {\n event: 'rotate',\n threshold: 0,\n pointers: 2,\n ...options,\n });\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_NONE];\n }\n\n attrTest(input) {\n return super.attrTest(input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n}","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport {\n STATE_RECOGNIZED,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport { now } from '../utils/utils-consts';\nimport { TOUCH_ACTION_AUTO } from '../touchactionjs/touchaction-Consts';\nimport {\n INPUT_START,\n INPUT_END,\n INPUT_CANCEL\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nexport default class PressRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9, // a minimal movement is ok, but keep it low\n ...options,\n });\n this._timer = null;\n this._input = null;\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n }\n\n process(input) {\n let { options } = this;\n let validPointers = input.pointers.length === options.pointers;\n let validMovement = input.distance < options.threshold;\n let validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeout(() => {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n }\n\n reset() {\n clearTimeout(this._timer);\n }\n\n emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(`${this.options.event}up`, input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n}\n\n","import { TOUCH_ACTION_COMPUTE } from \"./touchactionjs/touchaction-Consts\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\nimport {DIRECTION_HORIZONTAL} from \"./inputjs/input-consts\";\n\nexport default {\n\t/**\n\t * @private\n\t * set if DOM events are being triggered.\n\t * But this is slower and unused by simple implementations, so disabled by default.\n\t * @type {Boolean}\n\t * @default false\n\t */\n\tdomEvents: false,\n\n\t/**\n\t * @private\n\t * The value for the touchAction property/fallback.\n\t * When set to `compute` it will magically set the correct value based on the added recognizers.\n\t * @type {String}\n\t * @default compute\n\t */\n\ttouchAction: TOUCH_ACTION_COMPUTE,\n\n\t/**\n\t * @private\n\t * @type {Boolean}\n\t * @default true\n\t */\n\tenable: true,\n\n\t/**\n\t * @private\n\t * EXPERIMENTAL FEATURE -- can be removed/changed\n\t * Change the parent input target element.\n\t * If Null, then it is being set the to main element.\n\t * @type {Null|EventTarget}\n\t * @default null\n\t */\n\tinputTarget: null,\n\n\t/**\n\t * @private\n\t * force an input class\n\t * @type {Null|Function}\n\t * @default null\n\t */\n\tinputClass: null,\n\n\t/**\n\t * @private\n\t * Some CSS properties can be used to improve the working of Hammer.\n\t * Add them to this method and they will be set when creating a new Manager.\n\t * @namespace\n\t */\n\tcssProps: {\n\t\t/**\n\t\t * @private\n\t\t * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tuserSelect: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Disable the Windows Phone grippers when pressing an element.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\ttouchSelect: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Disables the default callout shown when you touch and hold a touch target.\n\t\t * On iOS, when you touch and hold a touch target such as a link, Safari displays\n\t\t * a callout containing information about the link. This property allows you to disable that callout.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\ttouchCallout: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Specifies whether zooming is enabled. Used by IE10>\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tcontentZooming: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tuserDrag: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Overrides the highlight color shown when the user taps a link or a JavaScript\n\t\t * clickable element in iOS. This property obeys the alpha value, if specified.\n\t\t * @type {String}\n\t\t * @default 'rgba(0,0,0,0)'\n\t\t */\n\t\ttapHighlightColor: \"rgba(0,0,0,0)\",\n\t},\n};\n\n/**\n * @private\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * This is separated with other defaults because of tree-shaking.\n * @type {Array}\n */\nexport const preset = [\n [RotateRecognizer, { enable: false }],\n [PinchRecognizer, { enable: false }, ['rotate']],\n [SwipeRecognizer, { direction: DIRECTION_HORIZONTAL }],\n [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']],\n [PressRecognizer]\n];\n","import assign from \"./utils/assign\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport createInputInstance from \"./inputjs/create-input-instance\";\nimport each from \"./utils/each\";\nimport inArray from \"./utils/in-array\";\nimport invokeArrayArg from \"./utils/invoke-array-arg\";\nimport splitStr from \"./utils/split-str\";\nimport prefixed from \"./utils/prefixed\";\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport {\n STATE_BEGAN,\n STATE_ENDED,\n STATE_CHANGED,\n STATE_RECOGNIZED,\n} from \"./recognizerjs/recognizer-consts\";\nimport defaults from \"./defaults\";\n\nconst STOP = 1;\nconst FORCED_STOP = 2;\n\n\n/**\n * @private\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n const { element } = manager;\n\n if (!element.style) {\n return;\n }\n let prop;\n\n each(manager.options.cssProps, (value, name) => {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || \"\";\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * @private\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n const gestureEvent = document.createEvent(\"Event\");\n\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\n\n/**\n* @private\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nexport default class Manager {\n constructor(element, options) {\n this.options = assign({}, defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, item => {\n const recognizer = this.add(new (item[0])(item[1]));\n\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n\n\t/**\n\t * @private\n\t * set options\n\t * @param {Object} options\n\t * @returns {Manager}\n\t */\n set(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n }\n\n\t/**\n\t * @private\n\t * stop recognizing for this session.\n\t * This session will be discarded, when a new [input]start event is fired.\n\t * When forced, the recognizer cycle is stopped immediately.\n\t * @param {Boolean} [force]\n\t */\n stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n }\n\n\t/**\n\t * @private\n\t * run the recognizers!\n\t * called by the inputHandler function on every movement of the pointers (touches)\n\t * it walks through all the recognizers and tries to detect the gesture that is being made\n\t * @param {Object} inputData\n\t */\n recognize(inputData) {\n const { session } = this;\n\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n let recognizer;\n const { recognizers } = this;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n let { curRecognizer } = session;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n session.curRecognizer = null;\n curRecognizer = null;\n }\n\n let i = 0;\n\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (// 1\n !curRecognizer || recognizer === curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n session.curRecognizer = recognizer;\n curRecognizer = recognizer;\n }\n i++;\n }\n }\n\n\t/**\n\t * @private\n\t * get a recognizer by its event name.\n\t * @param {Recognizer|String} recognizer\n\t * @returns {Recognizer|Null}\n\t */\n get(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n const { recognizers } = this;\n\n for (let i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event === recognizer) {\n return recognizers[i];\n }\n }\n return null;\n }\n\n\t/**\n\t * @private add a recognizer to the manager\n\t * existing recognizers with the same event name will be removed\n\t * @param {Recognizer} recognizer\n\t * @returns {Recognizer|Manager}\n\t */\n add(recognizer) {\n if (invokeArrayArg(recognizer, \"add\", this)) {\n return this;\n }\n\n // remove existing\n const existing = this.get(recognizer.options.event);\n\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n }\n\n\t/**\n\t * @private\n\t * remove a recognizer by name or instance\n\t * @param {Recognizer|String} recognizer\n\t * @returns {Manager}\n\t */\n remove(recognizer) {\n if (invokeArrayArg(recognizer, \"remove\", this)) {\n return this;\n }\n\n const targetRecognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n const { recognizers } = this;\n const index = inArray(recognizers, targetRecognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n }\n\n\t/**\n\t * @private\n\t * bind event\n\t * @param {String} events\n\t * @param {Function} handler\n\t * @returns {EventEmitter} this\n\t */\n on(events, handler) {\n if (events === undefined || handler === undefined) {\n return this;\n }\n\n const { handlers } = this;\n\n each(splitStr(events), event => {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n }\n\n\t/**\n\t * @private unbind event, leave emit blank to remove all handlers\n\t * @param {String} events\n\t * @param {Function} [handler]\n\t * @returns {EventEmitter} this\n\t */\n off(events, handler) {\n if (events === undefined) {\n return this;\n }\n\n const { handlers } = this;\n\n each(splitStr(events), event => {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n }\n\n\t/**\n\t * @private emit event to the listeners\n\t * @param {String} event\n\t * @param {Object} data\n\t */\n emit(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n const handlers = this.handlers[event] && this.handlers[event].slice();\n\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n\n let i = 0;\n\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n }\n\n\t/**\n\t * @private\n\t * destroy the manager and unbinds all events\n\t * it doesn't unbind dom events, that is the user own responsibility\n\t */\n destroy() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_TYPE_TOUCH\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\nimport toArray from '../utils/to-array';\nimport uniqueArray from '../utils/unique-array';\n\nconst SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nconst SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nconst SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * @private\n * Touch events input\n * @constructor\n * @extends Input\n */\nexport default class SingleTouchInput extends Input {\n constructor() {\n var proto = SingleTouchInput.prototype;\n proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n\n super(...arguments);\n this.started = false;\n }\n\n handler(ev) {\n let type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n let touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n}\n\n/**\n * @private\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n let all = toArray(ev.touches);\n let changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n","/**\n * @private\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nexport default function deprecate(method, name, message) {\n let deprecationMessage = `DEPRECATED METHOD: ${name}\\n${message} AT \\n`;\n return function() {\n let e = new Error('get-stack-trace');\n let stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n let log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n","import deprecate from './deprecate';\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nconst extend = deprecate((dest, src, merge) => {\n let keys = Object.keys(src);\n let i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\nexport default extend;\n","import deprecate from './deprecate';\nimport extend from './extend';\n/**\n * @private\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nconst merge = deprecate((dest, src) => {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\nexport default merge;\n","import assign from './assign';\n/**\n * @private\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nexport default function inherit(child, base, properties) {\n let baseP = base.prototype;\n let childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n","/**\n * @private\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nexport default function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n","import Manager from \"./manager\";\nimport defaults, { preset } from \"./defaults\";\nimport assign from './utils/assign';\nimport {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n} from \"./inputjs/input-consts\";\nimport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED,\n} from \"./recognizerjs/recognizer-consts\";\n\nimport Input from \"./inputjs/input-constructor\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport TouchInput from \"./input/touch\";\nimport MouseInput from \"./input/mouse\";\nimport PointerEventInput from \"./input/pointerevent\";\nimport SingleTouchInput from \"./input/singletouch\";\nimport TouchMouseInput from \"./input/touchmouse\";\n\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport AttrRecognizer from \"./recognizers/attribute\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\n\nimport addEventListeners from \"./utils/add-event-listeners\";\nimport removeEventListeners from \"./utils/remove-event-listeners\";\nimport each from \"./utils/each\";\nimport merge from \"./utils/merge\";\nimport extend from \"./utils/extend\";\nimport inherit from \"./utils/inherit\";\nimport bindFn from \"./utils/bind-fn\";\nimport prefixed from \"./utils/prefixed\";\nimport toArray from \"./utils/to-array\";\nimport uniqueArray from \"./utils/unique-array\";\nimport splitStr from \"./utils/split-str\";\nimport inArray from \"./utils/in-array\";\nimport boolOrFn from \"./utils/bool-or-fn\";\nimport hasParent from \"./utils/has-parent\";\n/**\n * @private\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nexport default class Hammer {\n\t/**\n * @private\n * @const {string}\n */\n\tstatic VERSION = \"#__VERSION__#\";\n\tstatic DIRECTION_ALL = DIRECTION_ALL;\n\tstatic DIRECTION_DOWN = DIRECTION_DOWN;\n\tstatic DIRECTION_LEFT = DIRECTION_LEFT;\n\tstatic DIRECTION_RIGHT = DIRECTION_RIGHT;\n\tstatic DIRECTION_UP = DIRECTION_UP;\n\tstatic DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n\tstatic DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n\tstatic DIRECTION_NONE = DIRECTION_NONE;\n\tstatic DIRECTION_DOWN = DIRECTION_DOWN;\n\tstatic INPUT_START = INPUT_START;\n\tstatic INPUT_MOVE = INPUT_MOVE;\n static INPUT_END = INPUT_END;\n\tstatic INPUT_CANCEL = INPUT_CANCEL;\n\tstatic STATE_POSSIBLE = STATE_POSSIBLE;\n\tstatic STATE_BEGAN = STATE_BEGAN;\n\tstatic STATE_CHANGED = STATE_CHANGED;\n\tstatic STATE_ENDED = STATE_ENDED;\n\tstatic STATE_RECOGNIZED = STATE_RECOGNIZED;\n\tstatic STATE_CANCELLED = STATE_CANCELLED;\n\tstatic STATE_FAILED = STATE_FAILED;\n\tstatic Manager = Manager;\n\tstatic Input = Input;\n\tstatic TouchAction = TouchAction;\n\tstatic TouchInput = TouchInput;\n\tstatic MouseInput = MouseInput;\n\tstatic PointerEventInput = PointerEventInput;\n\tstatic TouchMouseInput = TouchMouseInput;\n\tstatic SingleTouchInput = SingleTouchInput;\n\tstatic Recognizer = Recognizer;\n\tstatic AttrRecognizer = AttrRecognizer;\n\tstatic Tap = TapRecognizer;\n\tstatic Pan = PanRecognizer;\n\tstatic Swipe = SwipeRecognizer;\n\tstatic Pinch = PinchRecognizer;\n\tstatic Rotate = RotateRecognizer;\n\tstatic Press = PressRecognizer;\n\tstatic on = addEventListeners;\n\tstatic off = removeEventListeners;\n\tstatic each = each;\n\tstatic merge = merge;\n\tstatic extend = extend;\n\tstatic bindFn = bindFn;\n\tstatic assign = assign;\n\tstatic inherit = inherit;\n\tstatic bindFn = bindFn;\n\tstatic prefixed = prefixed;\n\tstatic toArray = toArray;\n\tstatic inArray = inArray;\n\tstatic uniqueArray = uniqueArray;\n\tstatic splitStr = splitStr;\n\tstatic boolOrFn = boolOrFn;\n\tstatic hasParent = hasParent;\n\tstatic addEventListeners = addEventListeners;\n\tstatic removeEventListeners = removeEventListeners;\n\tstatic defaults = assign({}, defaults, { preset });\n\tconstructor(element, options = {}) {\n\t\treturn new Manager(element, {\n\t\t\trecognizers: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n ...preset\n\t\t\t],\n\t\t\t...options,\n\t\t});\n\t}\n}\n"],"names":["assign","Object","target","undefined","TypeError","output","index","arguments","length","source","nextKey","hasOwnProperty","VENDOR_PREFIXES","TEST_ELEMENT","document","style","createElement","TYPE_FUNCTION","round","Math","abs","now","Date","prefixed","obj","property","prefix","prop","camelProp","toUpperCase","slice","i","win","window","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","getTouchActionProps","touchMap","cssSupports","CSS","supports","forEach","val","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","test","navigator","userAgent","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","each","iterator","context","call","boolOrFn","args","apply","inStr","str","find","indexOf","cleanTouchActions","actions","hasPanX","hasPanY","TouchAction","manager","value","set","compute","element","toLowerCase","trim","update","options","touchAction","recognizers","recognizer","enable","concat","getTouchAction","join","preventDefaults","input","srcEvent","direction","offsetDirection","session","prevented","preventDefault","hasNone","isTapPointer","pointers","isTapMovement","distance","isTapTouchTime","deltaTime","preventSrc","hasParent","node","parent","parentNode","getCenter","pointersLength","x","clientX","y","clientY","simpleCloneInputData","timeStamp","center","deltaX","deltaY","getDistance","p1","p2","props","sqrt","getAngle","atan2","PI","getDirection","computeDeltaXY","offset","offsetDelta","prevDelta","prevInput","eventType","getVelocity","getScale","start","end","getRotation","computeIntervalInputData","last","lastInterval","velocity","velocityX","velocityY","v","computeInputData","firstInput","firstMultiple","offsetCenter","angle","overallVelocity","overallVelocityX","overallVelocityY","scale","rotation","maxPointers","srcEventTarget","composedPath","path","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","emit","recognize","splitStr","split","addEventListeners","types","handler","type","addEventListener","removeEventListeners","removeEventListener","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","callback","self","inputTarget","domHandler","ev","init","evEl","evTarget","evWin","destroy","inArray","src","findByKey","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","PointerEventInput","proto","prototype","store","pointerEvents","removePointer","eventTypeNormalized","replace","pointerType","isTouch","storeIndex","pointerId","button","push","splice","toArray","Array","uniqueArray","key","sort","results","values","a","b","TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_TARGET_EVENTS","TouchInput","targetIds","touches","getTouches","allTouches","identifier","targetTouches","changedTouches","changedTargetTouches","filter","touch","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","which","DEDUP_TIMEOUT","DEDUP_DISTANCE","setLastTouch","eventData","primaryTouch","lastTouch","lts","lastTouches","removeLastTouch","setTimeout","recordTouches","isSyntheticEvent","t","dx","dy","TouchMouseInput","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","mouse","createInputInstance","Type","inputClass","invokeArrayArg","arg","fn","isArray","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","_uniqueId","uniqueId","getRecognizerByNameIfManager","otherRecognizer","get","stateStr","state","Recognizer","id","simultaneous","requireFail","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","TapRecognizer","taps","interval","time","threshold","posThreshold","pTime","pCenter","_timer","_input","count","validPointers","validMovement","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","clearTimeout","AttrRecognizer","attrTest","optionPointers","isRecognized","isValid","directionStr","PanRecognizer","pX","pY","directionTest","hasMoved","SwipeRecognizer","PinchRecognizer","inOut","RotateRecognizer","PressRecognizer","validTime","domEvents","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","preset","STOP","FORCED_STOP","toggleCssProps","add","name","oldCssProps","triggerDomEvent","data","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","Manager","defaults","handlers","item","stop","force","stopped","curRecognizer","existing","remove","targetRecognizer","on","events","off","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","all","changed","deprecate","method","message","deprecationMessage","e","Error","stack","log","console","warn","extend","dest","merge","keys","inherit","child","base","properties","baseP","childP","create","constructor","_super","bindFn","boundFn","Hammer","VERSION","Tap","Pan","Swipe","Pinch","Rotate","Press"],"mappings":"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"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.min.js b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.min.js new file mode 100644 index 00000000..72b04d72 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/dist/hammer.min.js @@ -0,0 +1,8 @@ +/*! Hammer.JS - v2.0.17-rc - 2019-12-16 + * http://naver.github.io/egjs + * + * Forked By Naver egjs + * Copyright (c) hammerjs + * Licensed under the MIT license */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Hammer=e()}(this,function(){"use strict";function r(){return(r=Object.assign||function(t){for(var e=1;e=A(e)?t<0?R:M:e<0?N:z}function J(t,e,n){return{x:e/t||0,y:n/t||0}}function K(t,e){var n=t.session,i=e.pointers,r=i.length;n.firstInput||(n.firstInput=G(e)),1A(T.y)?T.x:T.y,e.scale=p?(d=p.pointers,Z((m=i)[0],m[1],q)/Z(d[0],d[1],q)):1,e.rotation=p?(g=p.pointers,B((y=i)[1],y[0],q)+B(g[1],g[0],q)):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,r,o,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(e.eventType!==O&&(SA(h.y)?h.x:h.y,o=$(u,c),t.lastInterval=e}else n=s.velocity,i=s.velocityX,r=s.velocityY,o=s.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=o}(n,e);var E,I=t.element,w=e.srcEvent;U(E=w.composedPath?w.composedPath()[0]:w.path?w.path[0]:w.target,I)&&(I=E),e.target=I}function Q(t,e,n){var i=n.pointers.length,r=n.changedPointers.length,o=e&_&&i-r==0,s=e&(D|O)&&i-r==0;n.isFirst=!!o,n.isFinal=!!s,o&&(t.session={}),n.eventType=e,K(t,n),t.emit("hammer.input",n),t.recognize(n),t.session.prevInput=n}function tt(t){return t.trim().split(/\s+/g)}function et(e,t,n){L(tt(t),function(t){e.addEventListener(t,n,!1)})}function nt(e,t,n){L(tt(t),function(t){e.removeEventListener(t,n,!1)})}function it(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||window}var e=function(){function t(e,t){var n=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){k(e.options.enable,[e])&&n.handler(t)},this.init()}var e=t.prototype;return e.handler=function(){},e.init=function(){this.evEl&&et(this.element,this.evEl,this.domHandler),this.evTarget&&et(this.target,this.evTarget,this.domHandler),this.evWin&&et(it(this.element),this.evWin,this.domHandler)},e.destroy=function(){this.evEl&&nt(this.element,this.evEl,this.domHandler),this.evTarget&&nt(this.target,this.evTarget,this.domHandler),this.evWin&&nt(it(this.element),this.evWin,this.domHandler)},t}();function rt(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;ie[n]}):i.sort()),i}var pt={touchstart:_,touchmove:2,touchend:D,touchcancel:O},ft=function(e){function n(){var t;return n.prototype.evTarget="touchstart touchmove touchend touchcancel",(t=e.apply(this,arguments)||this).targetIds={},t}return o(n,e),n.prototype.handler=function(t){var e=pt[t.type],n=function(t,e){var n,i,r=ht(t.touches),o=this.targetIds;if(e&(2|_)&&1===r.length)return o[r[0].identifier]=!0,[r,r];var s=ht(t.changedTouches),a=[],u=this.target;if(i=r.filter(function(t){return U(t.target,u)}),e===_)for(n=0;ne.threshold&&r&e.direction},e.attrTest=function(t){return Ct.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},e.emit=function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=St(t.direction);e&&(t.additionalEvent=this.options.event+e),n.prototype.emit.call(this,t)},t}(Ct),Dt=function(i){function t(t){return void 0===t&&(t={}),i.call(this,r({event:"swipe",threshold:10,velocity:.3,direction:X|Y,pointers:1},t))||this}o(t,i);var e=t.prototype;return e.getTouchAction=function(){return _t.prototype.getTouchAction.call(this)},e.attrTest=function(t){var e,n=this.options.direction;return n&(X|Y)?e=t.overallVelocity:n&X?e=t.overallVelocityX:n&Y&&(e=t.overallVelocityY),i.prototype.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers===this.options.pointers&&A(e)>this.options.velocity&&t.eventType&D},e.emit=function(t){var e=St(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)},t}(Ct),Ot=function(n){function t(t){return void 0===t&&(t={}),n.call(this,r({event:"pinch",threshold:0,pointers:2},t))||this}o(t,n);var e=t.prototype;return e.getTouchAction=function(){return[m]},e.attrTest=function(t){return n.prototype.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},e.emit=function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}n.prototype.emit.call(this,t)},t}(Ct),xt=function(e){function t(t){return void 0===t&&(t={}),e.call(this,r({event:"rotate",threshold:0,pointers:2},t))||this}o(t,e);var n=t.prototype;return n.getTouchAction=function(){return[m]},n.attrTest=function(t){return e.prototype.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)},t}(Ct),Rt=function(n){function t(t){var e;return void 0===t&&(t={}),(e=n.call(this,r({event:"press",pointers:1,time:251,threshold:9},t))||this)._timer=null,e._input=null,e}o(t,n);var e=t.prototype;return e.getTouchAction=function(){return[v]},e.process=function(t){var e=this,n=this.options,i=t.pointers.length===n.pointers,r=t.distancen.time;if(this._input=t,!r||!i||t.eventType&(D|O)&&!o)this.reset();else if(t.eventType&_)this.reset(),this._timer=setTimeout(function(){e.state=8,e.tryEmit()},n.time);else if(t.eventType&D)return 8;return 32},e.reset=function(){clearTimeout(this._timer)},e.emit=function(t){8===this.state&&(t&&t.eventType&D?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=b(),this.manager.emit(this.options.event,this._input)))},t}(bt),Mt={domEvents:!1,touchAction:f,enable:!0,inputTarget:null,inputClass:null,cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Nt=[[xt,{enable:!1}],[Ot,{enable:!1},["rotate"]],[Dt,{direction:X}],[_t,{direction:X},["swipe"]],[Pt],[Pt,{event:"doubletap",taps:2},["tap"]],[Rt]];function zt(n,i){var r,o=n.element;o.style&&(L(n.options.cssProps,function(t,e){r=h(o.style,e),o.style[r]=i?(n.oldCssProps[r]=o.style[r],t):n.oldCssProps[r]||""}),i||(n.oldCssProps={}))}var Xt=function(){function t(t,e){var n,i=this;this.options=a({},Mt,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((n=this).options.inputClass||(I?ct:w?ft:E?Tt:dt))(n,Q),this.touchAction=new j(this,this.options.touchAction),zt(this,!0),L(this.options.recognizers,function(t){var e=i.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}var e=t.prototype;return e.set=function(t){return a(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},e.stop=function(t){this.session.stopped=t?2:1},e.recognize=function(t){var e=this.session;if(!e.stopped){var n;this.touchAction.preventDefaults(t);var i=this.recognizers,r=e.curRecognizer;(!r||r&&8&r.state)&&(r=e.curRecognizer=null);for(var o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",n=window.console&&(window.console.warn||window.console.log);return n&&n.call(window.console,r,e),i.apply(this,arguments)}}var qt=Wt(function(t,e,n){for(var i=Object.keys(e),r=0;r {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n return touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n","import getTouchActionProps from './get-touchaction-props';\n\n\n\n// magical touchAction value\nconst TOUCH_ACTION_COMPUTE = 'compute';\nconst TOUCH_ACTION_AUTO = 'auto';\nconst TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nconst TOUCH_ACTION_NONE = 'none';\nconst TOUCH_ACTION_PAN_X = 'pan-x';\nconst TOUCH_ACTION_PAN_Y = 'pan-y';\nconst TOUCH_ACTION_MAP = getTouchActionProps();\n\nexport {\n TOUCH_ACTION_AUTO,\n TOUCH_ACTION_COMPUTE,\n TOUCH_ACTION_MANIPULATION,\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y,\n TOUCH_ACTION_MAP\n};\n","import prefixed from '../utils/prefixed';\nimport {window} from \"../browser\";\n\nconst MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nconst SUPPORT_TOUCH = ('ontouchstart' in window);\nconst SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nconst SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nconst INPUT_TYPE_TOUCH = 'touch';\nconst INPUT_TYPE_PEN = 'pen';\nconst INPUT_TYPE_MOUSE = 'mouse';\nconst INPUT_TYPE_KINECT = 'kinect';\n\nconst COMPUTE_INTERVAL = 25;\n\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst INPUT_CANCEL = 8;\n\nconst DIRECTION_NONE = 1;\nconst DIRECTION_LEFT = 2;\nconst DIRECTION_RIGHT = 4;\nconst DIRECTION_UP = 8;\nconst DIRECTION_DOWN = 16;\n\nconst DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nconst DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nconst DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nconst PROPS_XY = ['x', 'y'];\nconst PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\nexport {\n MOBILE_REGEX,\n SUPPORT_ONLY_TOUCH,\n SUPPORT_POINTER_EVENTS,\n SUPPORT_TOUCH,\n INPUT_TYPE_KINECT,\n INPUT_TYPE_MOUSE,\n INPUT_TYPE_PEN,\n INPUT_TYPE_TOUCH,\n COMPUTE_INTERVAL,\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n PROPS_XY,\n PROPS_CLIENT_XY\n};\n","/**\n * @private\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nexport default function each(obj, iterator, context) {\n let i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n","import { TYPE_FUNCTION } from './utils-consts';\n/**\n * @private\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nexport default function boolOrFn(val, args) {\n if (typeof val === TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n","/**\n * @private\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nexport default function inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n","import {\n TOUCH_ACTION_COMPUTE,\n TOUCH_ACTION_MAP,\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y\n} from './touchaction-Consts';\nimport {\n NATIVE_TOUCH_ACTION,\n PREFIXED_TOUCH_ACTION,\n} from \"./get-touchaction-props\";\nimport {\n DIRECTION_VERTICAL,\n DIRECTION_HORIZONTAL\n} from '../inputjs/input-consts';\nimport each from '../utils/each';\nimport boolOrFn from '../utils/bool-or-fn';\nimport inStr from '../utils/in-str';\nimport cleanTouchActions from './clean-touch-actions';\n\n/**\n * @private\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nexport default class TouchAction {\n constructor(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n\n /**\n * @private\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set(value) {\n // find out the touch-action by the event handlers\n if (value === TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n }\n\n /**\n * @private\n * just re-set the touchAction value\n */\n update() {\n this.set(this.manager.options.touchAction);\n }\n\n /**\n * @private\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute() {\n let actions = [];\n each(this.manager.recognizers, (recognizer) => {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n }\n\n /**\n * @private\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults(input) {\n let { srcEvent } = input;\n let direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n let { actions } = this;\n let hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n // do not prevent defaults if this is a tap gesture\n let isTapPointer = input.pointers.length === 1;\n let isTapMovement = input.distance < 2;\n let isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n }\n\n /**\n * @private\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n}\n","import inStr from '../utils/in-str';\nimport {\n TOUCH_ACTION_NONE,\n TOUCH_ACTION_PAN_X,\n TOUCH_ACTION_PAN_Y,\n TOUCH_ACTION_MANIPULATION,\n TOUCH_ACTION_AUTO\n} from './touchaction-Consts';\n\n/**\n * @private\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nexport default function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n","/**\n * @private\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nexport default function hasParent(node, parent) {\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","import { round } from '../utils/utils-consts';\n\n/**\n * @private\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nexport default function getCenter(pointers) {\n let pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n","import { now,round } from '../utils/utils-consts';\nimport getCenter from './get-center';\n\n/**\n * @private\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nexport default function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n let pointers = [];\n let i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n","import { PROPS_XY } from './input-consts';\n\n/**\n * @private\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nexport default function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n let x = p2[props[0]] - p1[props[0]];\n let y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n","import { PROPS_XY } from './input-consts';\n\n/**\n * @private\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nexport default function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n let x = p2[props[0]] - p1[props[0]];\n let y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n","import { abs } from '../utils/utils-consts';\nimport { DIRECTION_NONE,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP,DIRECTION_DOWN } from './input-consts';\n\n/**\n * @private\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nexport default function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n","/**\n * @private\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nexport default function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n","import { now } from '../utils/utils-consts';\nimport { abs } from '../utils/utils-consts';\nimport hasParent from '../utils/has-parent';\nimport simpleCloneInputData from './simple-clone-input-data';\nimport getCenter from './get-center';\nimport getDistance from './get-distance';\nimport getAngle from './get-angle';\nimport getDirection from './get-direction';\nimport computeDeltaXY from './compute-delta-xy';\nimport getVelocity from './get-velocity';\nimport getScale from './get-scale';\nimport getRotation from './get-rotation';\nimport computeIntervalInputData from './compute-interval-input-data';\n\n/**\n* @private\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nexport default function computeInputData(manager, input) {\n let { session } = manager;\n let { pointers } = input;\n let { length:pointersLength } = pointers;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n let { firstInput, firstMultiple } = session;\n let offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n let center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n let overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n let target = manager.element;\n const srcEvent = input.srcEvent;\n let srcEventTarget;\n\n if (srcEvent.composedPath) {\n srcEventTarget = srcEvent.composedPath()[0];\n } else if (srcEvent.path) {\n srcEventTarget = srcEvent.path[0];\n } else {\n srcEventTarget = srcEvent.target;\n }\n\n if (hasParent(srcEventTarget, target)) {\n target = srcEventTarget;\n }\n input.target = target;\n}\n","import { INPUT_START, INPUT_END } from './input-consts';\n\nexport default function computeDeltaXY(session, input) {\n let { center } = input;\n // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session;\n // jscs throwing error on defalut destructured values and without defaults tests fail\n let offset = session.offsetDelta || {};\n let prevDelta = session.prevDelta || {};\n let prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n","import { PROPS_CLIENT_XY } from './input-consts';\nimport getDistance from './get-distance';\n/**\n * @private\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nexport default function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n","import getAngle from './get-angle';\nimport { PROPS_CLIENT_XY } from './input-consts';\n\n/**\n * @private\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nexport default function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n","import { INPUT_CANCEL,COMPUTE_INTERVAL } from './input-consts';\nimport { abs } from '../utils/utils-consts';\nimport getVelocity from './get-velocity';\nimport getDirection from './get-direction';\n\n/**\n * @private\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nexport default function computeIntervalInputData(session, input) {\n let last = session.lastInterval || input;\n let deltaTime = input.timeStamp - last.timeStamp;\n let velocity;\n let velocityX;\n let velocityY;\n let direction;\n\n if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n let deltaX = input.deltaX - last.deltaX;\n let deltaY = input.deltaY - last.deltaY;\n\n let v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n","import { INPUT_START,INPUT_END,INPUT_CANCEL } from './input-consts';\nimport computeInputData from './compute-input-data';\n\n/**\n * @private\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nexport default function inputHandler(manager, eventType, input) {\n let pointersLen = input.pointers.length;\n let changedPointersLen = input.changedPointers.length;\n let isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n let isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n","/**\n * @private\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n\nexport default function splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n","import each from './each';\nimport splitStr from './split-str';\n/**\n * @private\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nexport default function addEventListeners(target, types, handler) {\n each(splitStr(types), (type) => {\n target.addEventListener(type, handler, false);\n });\n}\n","import each from './each';\nimport splitStr from './split-str';\n/**\n * @private\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nexport default function removeEventListeners(target, types, handler) {\n each(splitStr(types), (type) => {\n target.removeEventListener(type, handler, false);\n });\n}\n","/**\n * @private\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nexport default function getWindowForElement(element) {\n let doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n","import boolOrFn from '../utils/bool-or-fn';\nimport addEventListeners from '../utils/add-event-listeners';\nimport removeEventListeners from '../utils/remove-event-listeners';\nimport getWindowForElement from '../utils/get-window-for-element';\n\n/**\n * @private\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nexport default class Input {\n constructor(manager, callback) {\n let self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n }\n /**\n * @private\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler() { }\n\n /**\n * @private\n * bind the events\n */\n init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n\n /**\n * @private\n * unbind the events\n */\n destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n}\n","/**\n * @private\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nexport default function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n let i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {// do not use === here, test fails\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n","import {\n INPUT_START,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_MOVE,\n INPUT_TYPE_TOUCH,\n INPUT_TYPE_MOUSE,\n INPUT_TYPE_PEN,\n INPUT_TYPE_KINECT\n} from '../inputjs/input-consts';\nimport {window} from \"../browser\";\nimport Input from '../inputjs/input-constructor';\nimport inArray from '../utils/in-array';\n\nconst POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nconst IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nlet POINTER_ELEMENT_EVENTS = 'pointerdown';\nlet POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * @private\n * Pointer events input\n * @constructor\n * @extends Input\n */\nexport default class PointerEventInput extends Input {\n constructor() {\n var proto = PointerEventInput.prototype;\n\n proto.evEl = POINTER_ELEMENT_EVENTS;\n proto.evWin = POINTER_WINDOW_EVENTS;\n super(...arguments);\n this.store = (this.manager.session.pointerEvents = []);\n }\n\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n handler(ev) {\n let { store } = this;\n let removePointer = false;\n\n let eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n let eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n let pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n let isTouch = (pointerType === INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n let storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n}\n","/**\n * @private\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nexport default function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n","import inArray from './in-array';\n\n/**\n * @private\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nexport default function uniqueArray(src, key, sort) {\n let results = [];\n let values = [];\n let i = 0;\n\n while (i < src.length) {\n let val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort((a, b) => {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_TYPE_TOUCH\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\nimport toArray from '../utils/to-array';\nimport hasParent from '../utils/has-parent';\nimport uniqueArray from '../utils/unique-array';\n\nconst TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nconst TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * @private\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nexport default class TouchInput extends Input {\n constructor() {\n TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS;\n super(...arguments);\n this.targetIds = {};\n // this.evTarget = TOUCH_TARGET_EVENTS;\n }\n handler(ev) {\n let type = TOUCH_INPUT_MAP[ev.type];\n let touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n}\n\n/**\n * @private\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n let allTouches = toArray(ev.touches);\n let { targetIds } = this;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n let i;\n let targetTouches;\n let changedTouches = toArray(ev.changedTouches);\n let changedTargetTouches = [];\n let { target } = this;\n\n // get target touches from touches\n targetTouches = allTouches.filter((touch) => {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_TYPE_MOUSE\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\n\nconst MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nconst MOUSE_ELEMENT_EVENTS = 'mousedown';\nconst MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * @private\n * Mouse events input\n * @constructor\n * @extends Input\n */\nexport default class MouseInput extends Input {\n constructor() {\n var proto = MouseInput.prototype;\n proto.evEl = MOUSE_ELEMENT_EVENTS;\n proto.evWin = MOUSE_WINDOW_EVENTS;\n\n super(...arguments);\n this.pressed = false; // mousedown state\n }\n\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n handler(ev) {\n let eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n}\n","import Input from \"../inputjs/input-constructor\";\nimport TouchInput from \"./touch\";\nimport MouseInput from \"./mouse\";\nimport {\n\tINPUT_START,\n\tINPUT_END,\n\tINPUT_CANCEL,\n\tINPUT_TYPE_TOUCH,\n\tINPUT_TYPE_MOUSE,\n} from \"../inputjs/input-consts\";\n\n/**\n * @private\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nconst DEDUP_TIMEOUT = 2500;\nconst DEDUP_DISTANCE = 25;\n\nfunction setLastTouch(eventData) {\n\tconst { changedPointers: [touch] } = eventData;\n\n\tif (touch.identifier === this.primaryTouch) {\n\t\tconst lastTouch = { x: touch.clientX, y: touch.clientY };\n\t\tconst lts = this.lastTouches;\n\n\t\tthis.lastTouches.push(lastTouch);\n\n\n\t\tconst removeLastTouch = function() {\n\t\t\tconst i = lts.indexOf(lastTouch);\n\n\t\t\tif (i > -1) {\n\t\t\t\tlts.splice(i, 1);\n\t\t\t}\n\t\t};\n\n\t\tsetTimeout(removeLastTouch, DEDUP_TIMEOUT);\n\t}\n}\n\n\nfunction recordTouches(eventType, eventData) {\n\tif (eventType & INPUT_START) {\n\t\tthis.primaryTouch = eventData.changedPointers[0].identifier;\n\t\tsetLastTouch.call(this, eventData);\n\t} else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n\t\tsetLastTouch.call(this, eventData);\n\t}\n}\nfunction isSyntheticEvent(eventData) {\n\tconst x = eventData.srcEvent.clientX;\n\tconst y = eventData.srcEvent.clientY;\n\n\tfor (let i = 0; i < this.lastTouches.length; i++) {\n\t\tconst t = this.lastTouches[i];\n\t\tconst dx = Math.abs(x - t.x);\n\t\tconst dy = Math.abs(y - t.y);\n\n\t\tif (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\nexport default class TouchMouseInput extends Input {\n\tconstructor(manager, callback) {\n\t\tsuper(manager, callback);\n\n\t\tthis.touch = new TouchInput(this.manager, this.handler);\n\t\tthis.mouse = new MouseInput(this.manager, this.handler);\n\t\tthis.primaryTouch = null;\n\t\tthis.lastTouches = [];\n\t}\n\n\t/**\n\t * @private\n\t * handle mouse and touch events\n\t * @param {Hammer} manager\n\t * @param {String} inputEvent\n\t * @param {Object} inputData\n\t */\n\thandler = (manager, inputEvent, inputData) => {\n\t\tconst isTouch = (inputData.pointerType === INPUT_TYPE_TOUCH);\n\t\tconst isMouse = (inputData.pointerType === INPUT_TYPE_MOUSE);\n\n\t\tif (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\t// when we're in a touch event, record touches to de-dupe synthetic mouse event\n\t\tif (isTouch) {\n\t\t\trecordTouches.call(this, inputEvent, inputData);\n\t\t} else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.callback(manager, inputEvent, inputData);\n\t}\n\n\t/**\n\t * @private\n\t * remove the event listeners\n\t */\n\tdestroy() {\n\t\tthis.touch.destroy();\n\t\tthis.mouse.destroy();\n\t}\n}\n","import each from './each';\n/**\n * @private\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nexport default function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n","const STATE_POSSIBLE = 1;\nconst STATE_BEGAN = 2;\nconst STATE_CHANGED = 4;\nconst STATE_ENDED = 8;\nconst STATE_RECOGNIZED = STATE_ENDED;\nconst STATE_CANCELLED = 16;\nconst STATE_FAILED = 32;\n\nexport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED\n};\n","/**\n * @private\n * get a unique id\n * @returns {number} uniqueId\n */\nlet _uniqueId = 1;\nexport default function uniqueId() {\n return _uniqueId++;\n}\n","/**\n * @private\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nexport default function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n let { manager } = recognizer;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n","import {\n STATE_CANCELLED,\n STATE_ENDED,\n STATE_CHANGED,\n STATE_BEGAN\n} from './recognizer-consts';\n\n/**\n * @private\n * get a usable string, used as event postfix\n * @param {constant} state\n * @returns {String} state\n */\nexport default function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n","import {\n STATE_POSSIBLE,\n STATE_ENDED,\n STATE_FAILED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_BEGAN,\n STATE_CHANGED\n} from './recognizer-consts';\nimport assign from '../utils/assign';\nimport uniqueId from '../utils/unique-id';\nimport invokeArrayArg from '../utils/invoke-array-arg';\nimport inArray from '../utils/in-array';\nimport boolOrFn from '../utils/bool-or-fn';\nimport getRecognizerByNameIfManager from './get-recognizer-by-name-if-manager';\nimport stateStr from './state-str';\n\n/**\n * @private\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n\n/**\n * @private\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nexport default class Recognizer {\n constructor(options = {}) {\n this.options = {\n enable: true,\n ...options,\n };\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n\n /**\n * @private\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n }\n\n /**\n * @private\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n let { simultaneous } = this;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n }\n\n /**\n * @private\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n }\n\n /**\n * @private\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n let { requireFail } = this;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n }\n\n /**\n * @private\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n let index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n }\n\n /**\n * @private\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures() {\n return this.requireFail.length > 0;\n }\n\n /**\n * @private\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n }\n\n /**\n * @private\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit(input) {\n let self = this;\n let { state } = this;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n }\n\n /**\n * @private\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n }\n\n /**\n * @private\n * can we emit?\n * @returns {boolean}\n */\n canEmit() {\n let i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n }\n\n /**\n * @private\n * update the recognizer\n * @param {Object} inputData\n */\n recognize(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n let inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n }\n\n /**\n * @private\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {constant} STATE\n */\n\n /* jshint ignore:start */\n process(inputData) { }\n /* jshint ignore:end */\n\n /**\n * @private\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction() { }\n\n /**\n * @private\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset() { }\n}","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport { TOUCH_ACTION_MANIPULATION } from '../touchactionjs/touchaction-Consts';\nimport {INPUT_START,INPUT_END } from '../inputjs/input-consts';\nimport {\n STATE_RECOGNIZED,\n STATE_BEGAN,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport getDistance from '../inputjs/get-distance';\n\n/**\n * @private\n * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nexport default class TapRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10, // a multi-tap can be a bit off the initial position\n ...options,\n });\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n }\n\n process(input) {\n let { options } = this;\n\n let validPointers = input.pointers.length === options.pointers;\n let validMovement = input.distance < options.threshold;\n let validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType !== INPUT_END) {\n return this.failTimeout();\n }\n\n let validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n let validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n let tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeout(() => {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n }\n\n failTimeout() {\n this._timer = setTimeout(() => {\n this.state = STATE_FAILED;\n }, this.options.interval);\n return STATE_FAILED;\n }\n\n reset() {\n clearTimeout(this._timer);\n }\n\n emit() {\n if (this.state === STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n}\n","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport {\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_CANCELLED,\n STATE_ENDED,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport {\n INPUT_CANCEL,\n INPUT_END\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nexport default class AttrRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n pointers: 1,\n ...options,\n });\n }\n\n /**\n * @private\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest(input) {\n let optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n }\n\n /**\n * @private\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process(input) {\n let { state } = this;\n let { eventType } = input;\n\n let isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n let isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n}\n","import {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * direction cons to string\n * @param {constant} direction\n * @returns {String}\n */\nexport default function directionStr(direction) {\n if (direction === DIRECTION_DOWN) {\n return 'down';\n } else if (direction === DIRECTION_UP) {\n return 'up';\n } else if (direction === DIRECTION_LEFT) {\n return 'left';\n } else if (direction === DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n","import AttrRecognizer from './attribute';\nimport {\n DIRECTION_ALL,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_NONE,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_LEFT,\n DIRECTION_RIGHT\n} from '../inputjs/input-consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\nimport { TOUCH_ACTION_PAN_X,TOUCH_ACTION_PAN_Y } from '../touchactionjs/touchaction-Consts';\nimport directionStr from '../recognizerjs/direction-str';\n\n/**\n * @private\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class PanRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL,\n ...options,\n });\n this.pX = null;\n this.pY = null;\n }\n\n getTouchAction() {\n let { options:{ direction } } = this;\n let actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n }\n\n directionTest(input) {\n let { options } = this;\n let hasMoved = true;\n let { distance } = input;\n let { direction } = input;\n let x = input.deltaX;\n let y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x !== this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y !== this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n }\n\n attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && // replace with a super call\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n }\n\n emit(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n let direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n super.emit(input);\n }\n}\n","import AttrRecognizer from '../recognizers/attribute';\nimport { abs } from '../utils/utils-consts';\nimport { DIRECTION_HORIZONTAL,DIRECTION_VERTICAL } from '../inputjs/input-consts';\nimport PanRecognizer from './pan';\nimport { INPUT_END } from '../inputjs/input-consts';\nimport directionStr from '../recognizerjs/direction-str';\n\n/**\n * @private\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class SwipeRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1,\n ...options,\n });\n }\n\n getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n }\n\n attrTest(input) {\n let { direction } = this.options;\n let velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return super.attrTest(input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers === this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n }\n\n emit(input) {\n let direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n}\n","import AttrRecognizer from './attribute';\nimport { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\n\n/**\n * @private\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class PinchRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super({\n event: 'pinch',\n threshold: 0,\n pointers: 2,\n ...options,\n });\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_NONE];\n }\n\n attrTest(input) {\n return super.attrTest(input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n }\n\n emit(input) {\n if (input.scale !== 1) {\n let inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n super.emit(input);\n }\n}\n","import AttrRecognizer from './attribute';\nimport { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts';\nimport { STATE_BEGAN } from '../recognizerjs/recognizer-consts';\n\n/**\n * @private\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nexport default class RotateRecognizer extends AttrRecognizer {\n constructor(options = {}) {\n super( {\n event: 'rotate',\n threshold: 0,\n pointers: 2,\n ...options,\n });\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_NONE];\n }\n\n attrTest(input) {\n return super.attrTest(input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n}","import Recognizer from '../recognizerjs/recognizer-constructor';\nimport {\n STATE_RECOGNIZED,\n STATE_FAILED\n} from '../recognizerjs/recognizer-consts';\nimport { now } from '../utils/utils-consts';\nimport { TOUCH_ACTION_AUTO } from '../touchactionjs/touchaction-Consts';\nimport {\n INPUT_START,\n INPUT_END,\n INPUT_CANCEL\n} from '../inputjs/input-consts';\n\n/**\n * @private\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nexport default class PressRecognizer extends Recognizer {\n constructor(options = {}) {\n super({\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9, // a minimal movement is ok, but keep it low\n ...options,\n });\n this._timer = null;\n this._input = null;\n }\n\n getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n }\n\n process(input) {\n let { options } = this;\n let validPointers = input.pointers.length === options.pointers;\n let validMovement = input.distance < options.threshold;\n let validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeout(() => {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n }\n\n reset() {\n clearTimeout(this._timer);\n }\n\n emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(`${this.options.event}up`, input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n}\n\n","import { TOUCH_ACTION_COMPUTE } from \"./touchactionjs/touchaction-Consts\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\nimport {DIRECTION_HORIZONTAL} from \"./inputjs/input-consts\";\n\nexport default {\n\t/**\n\t * @private\n\t * set if DOM events are being triggered.\n\t * But this is slower and unused by simple implementations, so disabled by default.\n\t * @type {Boolean}\n\t * @default false\n\t */\n\tdomEvents: false,\n\n\t/**\n\t * @private\n\t * The value for the touchAction property/fallback.\n\t * When set to `compute` it will magically set the correct value based on the added recognizers.\n\t * @type {String}\n\t * @default compute\n\t */\n\ttouchAction: TOUCH_ACTION_COMPUTE,\n\n\t/**\n\t * @private\n\t * @type {Boolean}\n\t * @default true\n\t */\n\tenable: true,\n\n\t/**\n\t * @private\n\t * EXPERIMENTAL FEATURE -- can be removed/changed\n\t * Change the parent input target element.\n\t * If Null, then it is being set the to main element.\n\t * @type {Null|EventTarget}\n\t * @default null\n\t */\n\tinputTarget: null,\n\n\t/**\n\t * @private\n\t * force an input class\n\t * @type {Null|Function}\n\t * @default null\n\t */\n\tinputClass: null,\n\n\t/**\n\t * @private\n\t * Some CSS properties can be used to improve the working of Hammer.\n\t * Add them to this method and they will be set when creating a new Manager.\n\t * @namespace\n\t */\n\tcssProps: {\n\t\t/**\n\t\t * @private\n\t\t * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tuserSelect: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Disable the Windows Phone grippers when pressing an element.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\ttouchSelect: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Disables the default callout shown when you touch and hold a touch target.\n\t\t * On iOS, when you touch and hold a touch target such as a link, Safari displays\n\t\t * a callout containing information about the link. This property allows you to disable that callout.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\ttouchCallout: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Specifies whether zooming is enabled. Used by IE10>\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tcontentZooming: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n\t\t * @type {String}\n\t\t * @default 'none'\n\t\t */\n\t\tuserDrag: \"none\",\n\n\t\t/**\n\t\t * @private\n\t\t * Overrides the highlight color shown when the user taps a link or a JavaScript\n\t\t * clickable element in iOS. This property obeys the alpha value, if specified.\n\t\t * @type {String}\n\t\t * @default 'rgba(0,0,0,0)'\n\t\t */\n\t\ttapHighlightColor: \"rgba(0,0,0,0)\",\n\t},\n};\n\n/**\n * @private\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * This is separated with other defaults because of tree-shaking.\n * @type {Array}\n */\nexport const preset = [\n [RotateRecognizer, { enable: false }],\n [PinchRecognizer, { enable: false }, ['rotate']],\n [SwipeRecognizer, { direction: DIRECTION_HORIZONTAL }],\n [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']],\n [PressRecognizer]\n];\n","import assign from \"./utils/assign\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport createInputInstance from \"./inputjs/create-input-instance\";\nimport each from \"./utils/each\";\nimport inArray from \"./utils/in-array\";\nimport invokeArrayArg from \"./utils/invoke-array-arg\";\nimport splitStr from \"./utils/split-str\";\nimport prefixed from \"./utils/prefixed\";\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport {\n STATE_BEGAN,\n STATE_ENDED,\n STATE_CHANGED,\n STATE_RECOGNIZED,\n} from \"./recognizerjs/recognizer-consts\";\nimport defaults from \"./defaults\";\n\nconst STOP = 1;\nconst FORCED_STOP = 2;\n\n\n/**\n * @private\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n const { element } = manager;\n\n if (!element.style) {\n return;\n }\n let prop;\n\n each(manager.options.cssProps, (value, name) => {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || \"\";\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * @private\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n const gestureEvent = document.createEvent(\"Event\");\n\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\n\n/**\n* @private\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nexport default class Manager {\n constructor(element, options) {\n this.options = assign({}, defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, item => {\n const recognizer = this.add(new (item[0])(item[1]));\n\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n\n\t/**\n\t * @private\n\t * set options\n\t * @param {Object} options\n\t * @returns {Manager}\n\t */\n set(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n }\n\n\t/**\n\t * @private\n\t * stop recognizing for this session.\n\t * This session will be discarded, when a new [input]start event is fired.\n\t * When forced, the recognizer cycle is stopped immediately.\n\t * @param {Boolean} [force]\n\t */\n stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n }\n\n\t/**\n\t * @private\n\t * run the recognizers!\n\t * called by the inputHandler function on every movement of the pointers (touches)\n\t * it walks through all the recognizers and tries to detect the gesture that is being made\n\t * @param {Object} inputData\n\t */\n recognize(inputData) {\n const { session } = this;\n\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n let recognizer;\n const { recognizers } = this;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n let { curRecognizer } = session;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n session.curRecognizer = null;\n curRecognizer = null;\n }\n\n let i = 0;\n\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (// 1\n !curRecognizer || recognizer === curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n session.curRecognizer = recognizer;\n curRecognizer = recognizer;\n }\n i++;\n }\n }\n\n\t/**\n\t * @private\n\t * get a recognizer by its event name.\n\t * @param {Recognizer|String} recognizer\n\t * @returns {Recognizer|Null}\n\t */\n get(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n const { recognizers } = this;\n\n for (let i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event === recognizer) {\n return recognizers[i];\n }\n }\n return null;\n }\n\n\t/**\n\t * @private add a recognizer to the manager\n\t * existing recognizers with the same event name will be removed\n\t * @param {Recognizer} recognizer\n\t * @returns {Recognizer|Manager}\n\t */\n add(recognizer) {\n if (invokeArrayArg(recognizer, \"add\", this)) {\n return this;\n }\n\n // remove existing\n const existing = this.get(recognizer.options.event);\n\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n }\n\n\t/**\n\t * @private\n\t * remove a recognizer by name or instance\n\t * @param {Recognizer|String} recognizer\n\t * @returns {Manager}\n\t */\n remove(recognizer) {\n if (invokeArrayArg(recognizer, \"remove\", this)) {\n return this;\n }\n\n const targetRecognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n const { recognizers } = this;\n const index = inArray(recognizers, targetRecognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n }\n\n\t/**\n\t * @private\n\t * bind event\n\t * @param {String} events\n\t * @param {Function} handler\n\t * @returns {EventEmitter} this\n\t */\n on(events, handler) {\n if (events === undefined || handler === undefined) {\n return this;\n }\n\n const { handlers } = this;\n\n each(splitStr(events), event => {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n }\n\n\t/**\n\t * @private unbind event, leave emit blank to remove all handlers\n\t * @param {String} events\n\t * @param {Function} [handler]\n\t * @returns {EventEmitter} this\n\t */\n off(events, handler) {\n if (events === undefined) {\n return this;\n }\n\n const { handlers } = this;\n\n each(splitStr(events), event => {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n }\n\n\t/**\n\t * @private emit event to the listeners\n\t * @param {String} event\n\t * @param {Object} data\n\t */\n emit(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n const handlers = this.handlers[event] && this.handlers[event].slice();\n\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n\n let i = 0;\n\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n }\n\n\t/**\n\t * @private\n\t * destroy the manager and unbinds all events\n\t * it doesn't unbind dom events, that is the user own responsibility\n\t */\n destroy() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n}\n","import { SUPPORT_POINTER_EVENTS,SUPPORT_ONLY_TOUCH,SUPPORT_TOUCH } from './input-consts';\nimport inputHandler from './input-handler';\nimport PointerEventInput from '../input/pointerevent';\nimport TouchInput from '../input/touch';\nimport MouseInput from '../input/mouse';\nimport TouchMouseInput from '../input/touchmouse';\n\n/**\n * @private\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nexport default function createInputInstance(manager) {\n let Type;\n // let inputClass = manager.options.inputClass;\n let { options:{ inputClass } } = manager;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n","import {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n INPUT_TYPE_TOUCH\n} from '../inputjs/input-consts';\nimport Input from '../inputjs/input-constructor';\nimport toArray from '../utils/to-array';\nimport uniqueArray from '../utils/unique-array';\n\nconst SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nconst SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nconst SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * @private\n * Touch events input\n * @constructor\n * @extends Input\n */\nexport default class SingleTouchInput extends Input {\n constructor() {\n var proto = SingleTouchInput.prototype;\n proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n\n super(...arguments);\n this.started = false;\n }\n\n handler(ev) {\n let type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n let touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n}\n\n/**\n * @private\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n let all = toArray(ev.touches);\n let changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n","/**\n * @private\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nexport default function deprecate(method, name, message) {\n let deprecationMessage = `DEPRECATED METHOD: ${name}\\n${message} AT \\n`;\n return function() {\n let e = new Error('get-stack-trace');\n let stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n let log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n","import deprecate from './deprecate';\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nconst extend = deprecate((dest, src, merge) => {\n let keys = Object.keys(src);\n let i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\nexport default extend;\n","import deprecate from './deprecate';\nimport extend from './extend';\n/**\n * @private\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nconst merge = deprecate((dest, src) => {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\nexport default merge;\n","import assign from './assign';\n/**\n * @private\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nexport default function inherit(child, base, properties) {\n let baseP = base.prototype;\n let childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n","/**\n * @private\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nexport default function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n","import Manager from \"./manager\";\nimport defaults, { preset } from \"./defaults\";\nimport assign from './utils/assign';\nimport {\n INPUT_START,\n INPUT_MOVE,\n INPUT_END,\n INPUT_CANCEL,\n DIRECTION_NONE,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL,\n DIRECTION_ALL,\n} from \"./inputjs/input-consts\";\nimport {\n STATE_POSSIBLE,\n STATE_BEGAN,\n STATE_CHANGED,\n STATE_ENDED,\n STATE_RECOGNIZED,\n STATE_CANCELLED,\n STATE_FAILED,\n} from \"./recognizerjs/recognizer-consts\";\n\nimport Input from \"./inputjs/input-constructor\";\nimport TouchAction from \"./touchactionjs/touchaction-constructor\";\nimport TouchInput from \"./input/touch\";\nimport MouseInput from \"./input/mouse\";\nimport PointerEventInput from \"./input/pointerevent\";\nimport SingleTouchInput from \"./input/singletouch\";\nimport TouchMouseInput from \"./input/touchmouse\";\n\nimport Recognizer from \"./recognizerjs/recognizer-constructor\";\nimport AttrRecognizer from \"./recognizers/attribute\";\nimport TapRecognizer from \"./recognizers/tap\";\nimport PanRecognizer from \"./recognizers/pan\";\nimport SwipeRecognizer from \"./recognizers/swipe\";\nimport PinchRecognizer from \"./recognizers/pinch\";\nimport RotateRecognizer from \"./recognizers/rotate\";\nimport PressRecognizer from \"./recognizers/press\";\n\nimport addEventListeners from \"./utils/add-event-listeners\";\nimport removeEventListeners from \"./utils/remove-event-listeners\";\nimport each from \"./utils/each\";\nimport merge from \"./utils/merge\";\nimport extend from \"./utils/extend\";\nimport inherit from \"./utils/inherit\";\nimport bindFn from \"./utils/bind-fn\";\nimport prefixed from \"./utils/prefixed\";\nimport toArray from \"./utils/to-array\";\nimport uniqueArray from \"./utils/unique-array\";\nimport splitStr from \"./utils/split-str\";\nimport inArray from \"./utils/in-array\";\nimport boolOrFn from \"./utils/bool-or-fn\";\nimport hasParent from \"./utils/has-parent\";\n/**\n * @private\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nexport default class Hammer {\n\t/**\n * @private\n * @const {string}\n */\n\tstatic VERSION = \"#__VERSION__#\";\n\tstatic DIRECTION_ALL = DIRECTION_ALL;\n\tstatic DIRECTION_DOWN = DIRECTION_DOWN;\n\tstatic DIRECTION_LEFT = DIRECTION_LEFT;\n\tstatic DIRECTION_RIGHT = DIRECTION_RIGHT;\n\tstatic DIRECTION_UP = DIRECTION_UP;\n\tstatic DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n\tstatic DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n\tstatic DIRECTION_NONE = DIRECTION_NONE;\n\tstatic DIRECTION_DOWN = DIRECTION_DOWN;\n\tstatic INPUT_START = INPUT_START;\n\tstatic INPUT_MOVE = INPUT_MOVE;\n static INPUT_END = INPUT_END;\n\tstatic INPUT_CANCEL = INPUT_CANCEL;\n\tstatic STATE_POSSIBLE = STATE_POSSIBLE;\n\tstatic STATE_BEGAN = STATE_BEGAN;\n\tstatic STATE_CHANGED = STATE_CHANGED;\n\tstatic STATE_ENDED = STATE_ENDED;\n\tstatic STATE_RECOGNIZED = STATE_RECOGNIZED;\n\tstatic STATE_CANCELLED = STATE_CANCELLED;\n\tstatic STATE_FAILED = STATE_FAILED;\n\tstatic Manager = Manager;\n\tstatic Input = Input;\n\tstatic TouchAction = TouchAction;\n\tstatic TouchInput = TouchInput;\n\tstatic MouseInput = MouseInput;\n\tstatic PointerEventInput = PointerEventInput;\n\tstatic TouchMouseInput = TouchMouseInput;\n\tstatic SingleTouchInput = SingleTouchInput;\n\tstatic Recognizer = Recognizer;\n\tstatic AttrRecognizer = AttrRecognizer;\n\tstatic Tap = TapRecognizer;\n\tstatic Pan = PanRecognizer;\n\tstatic Swipe = SwipeRecognizer;\n\tstatic Pinch = PinchRecognizer;\n\tstatic Rotate = RotateRecognizer;\n\tstatic Press = PressRecognizer;\n\tstatic on = addEventListeners;\n\tstatic off = removeEventListeners;\n\tstatic each = each;\n\tstatic merge = merge;\n\tstatic extend = extend;\n\tstatic bindFn = bindFn;\n\tstatic assign = assign;\n\tstatic inherit = inherit;\n\tstatic bindFn = bindFn;\n\tstatic prefixed = prefixed;\n\tstatic toArray = toArray;\n\tstatic inArray = inArray;\n\tstatic uniqueArray = uniqueArray;\n\tstatic splitStr = splitStr;\n\tstatic boolOrFn = boolOrFn;\n\tstatic hasParent = hasParent;\n\tstatic addEventListeners = addEventListeners;\n\tstatic removeEventListeners = removeEventListeners;\n\tstatic defaults = assign({}, defaults, { preset });\n\tconstructor(element, options = {}) {\n\t\treturn new Manager(element, {\n\t\t\trecognizers: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n ...preset\n\t\t\t],\n\t\t\t...options,\n\t\t});\n\t}\n}\n"],"names":["win","Object","assign","target","TypeError","output","index","arguments","length","source","nextKey","hasOwnProperty","VENDOR_PREFIXES","TEST_ELEMENT","document","style","createElement","TYPE_FUNCTION","round","Math","abs","now","Date","prefixed","obj","property","prefix","prop","camelProp","toUpperCase","slice","i","window","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","undefined","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","forEach","val","getTouchActionProps","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","test","navigator","userAgent","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","each","iterator","context","call","boolOrFn","args","apply","inStr","str","find","indexOf","TouchAction","manager","value","set","this","compute","element","actions","toLowerCase","trim","update","options","touchAction","recognizers","recognizer","enable","concat","getTouchAction","hasPanX","hasPanY","cleanTouchActions","join","preventDefaults","input","srcEvent","direction","offsetDirection","session","prevented","preventDefault","hasNone","isTapPointer","pointers","isTapMovement","distance","isTapTouchTime","deltaTime","preventSrc","hasParent","node","parent","parentNode","getCenter","pointersLength","x","clientX","y","clientY","simpleCloneInputData","timeStamp","center","deltaX","deltaY","getDistance","p1","p2","props","sqrt","getAngle","atan2","PI","getDirection","getVelocity","computeInputData","firstInput","firstMultiple","offset","prevDelta","prevInput","offsetCenter","angle","offsetDelta","eventType","start","end","overallVelocity","overallVelocityX","overallVelocityY","scale","rotation","maxPointers","velocity","velocityX","velocityY","last","lastInterval","v","computeIntervalInputData","srcEventTarget","composedPath","path","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","emit","recognize","splitStr","split","addEventListeners","types","handler","type","addEventListener","removeEventListeners","removeEventListener","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","Input","callback","self","inputTarget","domHandler","ev","init","evEl","evTarget","evWin","destroy","inArray","src","findByKey","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","PointerEventInput","proto","prototype","store","_this","pointerEvents","removePointer","eventTypeNormalized","replace","pointerType","isTouch","storeIndex","pointerId","button","push","splice","toArray","Array","uniqueArray","key","sort","results","values","a","b","TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TouchInput","targetIds","touches","targetTouches","allTouches","identifier","changedTouches","changedTargetTouches","filter","touch","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MouseInput","pressed","which","DEDUP_TIMEOUT","DEDUP_DISTANCE","setLastTouch","eventData","primaryTouch","lastTouch","lts","lastTouches","setTimeout","TouchMouseInput","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","t","dx","dy","mouse","invokeArrayArg","arg","fn","isArray","_uniqueId","getRecognizerByNameIfManager","otherRecognizer","get","stateStr","state","Recognizer","id","simultaneous","requireFail","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","TapRecognizer","taps","interval","time","threshold","posThreshold","pTime","pCenter","_timer","_input","count","validPointers","validMovement","validTouchTime","failTimeout","validInterval","validMultiTap","_this2","_this3","clearTimeout","tapCount","AttrRecognizer","_Recognizer","attrTest","optionPointers","isRecognized","isValid","directionStr","PanRecognizer","pX","pY","directionTest","hasMoved","SwipeRecognizer","_AttrRecognizer","PinchRecognizer","inOut","RotateRecognizer","PressRecognizer","validTime","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","preset","toggleCssProps","add","name","oldCssProps","Manager","defaults","handlers","item","stop","force","stopped","curRecognizer","existing","remove","targetRecognizer","on","events","off","data","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","SINGLE_TOUCH_INPUT_MAP","SingleTouchInput","started","all","changed","deprecate","method","message","deprecationMessage","e","Error","stack","log","console","warn","extend","dest","merge","keys","inherit","child","base","properties","childP","baseP","create","constructor","_super","bindFn","Hammer","VERSION","INPUT_MOVE","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Tap","Pan","Swipe","Pinch","Rotate","Press"],"mappings":";;;;;;2lBAQA,ICNIA,IDOyB,mBAAlBC,OAAOC,OACP,SAAgBC,MACnBA,MAAAA,QACI,IAAIC,UAAU,sDAGlBC,EAASJ,OAAOE,GACXG,EAAQ,EAAGA,EAAQC,UAAUC,OAAQF,IAAS,KAC/CG,EAASF,UAAUD,MACrBG,MAAAA,MACG,IAAMC,KAAWD,EAChBA,EAAOE,eAAeD,KACxBL,EAAOK,GAAWD,EAAOC,WAK1BL,GAGAJ,OAAOC,OE5BZU,EAAkB,CAAC,GAAI,SAAU,MAAO,KAAM,KAAM,KACpDC,EAAmC,oBAAbC,SAA2B,CAACC,MAAO,IAAMD,SAASE,cAAc,OAEtFC,EAAgB,WAEdC,EAAeC,KAAfD,MAAOE,EAAQD,KAARC,IACPC,EAAQC,KAARD,ICCO,SAASE,EAASC,EAAKC,WAChCC,EACAC,EACAC,EAAYH,EAAS,GAAGI,cAAgBJ,EAASK,MAAM,GAEvDC,EAAI,EACDA,EAAInB,EAAgBJ,QAAQ,KAEjCmB,GADAD,EAASd,EAAgBmB,IACPL,EAASE,EAAYH,KAE3BD,SACHG,EAETI,KFfH/B,EAFqB,oBAAXgC,OAEJ,GAEAA,OGJA,IAAMC,EAAwBV,EAASV,EAAaE,MAAO,eACrDmB,OAAgDC,IAA1BF,ECAnC,IAAMG,EAAuB,UACvBC,EAAoB,OACpBC,EAA4B,eAC5BC,EAAoB,OACpBC,EAAqB,QACrBC,EAAqB,QACrBC,EDJS,eACRR,SACI,MAELS,EAAW,GACXC,EAAcZ,EAAOa,KAAOb,EAAOa,IAAIC,gBAC1C,OAAQ,eAAgB,QAAS,QAAS,cAAe,QAAQC,QAAQ,SAACC,UAIlEL,EAASK,IAAOJ,GAAcZ,EAAOa,IAAIC,SAAS,eAAgBE,KAEpEL,ECRgBM,GCNnBC,EAAiB,iBAAkBlB,EACnCmB,OAA8DhB,IAArCZ,EAASS,EAAQ,gBAC1CoB,EAAqBF,GAJN,wCAIoCG,KAAKC,UAAUC,WAElEC,EAAmB,QAEnBC,EAAmB,QAGnBC,EAAmB,GAEnBC,EAAc,EAEdC,EAAY,EACZC,EAAe,EAEfC,EAAiB,EACjBC,EAAiB,EACjBC,EAAkB,EAClBC,EAAe,EACfC,EAAiB,GAEjBC,EAAuBJ,EAAiBC,EACxCI,EAAqBH,EAAeC,EACpCG,EAAgBF,EAAuBC,EAEvCE,EAAW,CAAC,IAAK,KACjBC,EAAkB,CAAC,UAAW,WCzBrB,SAASC,EAAKhD,EAAKiD,EAAUC,OACtC3C,KAECP,KAIDA,EAAIuB,QACNvB,EAAIuB,QAAQ0B,EAAUC,QACjB,QAAmBvC,IAAfX,EAAIhB,WACbuB,EAAI,EACGA,EAAIP,EAAIhB,QACbiE,EAASE,KAAKD,EAASlD,EAAIO,GAAIA,EAAGP,GAClCO,aAGGA,KAAKP,EACRA,EAAIb,eAAeoB,IAAM0C,EAASE,KAAKD,EAASlD,EAAIO,GAAIA,EAAGP,GCflD,SAASoD,EAAS5B,EAAK6B,iBACzB7B,IAAQ/B,EACV+B,EAAI8B,MAAMD,GAAOA,EAAK,SAAkB1C,EAAW0C,GAErD7B,ECNM,SAAS+B,EAAMC,EAAKC,UACL,EAArBD,EAAIE,QAAQD,OCoBAE,wBACPC,EAASC,QACdD,QAAUA,OACVE,IAAID,8BAQXC,aAAID,GAEEA,IAAUjD,IACZiD,EAAQE,KAAKC,WAGXtD,GAAuBqD,KAAKH,QAAQK,QAAQ1E,OAAS2B,EAAiB2C,UACnED,QAAQK,QAAQ1E,MAAMkB,GAAyBoD,QAEjDK,QAAUL,EAAMM,cAAcC,UAOrCC,uBACOP,IAAIC,KAAKH,QAAQU,QAAQC,gBAQhCP,uBACME,EAAU,UACdlB,EAAKe,KAAKH,QAAQY,YAAa,SAACC,GAC1BrB,EAASqB,EAAWH,QAAQI,OAAQ,CAACD,MACvCP,EAAUA,EAAQS,OAAOF,EAAWG,qBCrD7B,SAA2BV,MAEpCX,EAAMW,EAASnD,UACVA,MAGL8D,EAAUtB,EAAMW,EAASlD,GACzB8D,EAAUvB,EAAMW,EAASjD,UAMzB4D,GAAWC,EACN/D,EAIL8D,GAAWC,EACND,EAAU7D,EAAqBC,EAIpCsC,EAAMW,EAASpD,GACVA,EAGFD,ED6BEkE,CAAkBb,EAAQc,KAAK,SAQxCC,yBAAgBC,OACRC,EAAaD,EAAbC,SACFC,EAAYF,EAAMG,mBAGlBtB,KAAKH,QAAQ0B,QAAQC,UACvBJ,EAASK,0BAILtB,EAAYH,KAAZG,QACFuB,EAAUlC,EAAMW,EAASnD,KAAuBG,EAAiBH,GACjE+D,EAAUvB,EAAMW,EAASjD,KAAwBC,EAAiBD,GAClE4D,EAAUtB,EAAMW,EAASlD,KAAwBE,EAAiBF,MAElEyE,EAAS,KAEPC,EAAyC,IAA1BR,EAAMS,SAAS3G,OAC9B4G,EAAgBV,EAAMW,SAAW,EACjCC,EAAiBZ,EAAMa,UAAY,OAEnCL,GAAgBE,GAAiBE,aAKnCjB,IAAWC,SAKXW,GACCX,GAAWM,EAAYzC,GACvBkC,GAAWO,EAAYxC,EACnBmB,KAAKiC,WAAWb,cAS3Ba,oBAAWb,QACJvB,QAAQ0B,QAAQC,WAAY,EACjCJ,EAASK,uBEpHE,SAASS,EAAUC,EAAMC,QAC/BD,GAAM,IACPA,IAASC,SACJ,EAETD,EAAOA,EAAKE,kBAEP,ECPM,SAASC,EAAUV,OAC5BW,EAAiBX,EAAS3G,UAGP,IAAnBsH,QACK,CACLC,EAAG7G,EAAMiG,EAAS,GAAGa,SACrBC,EAAG/G,EAAMiG,EAAS,GAAGe,kBAIrBH,EAAI,EACJE,EAAI,EACJlG,EAAI,EACDA,EAAI+F,GACTC,GAAKZ,EAASpF,GAAGiG,QACjBC,GAAKd,EAASpF,GAAGmG,QACjBnG,UAGK,CACLgG,EAAG7G,EAAM6G,EAAID,GACbG,EAAG/G,EAAM+G,EAAIH,ICrBF,SAASK,EAAqBzB,WAGvCS,EAAW,GACXpF,EAAI,EACDA,EAAI2E,EAAMS,SAAS3G,QACxB2G,EAASpF,GAAK,CACZiG,QAAS9G,EAAMwF,EAAMS,SAASpF,GAAGiG,SACjCE,QAAShH,EAAMwF,EAAMS,SAASpF,GAAGmG,UAEnCnG,UAGK,CACLqG,UAAW/G,IACX8F,SAAAA,EACAkB,OAAQR,EAAUV,GAClBmB,OAAQ5B,EAAM4B,OACdC,OAAQ7B,EAAM6B,QCjBH,SAASC,EAAYC,EAAIC,EAAIC,GACrCA,IACHA,EAAQrE,OAENyD,EAAIW,EAAGC,EAAM,IAAMF,EAAGE,EAAM,IAC5BV,EAAIS,EAAGC,EAAM,IAAMF,EAAGE,EAAM,WAEzBxH,KAAKyH,KAAMb,EAAIA,EAAME,EAAIA,GCPnB,SAASY,EAASJ,EAAIC,EAAIC,GAClCA,IACHA,EAAQrE,OAENyD,EAAIW,EAAGC,EAAM,IAAMF,EAAGE,EAAM,IAC5BV,EAAIS,EAAGC,EAAM,IAAMF,EAAGE,EAAM,WACN,IAAnBxH,KAAK2H,MAAMb,EAAGF,GAAW5G,KAAK4H,GCNxB,SAASC,EAAajB,EAAGE,UAClCF,IAAME,EACDnE,EAGL1C,EAAI2G,IAAM3G,EAAI6G,GACTF,EAAI,EAAIhE,EAAiBC,EAE3BiE,EAAI,EAAIhE,EAAeC,ECVjB,SAAS+E,EAAY1B,EAAWQ,EAAGE,SACzC,CACLF,EAAGA,EAAIR,GAAa,EACpBU,EAAGA,EAAIV,GAAa,GCST,SAAS2B,EAAiB9D,EAASsB,OAC1CI,EAAY1B,EAAZ0B,QACAK,EAAaT,EAAbS,SACOW,EAAmBX,EAA1B3G,OAGDsG,EAAQqC,aACXrC,EAAQqC,WAAahB,EAAqBzB,IAIvB,EAAjBoB,IAAuBhB,EAAQsC,cACjCtC,EAAQsC,cAAgBjB,EAAqBzB,GACjB,IAAnBoB,IACThB,EAAQsC,eAAgB,OChCWtC,EAASJ,EACxC2B,EAGFgB,EACAC,EACAC,ED6BEJ,EAA8BrC,EAA9BqC,WAAYC,EAAkBtC,EAAlBsC,cACdI,EAAeJ,EAAgBA,EAAcf,OAASc,EAAWd,OAEjEA,EAAS3B,EAAM2B,OAASR,EAAUV,GACtCT,EAAM0B,UAAY/G,IAClBqF,EAAMa,UAAYb,EAAM0B,UAAYe,EAAWf,UAE/C1B,EAAM+C,MAAQZ,EAASW,EAAcnB,GACrC3B,EAAMW,SAAWmB,EAAYgB,EAAcnB,GC3CNvB,ED6CtBA,EC5CTuB,GADwC3B,ED6CtBA,GC5ClB2B,OAGFgB,EAASvC,EAAQ4C,aAAe,GAChCJ,EAAYxC,EAAQwC,WAAa,GACjCC,EAAYzC,EAAQyC,WAAa,GAEjC7C,EAAMiD,YAAchG,GAAe4F,EAAUI,YAAc/F,IAC7D0F,EAAYxC,EAAQwC,UAAY,CAC9BvB,EAAGwB,EAAUjB,QAAU,EACvBL,EAAGsB,EAAUhB,QAAU,GAGzBc,EAASvC,EAAQ4C,YAAc,CAC7B3B,EAAGM,EAAON,EACVE,EAAGI,EAAOJ,IAIdvB,EAAM4B,OAASgB,EAAUvB,GAAKM,EAAON,EAAIsB,EAAOtB,GAChDrB,EAAM6B,OAASe,EAAUrB,GAAKI,EAAOJ,EAAIoB,EAAOpB,GDyBhDvB,EAAMG,gBAAkBmC,EAAatC,EAAM4B,OAAQ5B,EAAM6B,YEtC1BqB,EAAOC,ECAJD,EAAOC,EHwCrCC,EAAkBb,EAAYvC,EAAMa,UAAWb,EAAM4B,OAAQ5B,EAAM6B,QACvE7B,EAAMqD,iBAAmBD,EAAgB/B,EACzCrB,EAAMsD,iBAAmBF,EAAgB7B,EACzCvB,EAAMoD,gBAAmB1I,EAAI0I,EAAgB/B,GAAK3G,EAAI0I,EAAgB7B,GAAM6B,EAAgB/B,EAAI+B,EAAgB7B,EAEhHvB,EAAMuD,MAAQb,GE7CiBQ,EF6CQR,EAAcjC,SE5C9CqB,GAD+BqB,EF6CyB1C,GE5CxC,GAAI0C,EAAI,GAAItF,GAAmBiE,EAAYoB,EAAM,GAAIA,EAAM,GAAIrF,IF4CX,EAC3EmC,EAAMwD,SAAWd,GG9CiBQ,EH8CWR,EAAcjC,SG7CpD0B,GADkCgB,EH8C4B1C,GG7CjD,GAAI0C,EAAI,GAAItF,GAAmBsE,EAASe,EAAM,GAAIA,EAAM,GAAIrF,IH6CC,EAEjFmC,EAAMyD,YAAerD,EAAQyC,UAAsC7C,EAAMS,SAAS3G,OAClFsG,EAAQyC,UAAUY,YAAezD,EAAMS,SAAS3G,OAASsG,EAAQyC,UAAUY,YADlCzD,EAAMS,SAAS3G,OI/C3C,SAAkCsG,EAASJ,OAGpD0D,EACAC,EACAC,EACA1D,EALA2D,EAAOzD,EAAQ0D,cAAgB9D,EAC/Ba,EAAYb,EAAM0B,UAAYmC,EAAKnC,aAMnC1B,EAAMiD,YAAc9F,IAA6BH,EAAZ6D,QAAkDpF,IAAlBoI,EAAKH,UAAyB,KACjG9B,EAAS5B,EAAM4B,OAASiC,EAAKjC,OAC7BC,EAAS7B,EAAM6B,OAASgC,EAAKhC,OAE7BkC,EAAIxB,EAAY1B,EAAWe,EAAQC,GACvC8B,EAAYI,EAAE1C,EACduC,EAAYG,EAAExC,EACdmC,EAAYhJ,EAAIqJ,EAAE1C,GAAK3G,EAAIqJ,EAAExC,GAAMwC,EAAE1C,EAAI0C,EAAExC,EAC3CrB,EAAYoC,EAAaV,EAAQC,GAEjCzB,EAAQ0D,aAAe9D,OAGvB0D,EAAWG,EAAKH,SAChBC,EAAYE,EAAKF,UACjBC,EAAYC,EAAKD,UACjB1D,EAAY2D,EAAK3D,UAGnBF,EAAM0D,SAAWA,EACjB1D,EAAM2D,UAAYA,EAClB3D,EAAM4D,UAAYA,EAClB5D,EAAME,UAAYA,EJoBlB8D,CAAyB5D,EAASJ,OAK9BiE,EAFAxK,EAASiF,EAAQK,QACfkB,EAAWD,EAAMC,SAWnBc,EAPFkD,EADEhE,EAASiE,aACMjE,EAASiE,eAAe,GAChCjE,EAASkE,KACDlE,EAASkE,KAAK,GAEdlE,EAASxG,OAGEA,KAC5BA,EAASwK,GAEXjE,EAAMvG,OAASA,EKrEF,SAAS2K,EAAa1F,EAASuE,EAAWjD,OACnDqE,EAAcrE,EAAMS,SAAS3G,OAC7BwK,EAAqBtE,EAAMuE,gBAAgBzK,OAC3C0K,EAAWvB,EAAYhG,GAAgBoH,EAAcC,GAAuB,EAC5EG,EAAWxB,GAAa/F,EAAYC,IAAkBkH,EAAcC,GAAuB,EAE/FtE,EAAMwE,UAAYA,EAClBxE,EAAMyE,UAAYA,EAEdD,IACF9F,EAAQ0B,QAAU,IAKpBJ,EAAMiD,UAAYA,EAGlBT,EAAiB9D,EAASsB,GAG1BtB,EAAQgG,KAAK,eAAgB1E,GAE7BtB,EAAQiG,UAAU3E,GAClBtB,EAAQ0B,QAAQyC,UAAY7C,EC3Bf,SAAS4E,GAAStG,UACxBA,EAAIY,OAAO2F,MAAM,QCCX,SAASC,GAAkBrL,EAAQsL,EAAOC,GACvDlH,EAAK8G,GAASG,GAAQ,SAACE,GACrBxL,EAAOyL,iBAAiBD,EAAMD,GAAS,KCF5B,SAASG,GAAqB1L,EAAQsL,EAAOC,GAC1DlH,EAAK8G,GAASG,GAAQ,SAACE,GACrBxL,EAAO2L,oBAAoBH,EAAMD,GAAS,KCL/B,SAASK,GAAoBtG,OACtCuG,EAAMvG,EAAQwG,eAAiBxG,SAC3BuG,EAAIE,aAAeF,EAAIG,cAAgBnK,WCK5BoK,wBACPhH,EAASiH,OACfC,EAAO/G,UACNH,QAAUA,OACViH,SAAWA,OACX5G,QAAUL,EAAQK,aAClBtF,OAASiF,EAAQU,QAAQyG,iBAIzBC,WAAa,SAASC,GACrB7H,EAASQ,EAAQU,QAAQI,OAAQ,CAACd,KACpCkH,EAAKZ,QAAQe,SAIZC,kCAQPhB,uBAMAgB,qBACOC,MAAQnB,GAAkBjG,KAAKE,QAASF,KAAKoH,KAAMpH,KAAKiH,iBACxDI,UAAYpB,GAAkBjG,KAAKpF,OAAQoF,KAAKqH,SAAUrH,KAAKiH,iBAC/DK,OAASrB,GAAkBO,GAAoBxG,KAAKE,SAAUF,KAAKsH,MAAOtH,KAAKiH,eAOtFM,wBACOH,MAAQd,GAAqBtG,KAAKE,QAASF,KAAKoH,KAAMpH,KAAKiH,iBAC3DI,UAAYf,GAAqBtG,KAAKpF,OAAQoF,KAAKqH,SAAUrH,KAAKiH,iBAClEK,OAAShB,GAAqBE,GAAoBxG,KAAKE,SAAUF,KAAKsH,MAAOtH,KAAKiH,kBChD5E,SAASO,GAAQC,EAAK/H,EAAMgI,MACrCD,EAAI9H,UAAY+H,SACXD,EAAI9H,QAAQD,WAEflD,EAAI,EACDA,EAAIiL,EAAIxM,QAAQ,IAChByM,GAAaD,EAAIjL,GAAGkL,IAAchI,IAAWgI,GAAaD,EAAIjL,KAAOkD,SACjElD,EAETA,WAEM,MCLNmL,GAAoB,CACxBC,YAAaxJ,EACbyJ,YzBCiB,EyBAjBC,UAAWzJ,EACX0J,cAAezJ,EACf0J,WAAY1J,GAIR2J,GAAyB,GAC1BhK,IzBdkB,QyBgBlBC,IzBdqB,UyBkBtBgK,GAAyB,cACzBC,GAAwB,sCAGxB1L,EAAO2L,iBAAmB3L,EAAO4L,eACnCH,GAAyB,gBACzBC,GAAwB,iDASLG,kCAEbC,EAAQD,EAAkBE,iBAE9BD,EAAMnB,KAAOc,GACbK,EAAMjB,MAAQa,mBACLnN,kBACJyN,MAASC,EAAK7I,QAAQ0B,QAAQoH,cAAgB,+BAQrDxC,iBAAQe,OACAuB,EAAUzI,KAAVyI,MACFG,GAAgB,EAEhBC,EAAsB3B,EAAGd,KAAKhG,cAAc0I,QAAQ,KAAM,IAC1D1E,EAAYuD,GAAkBkB,GAC9BE,EAAcd,GAAuBf,EAAG6B,cAAgB7B,EAAG6B,YAE3DC,EAAWD,IAAgB9K,EAG3BgL,EAAazB,GAAQiB,EAAOvB,EAAGgC,UAAW,aAG1C9E,EAAYhG,IAA8B,IAAd8I,EAAGiC,QAAgBH,GAC7CC,EAAa,IACfR,EAAMW,KAAKlC,GACX+B,EAAaR,EAAMxN,OAAS,GAErBmJ,GAAa/F,EAAYC,KAClCsK,GAAgB,GAIdK,EAAa,IAKjBR,EAAMQ,GAAc/B,OAEfJ,SAAS9G,KAAKH,QAASuE,EAAW,CACrCxC,SAAU6G,EACV/C,gBAAiB,CAACwB,GAClB6B,YAAAA,EACA3H,SAAU8F,IAGR0B,GAEFH,EAAMY,OAAOJ,EAAY,QAvDgBpC,GCvChC,SAASyC,GAAQrN,UACvBsN,MAAMf,UAAUjM,MAAM6C,KAAKnD,EAAK,GCG1B,SAASuN,GAAY/B,EAAKgC,EAAKC,WACxCC,EAAU,GACVC,EAAS,GACTpN,EAAI,EAEDA,EAAIiL,EAAIxM,QAAQ,KACjBwC,EAAMgM,EAAMhC,EAAIjL,GAAGiN,GAAOhC,EAAIjL,GAC9BgL,GAAQoC,EAAQnM,GAAO,GACzBkM,EAAQP,KAAK3B,EAAIjL,IAEnBoN,EAAOpN,GAAKiB,EACZjB,WAGEkN,IAIAC,EAHGF,EAGOE,EAAQD,KAAK,SAACG,EAAGC,UAClBD,EAAEJ,GAAOK,EAAEL,KAHVE,EAAQD,QAQfC,MCtBHI,GAAkB,CACtBC,WAAY5L,EACZ6L,U5BGiB,E4BFjBC,SAAU7L,EACV8L,YAAa7L,GAWM8L,yCAEjBA,EAAW5B,UAAUnB,SAVG,4DAWfrM,kBACJqP,UAAY,+BAGnBlE,iBAAQe,OACFd,EAAO2D,GAAgB7C,EAAGd,MAC1BkE,EAqBR,SAAoBpD,EAAId,OAUlB5J,EACA+N,EAVAC,EAAalB,GAAQpC,EAAGoD,SACtBD,EAAcrK,KAAdqK,aAGFjE,G5B7Ca,E4B6CLhI,IAAmD,IAAtBoM,EAAWvP,cAClDoP,EAAUG,EAAW,GAAGC,aAAc,EAC/B,CAACD,EAAYA,OAKlBE,EAAiBpB,GAAQpC,EAAGwD,gBAC5BC,EAAuB,GACrB/P,EAAWoF,KAAXpF,UAGN2P,EAAgBC,EAAWI,OAAO,SAACC,UAC1B3I,EAAU2I,EAAMjQ,OAAQA,KAI7BwL,IAAShI,MACX5B,EAAI,EACGA,EAAI+N,EAActP,QACvBoP,EAAUE,EAAc/N,GAAGiO,aAAc,EACzCjO,IAKJA,EAAI,OACGA,EAAIkO,EAAezP,QACpBoP,EAAUK,EAAelO,GAAGiO,aAC9BE,EAAqBvB,KAAKsB,EAAelO,IAIvC4J,GAAQ/H,EAAYC,WACf+L,EAAUK,EAAelO,GAAGiO,YAErCjO,WAGGmO,EAAqB1P,OAInB,CAELuO,GAAYe,EAAc3J,OAAO+J,GAAuB,cAAc,GACtEA,WAxEyBvL,KAAKY,KAAMkH,EAAId,GACnCkE,QAIAxD,SAAS9G,KAAKH,QAASuG,EAAM,CAChCxE,SAAU0I,EAAQ,GAClB5E,gBAAiB4E,EAAQ,GACzBvB,YAAa9K,EACbmD,SAAU8F,QAlBwBL,OCnBlCiE,GAAkB,CACtBC,UAAW3M,EACX4M,U7BOiB,E6BNjBC,QAAS5M,GAYU6M,kCAEb3C,EAAQ2C,EAAW1C,iBACvBD,EAAMnB,KAZmB,YAazBmB,EAAMjB,MAZkB,oCAcftM,kBACJmQ,SAAU,8BAQjBhF,iBAAQe,OACF9C,EAAY0G,GAAgB5D,EAAGd,MAG/BhC,EAAYhG,GAA6B,IAAd8I,EAAGiC,cAC3BgC,SAAU,G7B1BF,E6B6BX/G,GAAuC,IAAb8C,EAAGkE,QAC/BhH,EAAY/F,GAIT2B,KAAKmL,UAIN/G,EAAY/F,SACT8M,SAAU,QAGZrE,SAAS9G,KAAKH,QAASuE,EAAW,CACrCxC,SAAU,CAACsF,GACXxB,gBAAiB,CAACwB,GAClB6B,YAAa7K,EACbkD,SAAU8F,SAxCwBL,GCDlCwE,GAAgB,KAChBC,GAAiB,GAEvB,SAASC,GAAaC,OACKX,EAAWW,EAA7B9F,sBAEJmF,EAAMJ,aAAezK,KAAKyL,aAAc,KACrCC,EAAY,CAAElJ,EAAGqI,EAAMpI,QAASC,EAAGmI,EAAMlI,SACzCgJ,EAAM3L,KAAK4L,iBAEZA,YAAYxC,KAAKsC,GAWtBG,WARwB,eACjBrP,EAAImP,EAAIhM,QAAQ+L,IAEb,EAALlP,GACHmP,EAAItC,OAAO7M,EAAG,IAIY6O,SA8BTS,4CACRjM,EAASiH,8BACdjH,EAASiH,UAehBX,QAAU,SAACtG,EAASkM,EAAYC,OACzBhD,EAAWgD,EAAUjD,cAAgB9K,EACrCgO,EAAWD,EAAUjD,cAAgB7K,OAEvC+N,GAAWD,EAAUE,oBAAsBF,EAAUE,mBAAmBC,sBAKxEnD,GAnDN,SAAuB5E,EAAWoH,GAC7BpH,EAAYhG,QACVqN,aAAeD,EAAU9F,gBAAgB,GAAG+E,WACjDc,GAAanM,KAAKY,KAAMwL,IACdpH,GAAa/F,EAAYC,IACnCiN,GAAanM,KAAKY,KAAMwL,KA+CTpM,aAAW2M,EAAYC,QAC/B,GAAIC,GA7Cb,SAA0BT,WACnBhJ,EAAIgJ,EAAUpK,SAASqB,QACvBC,EAAI8I,EAAUpK,SAASuB,QAEpBnG,EAAI,EAAGA,EAAIwD,KAAK4L,YAAY3Q,OAAQuB,IAAK,KAC3C4P,EAAIpM,KAAK4L,YAAYpP,GACrB6P,EAAKzQ,KAAKC,IAAI2G,EAAI4J,EAAE5J,GACpB8J,EAAK1Q,KAAKC,IAAI6G,EAAI0J,EAAE1J,MAEtB2J,GAAMf,IAAkBgB,GAAMhB,UAC1B,SAGF,GAgCiClM,aAAW4M,YAI7ClF,SAASjH,EAASkM,EAAYC,OA5B9BnB,MAAQ,IAAIT,GAAW1B,EAAK7I,QAAS6I,EAAKvC,WAC1CoG,MAAQ,IAAIrB,GAAWxC,EAAK7I,QAAS6I,EAAKvC,WAC1CsF,aAAe,OACfG,YAAc,+BAgCpBrE,wBACMsD,MAAMtD,eACNgF,MAAMhF,cAzCgCV,MC9D9B,SAAS2F,GAAeC,EAAKC,EAAIvN,WAC1CoK,MAAMoD,QAAQF,KAChBxN,EAAKwN,EAAKtN,EAAQuN,GAAKvN,IAChB,GCdX,ICKIyN,GAAY,ECED,SAASC,GAA6BC,EAAiBpM,OAC9Db,EAAYa,EAAZb,eACFA,EACKA,EAAQkN,IAAID,GAEdA,ECCM,SAASE,GAASC,UHRT,GGSlBA,EACK,SHZS,EGaPA,EACF,MHfW,EGgBTA,EACF,OHlBS,EGmBPA,EACF,QAEF,OC8BYC,yBACP3M,YAAAA,IAAAA,EAAU,SACfA,WACHI,QAAQ,GACLJ,QAGA4M,GHrDAP,UGuDA/M,QAAU,UAGVoN,MJjEc,OIkEdG,aAAe,QACfC,YAAc,8BASrBtN,aAAIQ,UACF5F,EAAOqF,KAAKO,QAASA,QAGhBV,SAAWG,KAAKH,QAAQW,YAAYF,SAClCN,QASTsN,uBAAcR,MACRN,GAAeM,EAAiB,gBAAiB9M,aAC5CA,SAGHoN,EAAiBpN,KAAjBoN,oBAEDA,GADLN,EAAkBD,GAA6BC,EAAiB9M,OAC9BmN,MAChCC,EAAaN,EAAgBK,IAAML,GACnBQ,cAActN,MAEzBA,QASTuN,2BAAkBT,UACZN,GAAeM,EAAiB,oBAAqB9M,QAIzD8M,EAAkBD,GAA6BC,EAAiB9M,aACzDA,KAAKoN,aAAaN,EAAgBK,KAJhCnN,QAcXwN,wBAAeV,MACTN,GAAeM,EAAiB,iBAAkB9M,aAC7CA,SAGHqN,EAAgBrN,KAAhBqN,mBAEyC,IAA3C7F,GAAQ6F,EADZP,EAAkBD,GAA6BC,EAAiB9M,SAE9DqN,EAAYjE,KAAK0D,GACjBA,EAAgBU,eAAexN,OAE1BA,QASTyN,4BAAmBX,MACbN,GAAeM,EAAiB,qBAAsB9M,aACjDA,KAGT8M,EAAkBD,GAA6BC,EAAiB9M,UAC5DjF,EAAQyM,GAAQxH,KAAKqN,YAAaP,UACzB,EAAT/R,QACGsS,YAAYhE,OAAOtO,EAAO,GAE1BiF,QAQT0N,qCACmC,EAA1B1N,KAAKqN,YAAYpS,UAS1B0S,0BAAiBb,WACN9M,KAAKoN,aAAaN,EAAgBK,OAS7CtH,cAAK1E,OACC4F,EAAO/G,KACLiN,EAAUjN,KAAViN,eAEGpH,EAAK+H,GACZ7G,EAAKlH,QAAQgG,KAAK+H,EAAOzM,GAIvB8L,EJ9LY,GI+LdpH,EAAKkB,EAAKxG,QAAQqN,MAAQZ,GAASC,IAGrCpH,EAAKkB,EAAKxG,QAAQqN,OAEdzM,EAAM0M,iBACRhI,EAAK1E,EAAM0M,iBJrMG,GIyMZZ,GACFpH,EAAKkB,EAAKxG,QAAQqN,MAAQZ,GAASC,OAWvCa,iBAAQ3M,MACFnB,KAAK+N,iBACA/N,KAAK6F,KAAK1E,QAGd8L,MJvNY,MI+NnBc,2BACMvR,EAAI,EACDA,EAAIwD,KAAKqN,YAAYpS,QAAQ,SAC5B+E,KAAKqN,YAAY7Q,GAAGyQ,cACjB,EAETzQ,WAEK,KAQTsJ,mBAAUkG,OAGJgC,EAAiBrT,EAAO,GAAIqR,OAG3B3M,EAASW,KAAKO,QAAQI,OAAQ,CAACX,KAAMgO,gBACnCC,kBACAhB,MJvPU,OI4PbjN,KAAKiN,aACFA,MJnQY,QIsQdA,MAAQjN,KAAKkO,QAAQF,MAItBhO,KAAKiN,YACFa,QAAQE,MAcjBE,iBAAQlC,OASRnL,8BAQAoN,wBCrRmBE,0BACP5N,yBAAAA,IAAAA,EAAU,sBAElBqN,MAAO,MACPhM,SAAU,EACVwM,KAAM,EACNC,SAAU,IACVC,KAAM,IACNC,UAAW,EACXC,aAAc,IACXjO,WAKAkO,OAAQ,IACRC,SAAU,IAEVC,OAAS,OACTC,OAAS,OACTC,MAAQ,sCAGfhO,gCACS,CAAC9D,MAGVmR,iBAAQ/M,cACAZ,EAAYP,KAAZO,QAEFuO,EAAgB3N,EAAMS,SAAS3G,SAAWsF,EAAQqB,SAClDmN,EAAgB5N,EAAMW,SAAWvB,EAAQgO,UACzCS,EAAiB7N,EAAMa,UAAYzB,EAAQ+N,aAE1CL,QAEA9M,EAAMiD,UAAYhG,GAAgC,IAAf4B,KAAK6O,aACpC7O,KAAKiP,iBAKVF,GAAiBC,GAAkBF,EAAe,IAChD3N,EAAMiD,YAAc/F,SACf2B,KAAKiP,kBAGVC,GAAgBlP,KAAKyO,OAAStN,EAAM0B,UAAY7C,KAAKyO,MAAQlO,EAAQ8N,SACrEc,GAAiBnP,KAAK0O,SAAWzL,EAAYjD,KAAK0O,QAASvN,EAAM2B,QAAUvC,EAAQiO,qBAElFC,MAAQtN,EAAM0B,eACd6L,QAAUvN,EAAM2B,OAEhBqM,GAAkBD,OAGhBL,OAAS,OAFTA,MAAQ,OAKVD,OAASzN,EAKG,IADFnB,KAAK6O,MAAQtO,EAAQ6N,YAI7BpO,KAAK0N,2BAGHiB,OAAS9C,WAAW,WACvBuD,EAAKnC,MLzFG,EK0FRmC,EAAKtB,WACJvN,EAAQ8N,UL7FD,GAEA,SAGC,MKgGnBY,8CACON,OAAS9C,WAAW,WACvBwD,EAAKpC,MLlGU,IKmGdjN,KAAKO,QAAQ8N,ULnGC,MKuGnBJ,iBACEqB,aAAatP,KAAK2O,WAGpB9I,gBL9GkB,IK+GZ7F,KAAKiN,aACF2B,OAAOW,SAAWvP,KAAK6O,WACvBhP,QAAQgG,KAAK7F,KAAKO,QAAQqN,MAAO5N,KAAK4O,aA/FN1B,ICFtBsC,0BACPjP,mBAAAA,IAAAA,EAAU,IACpBkP,eACE7N,SAAU,GACPrB,4CAWPmP,kBAASvO,OACHwO,EAAiB3P,KAAKO,QAAQqB,gBACR,IAAnB+N,GAAwBxO,EAAMS,SAAS3G,SAAW0U,KAU3DzB,iBAAQ/M,OACA8L,EAAUjN,KAAViN,MACA7I,EAAcjD,EAAdiD,UAEFwL,IAAe3C,EACf4C,EAAU7P,KAAK0P,SAASvO,UAGxByO,IAAiBxL,EAAY9F,IAAiBuR,GNjD9B,GMkDX5C,EACE2C,GAAgBC,EACrBzL,EAAY/F,ENtDF,EMuDL4O,ENzDK,EM0DDA,ENzDG,EM4DTA,EN7DO,EAKC,OMauBC,ICN7B,SAAS4C,GAAazO,UAC/BA,IAAc1C,EACT,OACE0C,IAAc3C,EAChB,KACE2C,IAAc7C,EAChB,OACE6C,IAAc5C,EAChB,QAEF,OCDYsR,0BACPxP,yBAAAA,IAAAA,EAAU,sBAElBqN,MAAO,MACPW,UAAW,GACX3M,SAAU,EACVP,UAAWvC,GACRyB,WAEAyP,GAAK,OACLC,GAAK,yCAGZpP,8BACkBQ,EAAgBrB,KAA1BO,QAAUc,UACZlB,EAAU,UACVkB,EAAYzC,GACduB,EAAQiJ,KAAKlM,GAEXmE,EAAYxC,GACdsB,EAAQiJ,KAAKnM,GAERkD,KAGT+P,uBAAc/O,OACNZ,EAAYP,KAAZO,QACF4P,GAAW,EACTrO,EAAaX,EAAbW,SACAT,EAAcF,EAAdE,UACFmB,EAAIrB,EAAM4B,OACVL,EAAIvB,EAAM6B,cAGR3B,EAAYd,EAAQc,YAItBS,EAHEvB,EAAQc,UAAYzC,GACtByC,EAAmB,IAANmB,EAAWjE,EAAkBiE,EAAI,EAAKhE,EAAiBC,EACpE0R,EAAW3N,IAAMxC,KAAKgQ,GACXpU,KAAKC,IAAIsF,EAAM4B,UAE1B1B,EAAmB,IAANqB,EAAWnE,EAAkBmE,EAAI,EAAKhE,EAAeC,EAClEwR,EAAWzN,IAAM1C,KAAKiQ,GACXrU,KAAKC,IAAIsF,EAAM6B,UAG9B7B,EAAME,UAAYA,EACX8O,GAAYrO,EAAWvB,EAAQgO,WAAalN,EAAYd,EAAQc,aAGzEqO,kBAASvO,UACAqO,GAAehH,UAAUkH,SAAStQ,KAAKY,KAAMmB,KRvEpC,OQwEN8L,SRxEM,EQwEoBjN,KAAKiN,QAAwBjN,KAAKkQ,cAAc/O,OAGtF0E,cAAK1E,QAEE6O,GAAK7O,EAAM4B,YACXkN,GAAK9O,EAAM6B,WAEZ3B,EAAYyO,GAAa3O,EAAME,WAE/BA,IACFF,EAAM0M,gBAAkB7N,KAAKO,QAAQqN,MAAQvM,eAEzCwE,eAAK1E,OAhE4BqO,ICRtBY,0BACP7P,mBAAAA,IAAAA,EAAU,IACpB8P,eACEzC,MAAO,QACPW,UAAW,GACX1J,SAAU,GACVxD,UAAWzC,EAAuBC,EAClC+C,SAAU,GACPrB,4CAIPM,iCACSkP,GAAcvH,UAAU3H,eAAezB,KAAKY,SAGrD0P,kBAASvO,OAEH0D,EADExD,EAAcrB,KAAKO,QAAnBc,iBAGFA,GAAazC,EAAuBC,GACtCgG,EAAW1D,EAAMoD,gBACRlD,EAAYzC,EACrBiG,EAAW1D,EAAMqD,iBACRnD,EAAYxC,IACrBgG,EAAW1D,EAAMsD,kBAGZ4L,YAAMX,mBAASvO,IAClBE,EAAYF,EAAMG,iBAClBH,EAAMW,SAAW9B,KAAKO,QAAQgO,WAC9BpN,EAAMyD,cAAgB5E,KAAKO,QAAQqB,UACnC/F,EAAIgJ,GAAY7E,KAAKO,QAAQsE,UAAY1D,EAAMiD,UAAY/F,KAGjEwH,cAAK1E,OACCE,EAAYyO,GAAa3O,EAAMG,iBAC/BD,QACGxB,QAAQgG,KAAK7F,KAAKO,QAAQqN,MAAQvM,EAAWF,QAG/CtB,QAAQgG,KAAK7F,KAAKO,QAAQqN,MAAOzM,OAzCGqO,ICHxBc,0BACP/P,mBAAAA,IAAAA,EAAU,IACpB8P,eACEzC,MAAO,QACPW,UAAW,EACX3M,SAAU,GACPrB,4CAIPM,gCACS,CAAC7D,MAGV0S,kBAASvO,UACAkP,YAAMX,mBAASvO,KACjBvF,KAAKC,IAAIsF,EAAMuD,MAAQ,GAAK1E,KAAKO,QAAQgO,WV1B9B,EU0B2CvO,KAAKiN,UAGlEpH,cAAK1E,MACiB,IAAhBA,EAAMuD,MAAa,KACjB6L,EAAQpP,EAAMuD,MAAQ,EAAI,KAAO,MACrCvD,EAAM0M,gBAAkB7N,KAAKO,QAAQqN,MAAQ2C,cAEzC1K,eAAK1E,OAxB8BqO,ICAxBgB,0BACPjQ,mBAAAA,IAAAA,EAAU,IACpB8P,eACEzC,MAAO,SACPW,UAAW,EACX3M,SAAU,GACPrB,4CAIPM,gCACS,CAAC7D,MAGV0S,kBAASvO,UACAkP,YAAMX,mBAASvO,KACjBvF,KAAKC,IAAIsF,EAAMwD,UAAY3E,KAAKO,QAAQgO,WX1B7B,EW0B0CvO,KAAKiN,WAhBrBuC,ICSzBiB,0BACPlQ,yBAAAA,IAAAA,EAAU,sBAElBqN,MAAO,QACPhM,SAAU,EACV0M,KAAM,IACNC,UAAW,GACRhO,WAEAoO,OAAS,OACTC,OAAS,yCAGhB/N,gCACS,CAAC/D,MAGVoR,iBAAQ/M,cACAZ,EAAYP,KAAZO,QACFuO,EAAgB3N,EAAMS,SAAS3G,SAAWsF,EAAQqB,SAClDmN,EAAgB5N,EAAMW,SAAWvB,EAAQgO,UACzCmC,EAAYvP,EAAMa,UAAYzB,EAAQ+N,aAErCM,OAASzN,GAIT4N,IAAkBD,GAAkB3N,EAAMiD,WAAa/F,EAAYC,KAAkBoS,OACnFzC,aACA,GAAI9M,EAAMiD,UAAYhG,OACtB6P,aACAU,OAAS9C,WAAW,WACvBuD,EAAKnC,MZjDO,EYkDZmC,EAAKtB,WACJvN,EAAQ+N,WACN,GAAInN,EAAMiD,UAAY/F,SZpDb,SAGC,MYuDnB4P,iBACEqB,aAAatP,KAAK2O,WAGpB9I,cAAK1E,GZ9Da,IY+DZnB,KAAKiN,QAIL9L,GAAUA,EAAMiD,UAAY/F,OACzBwB,QAAQgG,KAAQ7F,KAAKO,QAAQqN,WAAWzM,SAExCyN,OAAO/L,UAAY/G,SACnB+D,QAAQgG,KAAK7F,KAAKO,QAAQqN,MAAO5N,KAAK4O,cAtDJ1B,OCX9B,CAQdyD,WAAW,EASXnQ,YAAa3D,EAOb8D,QAAQ,EAURqG,YAAa,KAQb4J,WAAY,KAQZC,SAAU,CAOTC,WAAY,OAQZC,YAAa,OAUbC,aAAc,OAQdC,eAAgB,OAQhBC,SAAU,OASVC,kBAAmB,kBAWRC,GAAS,CACpB,CAACZ,GAAkB,CAAE7P,QAAQ,IAC7B,CAAC2P,GAAiB,CAAE3P,QAAQ,GAAS,CAAC,WACtC,CAACyP,GAAiB,CAAE/O,UAAWzC,IAC/B,CAACmR,GAAe,CAAE1O,UAAWzC,GAAwB,CAAC,UACtD,CAACuP,IACD,CAACA,GAAe,CAAEP,MAAO,YAAaQ,KAAM,GAAK,CAAC,QAClD,CAACqC,KCpGH,SAASY,GAAexR,EAASyR,OAM3BlV,EALI8D,EAAYL,EAAZK,QAEHA,EAAQ1E,QAKbyD,EAAKY,EAAQU,QAAQsQ,SAAU,SAAC/Q,EAAOyR,GACrCnV,EAAOJ,EAASkE,EAAQ1E,MAAO+V,GAG7BrR,EAAQ1E,MAAMY,GAFZkV,GACFzR,EAAQ2R,YAAYpV,GAAQ8D,EAAQ1E,MAAMY,GACpB0D,GAEAD,EAAQ2R,YAAYpV,IAAS,KAGlDkV,IACHzR,EAAQ2R,YAAc,SA0BLC,yBACPvR,EAASK,OC1DqBV,cD2DnCU,QAAU5F,EAAO,GAAI+W,GAAUnR,GAAW,SAE1CA,QAAQyG,YAAchH,KAAKO,QAAQyG,aAAe9G,OAElDyR,SAAW,QACXpQ,QAAU,QACVd,YAAc,QACd+Q,YAAc,QAEdtR,QAAUA,OACViB,MCtDA,KAfmCtB,EDqEPG,MClE7BO,QAAUqQ,aAGLhT,EACF0K,GACEzK,EACFuM,GACGzM,EAGHmO,GAFAZ,KAISrL,EAAS0F,QDuDpB/E,YAAc,IAAIZ,EAAYI,KAAMA,KAAKO,QAAQC,aAEtD6Q,GAAerR,MAAM,GAErBf,EAAKe,KAAKO,QAAQE,YAAa,SAAAmR,OACvBlR,EAAagI,EAAK4I,IAAI,IAAKM,EAAK,GAAIA,EAAK,KAE/CA,EAAK,IAAMlR,EAAW4M,cAAcsE,EAAK,IACzCA,EAAK,IAAMlR,EAAW8M,eAAeoE,EAAK,KACzC5R,iCASLD,aAAIQ,UACF5F,EAAOqF,KAAKO,QAASA,GAGjBA,EAAQC,kBACLA,YAAYF,SAEfC,EAAQyG,mBAEL7F,MAAMoG,eACNpG,MAAMvG,OAAS2F,EAAQyG,iBACvB7F,MAAMgG,QAENnH,QAUT6R,cAAKC,QACEvQ,QAAQwQ,QAAUD,EA5GP,EADP,KAuHXhM,mBAAUkG,OACAzK,EAAYvB,KAAZuB,YAEJA,EAAQwQ,aAORrR,OAFCF,YAAYU,gBAAgB8K,OAGzBvL,EAAgBT,KAAhBS,YAKFuR,EAAkBzQ,EAAlByQ,gBAIDA,GAAkBA,GdzJP,EcyJwBA,EAAc/E,SAEpD+E,EADAzQ,EAAQyQ,cAAgB,cAItBxV,EAAI,EAEDA,EAAIiE,EAAYxF,QACrByF,EAAaD,EAAYjE,GAlJX,IA0JV+E,EAAQwQ,SACTC,GAAiBtR,IAAesR,IACjCtR,EAAWiN,iBAAiBqE,GAG5BtR,EAAWuN,QAFXvN,EAAWoF,UAAUkG,IAOlBgG,MAAiBtR,EAAWuM,QAE/B+E,EADAzQ,EAAQyQ,cAAgBtR,GAG1BlE,QAUJuQ,aAAIrM,MACEA,aAAsBwM,UACjBxM,UAGDD,EAAgBT,KAAhBS,YAECjE,EAAI,EAAGA,EAAIiE,EAAYxF,OAAQuB,OAClCiE,EAAYjE,GAAG+D,QAAQqN,QAAUlN,SAC5BD,EAAYjE,UAGhB,QAST8U,aAAI5Q,MACE8L,GAAe9L,EAAY,MAAOV,aAC7BA,SAIHiS,EAAWjS,KAAK+M,IAAIrM,EAAWH,QAAQqN,cAEzCqE,QACGC,OAAOD,QAGTxR,YAAY2I,KAAK1I,IACtBA,EAAWb,QAAUG,MAEhBQ,YAAYF,SACVI,KASTwR,gBAAOxR,MACD8L,GAAe9L,EAAY,SAAUV,aAChCA,SAGHmS,EAAmBnS,KAAK+M,IAAIrM,MAG9BA,EAAY,KACND,EAAgBT,KAAhBS,YACF1F,EAAQyM,GAAQ/G,EAAa0R,IAEpB,IAAXpX,IACF0F,EAAY4I,OAAOtO,EAAO,QACrByF,YAAYF,iBAIdN,QAUToS,YAAGC,EAAQlM,WACMvJ,IAAXyV,QAAoCzV,IAAZuJ,SACnBnG,SAGD2R,EAAa3R,KAAb2R,gBAER1S,EAAK8G,GAASsM,GAAS,SAAAzE,GACrB+D,EAAS/D,GAAS+D,EAAS/D,IAAU,GACrC+D,EAAS/D,GAAOxE,KAAKjD,KAEhBnG,QASTsS,aAAID,EAAQlM,WACKvJ,IAAXyV,SACKrS,SAGD2R,EAAa3R,KAAb2R,gBAER1S,EAAK8G,GAASsM,GAAS,SAAAzE,GAChBzH,EAGHwL,EAAS/D,IAAU+D,EAAS/D,GAAOvE,OAAO7B,GAAQmK,EAAS/D,GAAQzH,GAAU,UAFtEwL,EAAS/D,KAKb5N,QAQT6F,cAAK+H,EAAO2E,GAjQd,IAAyB3E,EAAO2E,EACxBC,EAkQAxS,KAAKO,QAAQoQ,YAnQI/C,EAoQHA,EApQU2E,EAoQHA,GAnQrBC,EAAejX,SAASkX,YAAY,UAE7BC,UAAU9E,GAAO,GAAM,IACpC4E,EAAaG,QAAUJ,GAClB3X,OAAOgY,cAAcJ,QAmQlBb,EAAW3R,KAAK2R,SAAS/D,IAAU5N,KAAK2R,SAAS/D,GAAOrR,WAEzDoV,GAAaA,EAAS1W,QAI3BsX,EAAKnM,KAAOwH,EACZ2E,EAAK9Q,eAAiB,WACpB8Q,EAAKnR,SAASK,0BAGZjF,EAAI,EAEDA,EAAImV,EAAS1W,QAClB0W,EAASnV,GAAG+V,GACZ/V,QASJ+K,wBACOrH,SAAWmR,GAAerR,MAAM,QAEhC2R,SAAW,QACXpQ,QAAU,QACVJ,MAAMoG,eACNrH,QAAU,WElVb2S,GAAyB,CAC7B7I,WAAY5L,EACZ6L,UhDIiB,EgDHjBC,SAAU7L,EACV8L,YAAa7L,GAYMwU,kCAEbvK,EAAQuK,EAAiBtK,iBAC7BD,EAAMlB,SAZyB,aAa/BkB,EAAMjB,MAZyB,4DActBtM,kBACJ+X,SAAU,8BAGjB5M,iBAAQe,OACFd,EAAOyM,GAAuB3L,EAAGd,SAGjCA,IAAShI,SACN2U,SAAU,GAGZ/S,KAAK+S,aAINzI,EAuBR,SAAgCpD,EAAId,OAC9B4M,EAAM1J,GAAQpC,EAAGoD,SACjB2I,EAAU3J,GAAQpC,EAAGwD,gBAErBtE,GAAQ/H,EAAYC,KACtB0U,EAAMxJ,GAAYwJ,EAAIpS,OAAOqS,GAAU,cAAc,UAGhD,CAACD,EAAKC,IA/B0B7T,KAAKY,KAAMkH,EAAId,GAGhDA,GAAQ/H,EAAYC,IAAiBgM,EAAQ,GAAGrP,OAASqP,EAAQ,GAAGrP,QAAW,SAC5E8X,SAAU,QAGZjM,SAAS9G,KAAKH,QAASuG,EAAM,CAChCxE,SAAU0I,EAAQ,GAClB5E,gBAAiB4E,EAAQ,GACzBvB,YAAa9K,EACbmD,SAAU8F,SAjC8BL,GCnB/B,SAASqM,GAAUC,EAAQ5B,EAAM6B,OAC1CC,wBAA2C9B,OAAS6B,kBACjD,eACDE,EAAI,IAAIC,MAAM,mBACdC,EAAQF,GAAKA,EAAEE,MAAQF,EAAEE,MAAM1K,QAAQ,kBAAmB,IACzDA,QAAQ,cAAe,IACvBA,QAAQ,6BAA8B,kBAAoB,sBAE3D2K,EAAMhX,OAAOiX,UAAYjX,OAAOiX,QAAQC,MAAQlX,OAAOiX,QAAQD,YAC/DA,GACFA,EAAIrU,KAAK3C,OAAOiX,QAASL,EAAoBG,GAExCL,EAAO5T,MAAMS,KAAMhF,YCV9B,IAAM4Y,GAASV,GAAU,SAACW,EAAMpM,EAAKqM,WAC/BC,EAAOrZ,OAAOqZ,KAAKtM,GACnBjL,EAAI,EACDA,EAAIuX,EAAK9Y,UACT6Y,GAAUA,QAA2BlX,IAAlBiX,EAAKE,EAAKvX,OAChCqX,EAAKE,EAAKvX,IAAMiL,EAAIsM,EAAKvX,KAE3BA,WAEKqX,GACN,SAAU,iBCVPC,GAAQZ,GAAU,SAACW,EAAMpM,UACtBmM,GAAOC,EAAMpM,GAAK,IACxB,QAAS,iBCJG,SAASuM,GAAQC,EAAOC,EAAMC,OAEvCC,EADAC,EAAQH,EAAK1L,WAGjB4L,EAASH,EAAMzL,UAAY9N,OAAO4Z,OAAOD,IAClCE,YAAcN,EACrBG,EAAOI,OAASH,EAEZF,GACFxZ,EAAOyZ,EAAQD,GCVJ,SAASM,GAAO/H,EAAIvN,UAC1B,kBACEuN,EAAGnN,MAAMJ,EAASnE,kCCwDR0Z,WA6DRxU,EAASK,mBAAAA,IAAAA,EAAU,IACvB,IAAIkR,GAAQvR,KAClBO,YAEQ2Q,aAEL7Q,YAnEemU,EAKbC,QAAU,YALGD,EAMb5V,cAAgBA,EANH4V,EAOb/V,eAAiBA,EAPJ+V,EAQblW,eAAiBA,EARJkW,EASbjW,gBAAkBA,EATLiW,EAUbhW,aAAeA,EAVFgW,EAWb9V,qBAAuBA,EAXV8V,EAYb7V,mBAAqBA,EAZR6V,EAabnW,eAAiBA,EAbJmW,EAcb/V,eAAiBA,EAdJ+V,EAebtW,YAAcA,EAfDsW,EAgBbE,WtDhEW,EsDgDEF,EAiBZrW,UAAYA,EAjBAqW,EAkBbpW,aAAeA,EAlBFoW,EAmBbG,etBpFe,EsBiEFH,EAoBbI,YtBpFY,EsBgECJ,EAqBbK,ctBpFc,EsB+DDL,EAsBbM,YtBpFY,EsB8DCN,EAuBbO,iBtBrFY,EsB8DCP,EAwBbQ,gBtBpFgB,GsB4DHR,EAyBbS,atBpFa,GsB2DAT,EA0BbjD,QAAUA,GA1BGiD,EA2Bb7N,MAAQA,EA3BK6N,EA4Bb9U,YAAcA,EA5BD8U,EA6BbtK,WAAaA,GA7BAsK,EA8BbxJ,WAAaA,GA9BAwJ,EA+BbpM,kBAAoBA,GA/BPoM,EAgCb5I,gBAAkBA,GAhCL4I,EAiCb5B,iBAAmBA,GAjCN4B,EAkCbxH,WAAaA,GAlCAwH,EAmCblF,eAAiBA,GAnCJkF,EAoCbU,IAAMjH,GApCOuG,EAqCbW,IAAMtF,GArCO2E,EAsCbY,MAAQlF,GAtCKsE,EAuCba,MAAQjF,GAvCKoE,EAwCbc,OAAShF,GAxCIkE,EAyCbe,MAAQhF,GAzCKiE,EA0CbtC,GAAKnM,GA1CQyO,EA2CbpC,IAAMhM,GA3COoO,EA4CbzV,KAAOA,EA5CMyV,EA6CbZ,MAAQA,GA7CKY,EA8Cbd,OAASA,GA9CIc,EA+CbD,OAASA,GA/CIC,EAgDb/Z,OAASA,EAhDI+Z,EAiDbV,QAAUA,GAjDGU,EAkDbD,OAASA,GAlDIC,EAmDb1Y,SAAWA,EAnDE0Y,EAoDbpL,QAAUA,GApDGoL,EAqDblN,QAAUA,GArDGkN,EAsDblL,YAAcA,GAtDDkL,EAuDb3O,SAAWA,GAvDE2O,EAwDbrV,SAAWA,EAxDEqV,EAyDbxS,UAAYA,EAzDCwS,EA0DbzO,kBAAoBA,GA1DPyO,EA2DbpO,qBAAuBA,GA3DVoO,EA4DbhD,SAAW/W,EAAO,GAAI+W,GAAU,CAAEN,OAAAA,KA5DrBsD"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/package.json b/iut-expo-starter/node_modules/@egjs/hammerjs/package.json new file mode 100644 index 00000000..ee381b46 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/package.json @@ -0,0 +1,75 @@ +{ + "name": "@egjs/hammerjs", + "title": "Hammer.JS", + "description": "A javascript library for multi-touch gestures", + "version": "2.0.17", + "homepage": "http://naver.github.io/egjs", + "license": "MIT", + "keywords": [ + "touch", + "gestures" + ], + "repository": { + "type": "git", + "url": "git://github.com/naver/hammer.js.git" + }, + "bugs": { + "url": "https://github.com/naver/hammer.js/issues" + }, + "devDependencies": { + "@babel/cli": "^7.0.0", + "@babel/core": "^7.0.1", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "babel-plugin-no-side-effect-class-properties": "0.0.4", + "bannerize": "^1.0.2", + "blanket": "^1.2.3", + "changelogplease": "^1.2.0", + "ember-suave": "^4.0.0", + "git-tags": "^0.2.4", + "hammer-simulator": "git://github.com/hammerjs/simulator#master", + "jquery": "^3.1.0", + "jquery-hammerjs": "2.0.x", + "jscs": "^3.0.7", + "jshint": "^2.9.2", + "jshint-stylish": "^2.2.0", + "lodash-compat": "^3.10.2", + "node-qunit-phantomjs": "^1.4.0", + "print-sizes": "^0.1.0", + "qunitjs": "^2.0.0", + "rollup": "^0.66.0", + "rollup-plugin-analyzer": "^2.1.0", + "rollup-plugin-babel": "^4.0.3", + "rollup-plugin-replace": "^2.1.0", + "rollup-plugin-uglify": "^6.0.0", + "run-when-changed": "^1.2.0", + "serve": "^1.4.0", + "uglify-js": "^2.7.0" + }, + "engines": { + "node": ">=0.8.0" + }, + "scripts": { + "build": "npm run rollup && npm run test:node && npm run printsizes", + "printsizes": "print-sizes ./dist --exclude=\\.map", + "testbuild": "rollup -c ./testrollup.config.js", + "bannerize": "bannerize hammer.js hammer.min.js", + "connect": "serve -p 8000 ./", + "rollup": "rollup -c", + "jshint": "jshint src/**/*.js tests/unit/*.js tests/unit/gestures/*.js --config .jshintrc --verbose --reporter=node_modules/jshint-stylish", + "jscs": " jscs src/**/*.js tests/unit/*.js tests/unit/gestures/*.js --config=./.jscsrc", + "qunit": "phantomjs node_modules/qunit-phantomjs-runner/runner-list.js tests/unit/index.html 15", + "watch": "run-when-changed --watch 'src/**/*.js' --watch 'tests/unit/*.js' --watch 'tests/unit/gestures/*.js' --exec 'npm run watch-tasks'", + "watch-tasks": "npm run rollup && npm run string-replace && npm run uglify && npm run jshint && npm run jscs", + "test": "npm run build && npm run qunit", + "test:node": "node ./dist/hammer.js" + }, + "sideEffects": false, + "module": "dist/hammer.esm.js", + "main": "dist/hammer.js", + "types": "src/hammer.d.ts", + "dependencies": { + "@types/hammerjs": "^2.0.36" + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/replace.config.js b/iut-expo-starter/node_modules/@egjs/hammerjs/replace.config.js new file mode 100644 index 00000000..65c289c2 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/replace.config.js @@ -0,0 +1,7 @@ +const version = require("./package.json").version; + +module.exports = { + files: "./dist/*.js", + from: /#__VERSION__#/g, + to: version, +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/rollup.config.js b/iut-expo-starter/node_modules/@egjs/hammerjs/rollup.config.js new file mode 100644 index 00000000..b1d97f9f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/rollup.config.js @@ -0,0 +1,65 @@ +import babel from "rollup-plugin-babel"; +import { uglify } from "rollup-plugin-uglify"; +import replace from "rollup-plugin-replace"; + +const banner = require("./banner"); +const version = require("./package.json").version; +const replaceVersion = replace({"#__VERSION__#": version, delimiters: ["", ""]}); + +export default [ + { + input: "src/index.js", + plugins: [babel({ exclude: "node_modules/**" }), replaceVersion], + output: { + banner: banner, + format: "es", + freeze: false, + exprots: "named", + interop: false, + sourcemap: true, + file: "./dist/hammer.esm.js", + }, + }, + { + input: "src/hammer.js", + plugins: [babel({ exclude: "node_modules/**" }), replaceVersion], + output: { + banner: banner, + format: "umd", + name: "Hammer", + exports: "default", + freeze: false, + interop: false, + sourcemap: true, + file: "./dist/hammer.js", + }, + }, + { + input: "src/hammer.js", + plugins: [babel({ exclude: "node_modules/**" }), replaceVersion, uglify({ + sourcemap: true, + output: { + comments: function (node, comment) { + const text = comment.value; + const type = comment.type; + + if (type === "comment2") { + // multiline comment + return /Naver/.test(text); + } + return false; + }, + }, + })], + output: { + banner: banner, + format: "umd", + name: "Hammer", + exports: "default", + freeze: false, + interop: false, + sourcemap: true, + file: "./dist/hammer.min.js", + }, + }, +]; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/browser.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/browser.js new file mode 100644 index 00000000..c86281f6 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/browser.js @@ -0,0 +1,13 @@ +/* eslint-disable no-new-func, no-nested-ternary */ + +let win; + +if (typeof window === "undefined") { + // window is undefined in node.js + win = {}; +} else { + win = window; +} +/* eslint-enable no-new-func, no-nested-ternary */ + +export {win as window}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/defaults.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/defaults.js new file mode 100644 index 00000000..0294d9e0 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/defaults.js @@ -0,0 +1,129 @@ +import { TOUCH_ACTION_COMPUTE } from "./touchactionjs/touchaction-Consts"; +import TapRecognizer from "./recognizers/tap"; +import PanRecognizer from "./recognizers/pan"; +import SwipeRecognizer from "./recognizers/swipe"; +import PinchRecognizer from "./recognizers/pinch"; +import RotateRecognizer from "./recognizers/rotate"; +import PressRecognizer from "./recognizers/press"; +import {DIRECTION_HORIZONTAL} from "./inputjs/input-consts"; + +export default { + /** + * @private + * set if DOM events are being triggered. + * But this is slower and unused by simple implementations, so disabled by default. + * @type {Boolean} + * @default false + */ + domEvents: false, + + /** + * @private + * The value for the touchAction property/fallback. + * When set to `compute` it will magically set the correct value based on the added recognizers. + * @type {String} + * @default compute + */ + touchAction: TOUCH_ACTION_COMPUTE, + + /** + * @private + * @type {Boolean} + * @default true + */ + enable: true, + + /** + * @private + * EXPERIMENTAL FEATURE -- can be removed/changed + * Change the parent input target element. + * If Null, then it is being set the to main element. + * @type {Null|EventTarget} + * @default null + */ + inputTarget: null, + + /** + * @private + * force an input class + * @type {Null|Function} + * @default null + */ + inputClass: null, + + /** + * @private + * Some CSS properties can be used to improve the working of Hammer. + * Add them to this method and they will be set when creating a new Manager. + * @namespace + */ + cssProps: { + /** + * @private + * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userSelect: "none", + + /** + * @private + * Disable the Windows Phone grippers when pressing an element. + * @type {String} + * @default 'none' + */ + touchSelect: "none", + + /** + * @private + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @type {String} + * @default 'none' + */ + touchCallout: "none", + + /** + * @private + * Specifies whether zooming is enabled. Used by IE10> + * @type {String} + * @default 'none' + */ + contentZooming: "none", + + /** + * @private + * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userDrag: "none", + + /** + * @private + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in iOS. This property obeys the alpha value, if specified. + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: "rgba(0,0,0,0)", + }, +}; + +/** + * @private + * Default recognizer setup when calling `Hammer()` + * When creating a new Manager these will be skipped. + * This is separated with other defaults because of tree-shaking. + * @type {Array} + */ +export const preset = [ + [RotateRecognizer, { enable: false }], + [PinchRecognizer, { enable: false }, ['rotate']], + [SwipeRecognizer, { direction: DIRECTION_HORIZONTAL }], + [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']], + [TapRecognizer], + [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']], + [PressRecognizer] +]; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.d.ts b/iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.d.ts new file mode 100644 index 00000000..792d3a64 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.d.ts @@ -0,0 +1,50 @@ +import * as Hammer from "hammerjs"; + +export default Hammer; +export { + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + STATE_POSSIBLE, + STATE_BEGAN, + STATE_CHANGED, + STATE_ENDED, + STATE_RECOGNIZED, + STATE_CANCELLED, + STATE_FAILED, + + DIRECTION_NONE, + DIRECTION_LEFT, + DIRECTION_RIGHT, + DIRECTION_UP, + DIRECTION_DOWN, + DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL, + DIRECTION_ALL, + Manager, + Input, + TouchAction, + TouchInput, + MouseInput, + PointerEventInput, + TouchMouseInput, + SingleTouchInput, + Recognizer, + AttrRecognizer, + Tap, + Pan, + Swipe, + Pinch, + Rotate, + Press, + on, + off, + each, + merge, + extend, + inherit, + bindFn, + prefixed, + defaults, +} from "hammerjs"; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.js new file mode 100644 index 00000000..84a3ef40 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/hammer.js @@ -0,0 +1,136 @@ +import Manager from "./manager"; +import defaults, { preset } from "./defaults"; +import assign from './utils/assign'; +import { + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + DIRECTION_NONE, + DIRECTION_LEFT, + DIRECTION_RIGHT, + DIRECTION_UP, + DIRECTION_DOWN, + DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL, + DIRECTION_ALL, +} from "./inputjs/input-consts"; +import { + STATE_POSSIBLE, + STATE_BEGAN, + STATE_CHANGED, + STATE_ENDED, + STATE_RECOGNIZED, + STATE_CANCELLED, + STATE_FAILED, +} from "./recognizerjs/recognizer-consts"; + +import Input from "./inputjs/input-constructor"; +import TouchAction from "./touchactionjs/touchaction-constructor"; +import TouchInput from "./input/touch"; +import MouseInput from "./input/mouse"; +import PointerEventInput from "./input/pointerevent"; +import SingleTouchInput from "./input/singletouch"; +import TouchMouseInput from "./input/touchmouse"; + +import Recognizer from "./recognizerjs/recognizer-constructor"; +import AttrRecognizer from "./recognizers/attribute"; +import TapRecognizer from "./recognizers/tap"; +import PanRecognizer from "./recognizers/pan"; +import SwipeRecognizer from "./recognizers/swipe"; +import PinchRecognizer from "./recognizers/pinch"; +import RotateRecognizer from "./recognizers/rotate"; +import PressRecognizer from "./recognizers/press"; + +import addEventListeners from "./utils/add-event-listeners"; +import removeEventListeners from "./utils/remove-event-listeners"; +import each from "./utils/each"; +import merge from "./utils/merge"; +import extend from "./utils/extend"; +import inherit from "./utils/inherit"; +import bindFn from "./utils/bind-fn"; +import prefixed from "./utils/prefixed"; +import toArray from "./utils/to-array"; +import uniqueArray from "./utils/unique-array"; +import splitStr from "./utils/split-str"; +import inArray from "./utils/in-array"; +import boolOrFn from "./utils/bool-or-fn"; +import hasParent from "./utils/has-parent"; +/** + * @private + * Simple way to create a manager with a default set of recognizers. + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ +export default class Hammer { + /** + * @private + * @const {string} + */ + static VERSION = "#__VERSION__#"; + static DIRECTION_ALL = DIRECTION_ALL; + static DIRECTION_DOWN = DIRECTION_DOWN; + static DIRECTION_LEFT = DIRECTION_LEFT; + static DIRECTION_RIGHT = DIRECTION_RIGHT; + static DIRECTION_UP = DIRECTION_UP; + static DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL; + static DIRECTION_VERTICAL = DIRECTION_VERTICAL; + static DIRECTION_NONE = DIRECTION_NONE; + static DIRECTION_DOWN = DIRECTION_DOWN; + static INPUT_START = INPUT_START; + static INPUT_MOVE = INPUT_MOVE; + static INPUT_END = INPUT_END; + static INPUT_CANCEL = INPUT_CANCEL; + static STATE_POSSIBLE = STATE_POSSIBLE; + static STATE_BEGAN = STATE_BEGAN; + static STATE_CHANGED = STATE_CHANGED; + static STATE_ENDED = STATE_ENDED; + static STATE_RECOGNIZED = STATE_RECOGNIZED; + static STATE_CANCELLED = STATE_CANCELLED; + static STATE_FAILED = STATE_FAILED; + static Manager = Manager; + static Input = Input; + static TouchAction = TouchAction; + static TouchInput = TouchInput; + static MouseInput = MouseInput; + static PointerEventInput = PointerEventInput; + static TouchMouseInput = TouchMouseInput; + static SingleTouchInput = SingleTouchInput; + static Recognizer = Recognizer; + static AttrRecognizer = AttrRecognizer; + static Tap = TapRecognizer; + static Pan = PanRecognizer; + static Swipe = SwipeRecognizer; + static Pinch = PinchRecognizer; + static Rotate = RotateRecognizer; + static Press = PressRecognizer; + static on = addEventListeners; + static off = removeEventListeners; + static each = each; + static merge = merge; + static extend = extend; + static bindFn = bindFn; + static assign = assign; + static inherit = inherit; + static bindFn = bindFn; + static prefixed = prefixed; + static toArray = toArray; + static inArray = inArray; + static uniqueArray = uniqueArray; + static splitStr = splitStr; + static boolOrFn = boolOrFn; + static hasParent = hasParent; + static addEventListeners = addEventListeners; + static removeEventListeners = removeEventListeners; + static defaults = assign({}, defaults, { preset }); + constructor(element, options = {}) { + return new Manager(element, { + recognizers: [ + // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] + ...preset + ], + ...options, + }); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/index.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/index.js new file mode 100644 index 00000000..64ab0a51 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/index.js @@ -0,0 +1,123 @@ + +import Hammer from "./hammer"; +import assign from "./utils/assign"; + +import { + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + DIRECTION_NONE, + DIRECTION_LEFT, + DIRECTION_RIGHT, + DIRECTION_UP, + DIRECTION_DOWN, + DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL, + DIRECTION_ALL, +} from "./inputjs/input-consts"; +import { + STATE_POSSIBLE, + STATE_BEGAN, + STATE_CHANGED, + STATE_ENDED, + STATE_RECOGNIZED, + STATE_CANCELLED, + STATE_FAILED, +} from "./recognizerjs/recognizer-consts"; + +import Manager from "./manager"; +import Input from "./inputjs/input-constructor"; +import TouchAction from "./touchactionjs/touchaction-constructor"; +import TouchInput from "./input/touch"; +import MouseInput from "./input/mouse"; +import PointerEventInput from "./input/pointerevent"; +import SingleTouchInput from "./input/singletouch"; +import TouchMouseInput from "./input/touchmouse"; + +import Recognizer from "./recognizerjs/recognizer-constructor"; +import AttrRecognizer from "./recognizers/attribute"; +import TapRecognizer from "./recognizers/tap"; +import PanRecognizer from "./recognizers/pan"; +import SwipeRecognizer from "./recognizers/swipe"; +import PinchRecognizer from "./recognizers/pinch"; +import RotateRecognizer from "./recognizers/rotate"; +import PressRecognizer from "./recognizers/press"; + +import addEventListeners from "./utils/add-event-listeners"; +import removeEventListeners from "./utils/remove-event-listeners"; +import each from "./utils/each"; +import merge from "./utils/merge"; +import extend from "./utils/extend"; +import inherit from "./utils/inherit"; +import bindFn from "./utils/bind-fn"; +import prefixed from "./utils/prefixed"; +import toArray from "./utils/to-array"; +import uniqueArray from "./utils/unique-array"; +import splitStr from "./utils/split-str"; +import inArray from "./utils/in-array"; +import boolOrFn from "./utils/bool-or-fn"; +import hasParent from "./utils/has-parent"; + +// this prevents errors when Hammer is loaded in the presence of an AMD +// style loader but by script tag, not by the loader. + +const defaults = Hammer.defaults; + +export { + Hammer as default, + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + STATE_POSSIBLE, + STATE_BEGAN, + STATE_CHANGED, + STATE_ENDED, + STATE_RECOGNIZED, + STATE_CANCELLED, + STATE_FAILED, + + DIRECTION_NONE, + DIRECTION_LEFT, + DIRECTION_RIGHT, + DIRECTION_UP, + DIRECTION_DOWN, + DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL, + DIRECTION_ALL, + Manager, + Input, + TouchAction, + TouchInput, + MouseInput, + PointerEventInput, + TouchMouseInput, + SingleTouchInput, + Recognizer, + AttrRecognizer, + TapRecognizer as Tap, + PanRecognizer as Pan, + SwipeRecognizer as Swipe, + PinchRecognizer as Pinch, + RotateRecognizer as Rotate, + PressRecognizer as Press, + addEventListeners as on, + removeEventListeners as off, + each, + merge, + extend, + assign, + inherit, + bindFn, + prefixed, + toArray, + inArray, + uniqueArray, + splitStr, + boolOrFn, + hasParent, + addEventListeners, + removeEventListeners, + defaults, +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/mouse.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/mouse.js new file mode 100644 index 00000000..bf7df754 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/mouse.js @@ -0,0 +1,67 @@ +import { + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_TYPE_MOUSE +} from '../inputjs/input-consts'; +import Input from '../inputjs/input-constructor'; + +const MOUSE_INPUT_MAP = { + mousedown: INPUT_START, + mousemove: INPUT_MOVE, + mouseup: INPUT_END +}; + +const MOUSE_ELEMENT_EVENTS = 'mousedown'; +const MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; + +/** + * @private + * Mouse events input + * @constructor + * @extends Input + */ +export default class MouseInput extends Input { + constructor() { + var proto = MouseInput.prototype; + proto.evEl = MOUSE_ELEMENT_EVENTS; + proto.evWin = MOUSE_WINDOW_EVENTS; + + super(...arguments); + this.pressed = false; // mousedown state + } + + /** + * @private + * handle mouse events + * @param {Object} ev + */ + handler(ev) { + let eventType = MOUSE_INPUT_MAP[ev.type]; + + // on start we want to have the left mouse button down + if (eventType & INPUT_START && ev.button === 0) { + this.pressed = true; + } + + if (eventType & INPUT_MOVE && ev.which !== 1) { + eventType = INPUT_END; + } + + // mouse must be down + if (!this.pressed) { + return; + } + + if (eventType & INPUT_END) { + this.pressed = false; + } + + this.callback(this.manager, eventType, { + pointers: [ev], + changedPointers: [ev], + pointerType: INPUT_TYPE_MOUSE, + srcEvent: ev + }); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/pointerevent.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/pointerevent.js new file mode 100644 index 00000000..6339324f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/pointerevent.js @@ -0,0 +1,104 @@ +import { + INPUT_START, + INPUT_END, + INPUT_CANCEL, + INPUT_MOVE, + INPUT_TYPE_TOUCH, + INPUT_TYPE_MOUSE, + INPUT_TYPE_PEN, + INPUT_TYPE_KINECT +} from '../inputjs/input-consts'; +import {window} from "../browser"; +import Input from '../inputjs/input-constructor'; +import inArray from '../utils/in-array'; + +const POINTER_INPUT_MAP = { + pointerdown: INPUT_START, + pointermove: INPUT_MOVE, + pointerup: INPUT_END, + pointercancel: INPUT_CANCEL, + pointerout: INPUT_CANCEL +}; + +// in IE10 the pointer types is defined as an enum +const IE10_POINTER_TYPE_ENUM = { + 2: INPUT_TYPE_TOUCH, + 3: INPUT_TYPE_PEN, + 4: INPUT_TYPE_MOUSE, + 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 +}; + +let POINTER_ELEMENT_EVENTS = 'pointerdown'; +let POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; + +// IE10 has prefixed support, and case-sensitive +if (window.MSPointerEvent && !window.PointerEvent) { + POINTER_ELEMENT_EVENTS = 'MSPointerDown'; + POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; +} + +/** + * @private + * Pointer events input + * @constructor + * @extends Input + */ +export default class PointerEventInput extends Input { + constructor() { + var proto = PointerEventInput.prototype; + + proto.evEl = POINTER_ELEMENT_EVENTS; + proto.evWin = POINTER_WINDOW_EVENTS; + super(...arguments); + this.store = (this.manager.session.pointerEvents = []); + } + + /** + * @private + * handle mouse events + * @param {Object} ev + */ + handler(ev) { + let { store } = this; + let removePointer = false; + + let eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); + let eventType = POINTER_INPUT_MAP[eventTypeNormalized]; + let pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; + + let isTouch = (pointerType === INPUT_TYPE_TOUCH); + + // get index of the event in the store + let storeIndex = inArray(store, ev.pointerId, 'pointerId'); + + // start and mouse must be down + if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { + if (storeIndex < 0) { + store.push(ev); + storeIndex = store.length - 1; + } + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + removePointer = true; + } + + // it not found, so the pointer hasn't been down (so it's probably a hover) + if (storeIndex < 0) { + return; + } + + // update the event in the store + store[storeIndex] = ev; + + this.callback(this.manager, eventType, { + pointers: store, + changedPointers: [ev], + pointerType, + srcEvent: ev + }); + + if (removePointer) { + // remove from the store + store.splice(storeIndex, 1); + } + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/singletouch.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/singletouch.js new file mode 100644 index 00000000..af9f97d5 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/singletouch.js @@ -0,0 +1,82 @@ +import { + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + INPUT_TYPE_TOUCH +} from '../inputjs/input-consts'; +import Input from '../inputjs/input-constructor'; +import toArray from '../utils/to-array'; +import uniqueArray from '../utils/unique-array'; + +const SINGLE_TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; + +const SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; +const SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; + +/** + * @private + * Touch events input + * @constructor + * @extends Input + */ +export default class SingleTouchInput extends Input { + constructor() { + var proto = SingleTouchInput.prototype; + proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS; + proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS; + + super(...arguments); + this.started = false; + } + + handler(ev) { + let type = SINGLE_TOUCH_INPUT_MAP[ev.type]; + + // should we handle the touch events? + if (type === INPUT_START) { + this.started = true; + } + + if (!this.started) { + return; + } + + let touches = normalizeSingleTouches.call(this, ev, type); + + // when done, reset the started state + if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { + this.started = false; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } +} + +/** + * @private + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ +function normalizeSingleTouches(ev, type) { + let all = toArray(ev.touches); + let changed = toArray(ev.changedTouches); + + if (type & (INPUT_END | INPUT_CANCEL)) { + all = uniqueArray(all.concat(changed), 'identifier', true); + } + + return [all, changed]; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touch.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touch.js new file mode 100644 index 00000000..e8302f6e --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touch.js @@ -0,0 +1,111 @@ +import { + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + INPUT_TYPE_TOUCH +} from '../inputjs/input-consts'; +import Input from '../inputjs/input-constructor'; +import toArray from '../utils/to-array'; +import hasParent from '../utils/has-parent'; +import uniqueArray from '../utils/unique-array'; + +const TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; + +const TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; + +/** + * @private + * Multi-user touch events input + * @constructor + * @extends Input + */ +export default class TouchInput extends Input { + constructor() { + TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS; + super(...arguments); + this.targetIds = {}; + // this.evTarget = TOUCH_TARGET_EVENTS; + } + handler(ev) { + let type = TOUCH_INPUT_MAP[ev.type]; + let touches = getTouches.call(this, ev, type); + if (!touches) { + return; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } +} + +/** + * @private + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ +function getTouches(ev, type) { + let allTouches = toArray(ev.touches); + let { targetIds } = this; + + // when there is only one touch, the process can be simplified + if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + return [allTouches, allTouches]; + } + + let i; + let targetTouches; + let changedTouches = toArray(ev.changedTouches); + let changedTargetTouches = []; + let { target } = this; + + // get target touches from touches + targetTouches = allTouches.filter((touch) => { + return hasParent(touch.target, target); + }); + + // collect touches + if (type === INPUT_START) { + i = 0; + while (i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; + } + } + + // filter changed touches to only contain touches that exist in the collected target ids + i = 0; + while (i < changedTouches.length) { + if (targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } + + // cleanup removed touches + if (type & (INPUT_END | INPUT_CANCEL)) { + delete targetIds[changedTouches[i].identifier]; + } + i++; + } + + if (!changedTargetTouches.length) { + return; + } + + return [ + // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' + uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), + changedTargetTouches + ]; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touchmouse.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touchmouse.js new file mode 100644 index 00000000..194ed13a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/input/touchmouse.js @@ -0,0 +1,117 @@ +import Input from "../inputjs/input-constructor"; +import TouchInput from "./touch"; +import MouseInput from "./mouse"; +import { + INPUT_START, + INPUT_END, + INPUT_CANCEL, + INPUT_TYPE_TOUCH, + INPUT_TYPE_MOUSE, +} from "../inputjs/input-consts"; + +/** + * @private + * Combined touch and mouse input + * + * Touch has a higher priority then mouse, and while touching no mouse events are allowed. + * This because touch devices also emit mouse events while doing a touch. + * + * @constructor + * @extends Input + */ + +const DEDUP_TIMEOUT = 2500; +const DEDUP_DISTANCE = 25; + +function setLastTouch(eventData) { + const { changedPointers: [touch] } = eventData; + + if (touch.identifier === this.primaryTouch) { + const lastTouch = { x: touch.clientX, y: touch.clientY }; + const lts = this.lastTouches; + + this.lastTouches.push(lastTouch); + + + const removeLastTouch = function() { + const i = lts.indexOf(lastTouch); + + if (i > -1) { + lts.splice(i, 1); + } + }; + + setTimeout(removeLastTouch, DEDUP_TIMEOUT); + } +} + + +function recordTouches(eventType, eventData) { + if (eventType & INPUT_START) { + this.primaryTouch = eventData.changedPointers[0].identifier; + setLastTouch.call(this, eventData); + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + setLastTouch.call(this, eventData); + } +} +function isSyntheticEvent(eventData) { + const x = eventData.srcEvent.clientX; + const y = eventData.srcEvent.clientY; + + for (let i = 0; i < this.lastTouches.length; i++) { + const t = this.lastTouches[i]; + const dx = Math.abs(x - t.x); + const dy = Math.abs(y - t.y); + + if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) { + return true; + } + } + return false; +} + + +export default class TouchMouseInput extends Input { + constructor(manager, callback) { + super(manager, callback); + + this.touch = new TouchInput(this.manager, this.handler); + this.mouse = new MouseInput(this.manager, this.handler); + this.primaryTouch = null; + this.lastTouches = []; + } + + /** + * @private + * handle mouse and touch events + * @param {Hammer} manager + * @param {String} inputEvent + * @param {Object} inputData + */ + handler = (manager, inputEvent, inputData) => { + const isTouch = (inputData.pointerType === INPUT_TYPE_TOUCH); + const isMouse = (inputData.pointerType === INPUT_TYPE_MOUSE); + + if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) { + return; + } + + // when we're in a touch event, record touches to de-dupe synthetic mouse event + if (isTouch) { + recordTouches.call(this, inputEvent, inputData); + } else if (isMouse && isSyntheticEvent.call(this, inputData)) { + return; + } + + this.callback(manager, inputEvent, inputData); + } + + /** + * @private + * remove the event listeners + */ + destroy() { + this.touch.destroy(); + this.mouse.destroy(); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-delta-xy.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-delta-xy.js new file mode 100644 index 00000000..fefb5bd4 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-delta-xy.js @@ -0,0 +1,25 @@ +import { INPUT_START, INPUT_END } from './input-consts'; + +export default function computeDeltaXY(session, input) { + let { center } = input; + // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session; + // jscs throwing error on defalut destructured values and without defaults tests fail + let offset = session.offsetDelta || {}; + let prevDelta = session.prevDelta || {}; + let prevInput = session.prevInput || {}; + + if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { + prevDelta = session.prevDelta = { + x: prevInput.deltaX || 0, + y: prevInput.deltaY || 0 + }; + + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; + } + + input.deltaX = prevDelta.x + (center.x - offset.x); + input.deltaY = prevDelta.y + (center.y - offset.y); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-input-data.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-input-data.js new file mode 100644 index 00000000..169b90f5 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-input-data.js @@ -0,0 +1,81 @@ +import { now } from '../utils/utils-consts'; +import { abs } from '../utils/utils-consts'; +import hasParent from '../utils/has-parent'; +import simpleCloneInputData from './simple-clone-input-data'; +import getCenter from './get-center'; +import getDistance from './get-distance'; +import getAngle from './get-angle'; +import getDirection from './get-direction'; +import computeDeltaXY from './compute-delta-xy'; +import getVelocity from './get-velocity'; +import getScale from './get-scale'; +import getRotation from './get-rotation'; +import computeIntervalInputData from './compute-interval-input-data'; + +/** +* @private + * extend the data with some usable properties like scale, rotate, velocity etc + * @param {Object} manager + * @param {Object} input + */ +export default function computeInputData(manager, input) { + let { session } = manager; + let { pointers } = input; + let { length:pointersLength } = pointers; + + // store the first input to calculate the distance and direction + if (!session.firstInput) { + session.firstInput = simpleCloneInputData(input); + } + + // to compute scale and rotation we need to store the multiple touches + if (pointersLength > 1 && !session.firstMultiple) { + session.firstMultiple = simpleCloneInputData(input); + } else if (pointersLength === 1) { + session.firstMultiple = false; + } + + let { firstInput, firstMultiple } = session; + let offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; + + let center = input.center = getCenter(pointers); + input.timeStamp = now(); + input.deltaTime = input.timeStamp - firstInput.timeStamp; + + input.angle = getAngle(offsetCenter, center); + input.distance = getDistance(offsetCenter, center); + + computeDeltaXY(session, input); + input.offsetDirection = getDirection(input.deltaX, input.deltaY); + + let overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY); + input.overallVelocityX = overallVelocity.x; + input.overallVelocityY = overallVelocity.y; + input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y; + + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; + input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + + input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length > + session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers); + + computeIntervalInputData(session, input); + + // find the correct target + let target = manager.element; + const srcEvent = input.srcEvent; + let srcEventTarget; + + if (srcEvent.composedPath) { + srcEventTarget = srcEvent.composedPath()[0]; + } else if (srcEvent.path) { + srcEventTarget = srcEvent.path[0]; + } else { + srcEventTarget = srcEvent.target; + } + + if (hasParent(srcEventTarget, target)) { + target = srcEventTarget; + } + input.target = target; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-interval-input-data.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-interval-input-data.js new file mode 100644 index 00000000..eb5746a3 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/compute-interval-input-data.js @@ -0,0 +1,43 @@ +import { INPUT_CANCEL,COMPUTE_INTERVAL } from './input-consts'; +import { abs } from '../utils/utils-consts'; +import getVelocity from './get-velocity'; +import getDirection from './get-direction'; + +/** + * @private + * velocity is calculated every x ms + * @param {Object} session + * @param {Object} input + */ +export default function computeIntervalInputData(session, input) { + let last = session.lastInterval || input; + let deltaTime = input.timeStamp - last.timeStamp; + let velocity; + let velocityX; + let velocityY; + let direction; + + if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { + let deltaX = input.deltaX - last.deltaX; + let deltaY = input.deltaY - last.deltaY; + + let v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y; + direction = getDirection(deltaX, deltaY); + + session.lastInterval = input; + } else { + // use latest velocity info if it doesn't overtake a minimum period + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } + + input.velocity = velocity; + input.velocityX = velocityX; + input.velocityY = velocityY; + input.direction = direction; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/create-input-instance.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/create-input-instance.js new file mode 100644 index 00000000..977dc05a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/create-input-instance.js @@ -0,0 +1,31 @@ +import { SUPPORT_POINTER_EVENTS,SUPPORT_ONLY_TOUCH,SUPPORT_TOUCH } from './input-consts'; +import inputHandler from './input-handler'; +import PointerEventInput from '../input/pointerevent'; +import TouchInput from '../input/touch'; +import MouseInput from '../input/mouse'; +import TouchMouseInput from '../input/touchmouse'; + +/** + * @private + * create new input type manager + * called by the Manager constructor + * @param {Hammer} manager + * @returns {Input} + */ +export default function createInputInstance(manager) { + let Type; + // let inputClass = manager.options.inputClass; + let { options:{ inputClass } } = manager; + if (inputClass) { + Type = inputClass; + } else if (SUPPORT_POINTER_EVENTS) { + Type = PointerEventInput; + } else if (SUPPORT_ONLY_TOUCH) { + Type = TouchInput; + } else if (!SUPPORT_TOUCH) { + Type = MouseInput; + } else { + Type = TouchMouseInput; + } + return new (Type)(manager, inputHandler); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-angle.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-angle.js new file mode 100644 index 00000000..0015c23a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-angle.js @@ -0,0 +1,18 @@ +import { PROPS_XY } from './input-consts'; + +/** + * @private + * calculate the angle between two coordinates + * @param {Object} p1 + * @param {Object} p2 + * @param {Array} [props] containing x and y keys + * @return {Number} angle + */ +export default function getAngle(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + let x = p2[props[0]] - p1[props[0]]; + let y = p2[props[1]] - p1[props[1]]; + return Math.atan2(y, x) * 180 / Math.PI; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-center.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-center.js new file mode 100644 index 00000000..225b1ec0 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-center.js @@ -0,0 +1,33 @@ +import { round } from '../utils/utils-consts'; + +/** + * @private + * get the center of all the pointers + * @param {Array} pointers + * @return {Object} center contains `x` and `y` properties + */ +export default function getCenter(pointers) { + let pointersLength = pointers.length; + + // no need to loop when only one touch + if (pointersLength === 1) { + return { + x: round(pointers[0].clientX), + y: round(pointers[0].clientY) + }; + } + + let x = 0; + let y = 0; + let i = 0; + while (i < pointersLength) { + x += pointers[i].clientX; + y += pointers[i].clientY; + i++; + } + + return { + x: round(x / pointersLength), + y: round(y / pointersLength) + }; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-direction.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-direction.js new file mode 100644 index 00000000..cf577a88 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-direction.js @@ -0,0 +1,20 @@ +import { abs } from '../utils/utils-consts'; +import { DIRECTION_NONE,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP,DIRECTION_DOWN } from './input-consts'; + +/** + * @private + * get the direction between two points + * @param {Number} x + * @param {Number} y + * @return {Number} direction + */ +export default function getDirection(x, y) { + if (x === y) { + return DIRECTION_NONE; + } + + if (abs(x) >= abs(y)) { + return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return y < 0 ? DIRECTION_UP : DIRECTION_DOWN; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-distance.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-distance.js new file mode 100644 index 00000000..066ea89c --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-distance.js @@ -0,0 +1,19 @@ +import { PROPS_XY } from './input-consts'; + +/** + * @private + * calculate the absolute distance between two points + * @param {Object} p1 {x, y} + * @param {Object} p2 {x, y} + * @param {Array} [props] containing x and y keys + * @return {Number} distance + */ +export default function getDistance(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + let x = p2[props[0]] - p1[props[0]]; + let y = p2[props[1]] - p1[props[1]]; + + return Math.sqrt((x * x) + (y * y)); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-rotation.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-rotation.js new file mode 100644 index 00000000..d507ae9d --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-rotation.js @@ -0,0 +1,13 @@ +import getAngle from './get-angle'; +import { PROPS_CLIENT_XY } from './input-consts'; + +/** + * @private + * calculate the rotation degrees between two pointersets + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} rotation + */ +export default function getRotation(start, end) { + return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-scale.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-scale.js new file mode 100644 index 00000000..840e6838 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-scale.js @@ -0,0 +1,13 @@ +import { PROPS_CLIENT_XY } from './input-consts'; +import getDistance from './get-distance'; +/** + * @private + * calculate the scale factor between two pointersets + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} scale + */ +export default function getScale(start, end) { + return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-velocity.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-velocity.js new file mode 100644 index 00000000..589a2d22 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/get-velocity.js @@ -0,0 +1,14 @@ +/** + * @private + * calculate the velocity between two points. unit is in px per ms. + * @param {Number} deltaTime + * @param {Number} x + * @param {Number} y + * @return {Object} velocity `x` and `y` + */ +export default function getVelocity(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-constructor.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-constructor.js new file mode 100644 index 00000000..1a1caa9b --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-constructor.js @@ -0,0 +1,59 @@ +import boolOrFn from '../utils/bool-or-fn'; +import addEventListeners from '../utils/add-event-listeners'; +import removeEventListeners from '../utils/remove-event-listeners'; +import getWindowForElement from '../utils/get-window-for-element'; + +/** + * @private + * create new input type manager + * @param {Manager} manager + * @param {Function} callback + * @returns {Input} + * @constructor + */ +export default class Input { + constructor(manager, callback) { + let self = this; + this.manager = manager; + this.callback = callback; + this.element = manager.element; + this.target = manager.options.inputTarget; + + // smaller wrapper around the handler, for the scope and the enabled state of the manager, + // so when disabled the input events are completely bypassed. + this.domHandler = function(ev) { + if (boolOrFn(manager.options.enable, [manager])) { + self.handler(ev); + } + }; + + this.init(); + + } + /** + * @private + * should handle the inputEvent data and trigger the callback + * @virtual + */ + handler() { } + + /** + * @private + * bind the events + */ + init() { + this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + } + + /** + * @private + * unbind the events + */ + destroy() { + this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-consts.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-consts.js new file mode 100644 index 00000000..594c9828 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-consts.js @@ -0,0 +1,59 @@ +import prefixed from '../utils/prefixed'; +import {window} from "../browser"; + +const MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; + +const SUPPORT_TOUCH = ('ontouchstart' in window); +const SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined; +const SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); + +const INPUT_TYPE_TOUCH = 'touch'; +const INPUT_TYPE_PEN = 'pen'; +const INPUT_TYPE_MOUSE = 'mouse'; +const INPUT_TYPE_KINECT = 'kinect'; + +const COMPUTE_INTERVAL = 25; + +const INPUT_START = 1; +const INPUT_MOVE = 2; +const INPUT_END = 4; +const INPUT_CANCEL = 8; + +const DIRECTION_NONE = 1; +const DIRECTION_LEFT = 2; +const DIRECTION_RIGHT = 4; +const DIRECTION_UP = 8; +const DIRECTION_DOWN = 16; + +const DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; +const DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; +const DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; + +const PROPS_XY = ['x', 'y']; +const PROPS_CLIENT_XY = ['clientX', 'clientY']; + +export { + MOBILE_REGEX, + SUPPORT_ONLY_TOUCH, + SUPPORT_POINTER_EVENTS, + SUPPORT_TOUCH, + INPUT_TYPE_KINECT, + INPUT_TYPE_MOUSE, + INPUT_TYPE_PEN, + INPUT_TYPE_TOUCH, + COMPUTE_INTERVAL, + INPUT_START, + INPUT_MOVE, + INPUT_END, + INPUT_CANCEL, + DIRECTION_NONE, + DIRECTION_LEFT, + DIRECTION_RIGHT, + DIRECTION_UP, + DIRECTION_DOWN, + DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL, + DIRECTION_ALL, + PROPS_XY, + PROPS_CLIENT_XY +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-handler.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-handler.js new file mode 100644 index 00000000..8c75d92c --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/input-handler.js @@ -0,0 +1,36 @@ +import { INPUT_START,INPUT_END,INPUT_CANCEL } from './input-consts'; +import computeInputData from './compute-input-data'; + +/** + * @private + * handle input events + * @param {Manager} manager + * @param {String} eventType + * @param {Object} input + */ +export default function inputHandler(manager, eventType, input) { + let pointersLen = input.pointers.length; + let changedPointersLen = input.changedPointers.length; + let isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0)); + let isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0)); + + input.isFirst = !!isFirst; + input.isFinal = !!isFinal; + + if (isFirst) { + manager.session = {}; + } + + // source event is the normalized value of the domEvents + // like 'touchstart, mouseup, pointerdown' + input.eventType = eventType; + + // compute scale, rotation etc + computeInputData(manager, input); + + // emit secret event + manager.emit('hammer.input', input); + + manager.recognize(input); + manager.session.prevInput = input; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/simple-clone-input-data.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/simple-clone-input-data.js new file mode 100644 index 00000000..270c531f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/inputjs/simple-clone-input-data.js @@ -0,0 +1,30 @@ +import { now,round } from '../utils/utils-consts'; +import getCenter from './get-center'; + +/** + * @private + * create a simple clone from the input used for storage of firstInput and firstMultiple + * @param {Object} input + * @returns {Object} clonedInputData + */ +export default function simpleCloneInputData(input) { + // make a simple copy of the pointers because we will get a reference if we don't + // we only need clientXY for the calculations + let pointers = []; + let i = 0; + while (i < input.pointers.length) { + pointers[i] = { + clientX: round(input.pointers[i].clientX), + clientY: round(input.pointers[i].clientY) + }; + i++; + } + + return { + timeStamp: now(), + pointers, + center: getCenter(pointers), + deltaX: input.deltaX, + deltaY: input.deltaY + }; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/manager.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/manager.js new file mode 100644 index 00000000..d6559def --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/manager.js @@ -0,0 +1,352 @@ +import assign from "./utils/assign"; +import TouchAction from "./touchactionjs/touchaction-constructor"; +import createInputInstance from "./inputjs/create-input-instance"; +import each from "./utils/each"; +import inArray from "./utils/in-array"; +import invokeArrayArg from "./utils/invoke-array-arg"; +import splitStr from "./utils/split-str"; +import prefixed from "./utils/prefixed"; +import Recognizer from "./recognizerjs/recognizer-constructor"; +import { + STATE_BEGAN, + STATE_ENDED, + STATE_CHANGED, + STATE_RECOGNIZED, +} from "./recognizerjs/recognizer-consts"; +import defaults from "./defaults"; + +const STOP = 1; +const FORCED_STOP = 2; + + +/** + * @private + * add/remove the css properties as defined in manager.options.cssProps + * @param {Manager} manager + * @param {Boolean} add + */ +function toggleCssProps(manager, add) { + const { element } = manager; + + if (!element.style) { + return; + } + let prop; + + each(manager.options.cssProps, (value, name) => { + prop = prefixed(element.style, name); + if (add) { + manager.oldCssProps[prop] = element.style[prop]; + element.style[prop] = value; + } else { + element.style[prop] = manager.oldCssProps[prop] || ""; + } + }); + if (!add) { + manager.oldCssProps = {}; + } +} + +/** + * @private + * trigger dom event + * @param {String} event + * @param {Object} data + */ +function triggerDomEvent(event, data) { + const gestureEvent = document.createEvent("Event"); + + gestureEvent.initEvent(event, true, true); + gestureEvent.gesture = data; + data.target.dispatchEvent(gestureEvent); +} + + +/** +* @private + * Manager + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ +export default class Manager { + constructor(element, options) { + this.options = assign({}, defaults, options || {}); + + this.options.inputTarget = this.options.inputTarget || element; + + this.handlers = {}; + this.session = {}; + this.recognizers = []; + this.oldCssProps = {}; + + this.element = element; + this.input = createInputInstance(this); + this.touchAction = new TouchAction(this, this.options.touchAction); + + toggleCssProps(this, true); + + each(this.options.recognizers, item => { + const recognizer = this.add(new (item[0])(item[1])); + + item[2] && recognizer.recognizeWith(item[2]); + item[3] && recognizer.requireFailure(item[3]); + }, this); + } + + /** + * @private + * set options + * @param {Object} options + * @returns {Manager} + */ + set(options) { + assign(this.options, options); + + // Options that need a little more setup + if (options.touchAction) { + this.touchAction.update(); + } + if (options.inputTarget) { + // Clean up existing event listeners and reinitialize + this.input.destroy(); + this.input.target = options.inputTarget; + this.input.init(); + } + return this; + } + + /** + * @private + * stop recognizing for this session. + * This session will be discarded, when a new [input]start event is fired. + * When forced, the recognizer cycle is stopped immediately. + * @param {Boolean} [force] + */ + stop(force) { + this.session.stopped = force ? FORCED_STOP : STOP; + } + + /** + * @private + * run the recognizers! + * called by the inputHandler function on every movement of the pointers (touches) + * it walks through all the recognizers and tries to detect the gesture that is being made + * @param {Object} inputData + */ + recognize(inputData) { + const { session } = this; + + if (session.stopped) { + return; + } + + // run the touch-action polyfill + this.touchAction.preventDefaults(inputData); + + let recognizer; + const { recognizers } = this; + + // this holds the recognizer that is being recognized. + // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED + // if no recognizer is detecting a thing, it is set to `null` + let { curRecognizer } = session; + + // reset when the last recognizer is recognized + // or when we're in a new session + if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) { + session.curRecognizer = null; + curRecognizer = null; + } + + let i = 0; + + while (i < recognizers.length) { + recognizer = recognizers[i]; + + // find out if we are allowed try to recognize the input for this one. + // 1. allow if the session is NOT forced stopped (see the .stop() method) + // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one + // that is being recognized. + // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. + // this can be setup with the `recognizeWith()` method on the recognizer. + if (session.stopped !== FORCED_STOP && (// 1 + !curRecognizer || recognizer === curRecognizer || // 2 + recognizer.canRecognizeWith(curRecognizer))) { // 3 + recognizer.recognize(inputData); + } else { + recognizer.reset(); + } + + // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the + // current active recognizer. but only if we don't already have an active recognizer + if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { + session.curRecognizer = recognizer; + curRecognizer = recognizer; + } + i++; + } + } + + /** + * @private + * get a recognizer by its event name. + * @param {Recognizer|String} recognizer + * @returns {Recognizer|Null} + */ + get(recognizer) { + if (recognizer instanceof Recognizer) { + return recognizer; + } + + const { recognizers } = this; + + for (let i = 0; i < recognizers.length; i++) { + if (recognizers[i].options.event === recognizer) { + return recognizers[i]; + } + } + return null; + } + + /** + * @private add a recognizer to the manager + * existing recognizers with the same event name will be removed + * @param {Recognizer} recognizer + * @returns {Recognizer|Manager} + */ + add(recognizer) { + if (invokeArrayArg(recognizer, "add", this)) { + return this; + } + + // remove existing + const existing = this.get(recognizer.options.event); + + if (existing) { + this.remove(existing); + } + + this.recognizers.push(recognizer); + recognizer.manager = this; + + this.touchAction.update(); + return recognizer; + } + + /** + * @private + * remove a recognizer by name or instance + * @param {Recognizer|String} recognizer + * @returns {Manager} + */ + remove(recognizer) { + if (invokeArrayArg(recognizer, "remove", this)) { + return this; + } + + const targetRecognizer = this.get(recognizer); + + // let's make sure this recognizer exists + if (recognizer) { + const { recognizers } = this; + const index = inArray(recognizers, targetRecognizer); + + if (index !== -1) { + recognizers.splice(index, 1); + this.touchAction.update(); + } + } + + return this; + } + + /** + * @private + * bind event + * @param {String} events + * @param {Function} handler + * @returns {EventEmitter} this + */ + on(events, handler) { + if (events === undefined || handler === undefined) { + return this; + } + + const { handlers } = this; + + each(splitStr(events), event => { + handlers[event] = handlers[event] || []; + handlers[event].push(handler); + }); + return this; + } + + /** + * @private unbind event, leave emit blank to remove all handlers + * @param {String} events + * @param {Function} [handler] + * @returns {EventEmitter} this + */ + off(events, handler) { + if (events === undefined) { + return this; + } + + const { handlers } = this; + + each(splitStr(events), event => { + if (!handler) { + delete handlers[event]; + } else { + handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1); + } + }); + return this; + } + + /** + * @private emit event to the listeners + * @param {String} event + * @param {Object} data + */ + emit(event, data) { + // we also want to trigger dom events + if (this.options.domEvents) { + triggerDomEvent(event, data); + } + + // no handlers, so skip it all + const handlers = this.handlers[event] && this.handlers[event].slice(); + + if (!handlers || !handlers.length) { + return; + } + + data.type = event; + data.preventDefault = function () { + data.srcEvent.preventDefault(); + }; + + let i = 0; + + while (i < handlers.length) { + handlers[i](data); + i++; + } + } + + /** + * @private + * destroy the manager and unbinds all events + * it doesn't unbind dom events, that is the user own responsibility + */ + destroy() { + this.element && toggleCssProps(this, false); + + this.handlers = {}; + this.session = {}; + this.input.destroy(); + this.element = null; + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/direction-str.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/direction-str.js new file mode 100644 index 00000000..1dfd2180 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/direction-str.js @@ -0,0 +1,25 @@ +import { + DIRECTION_LEFT, + DIRECTION_RIGHT, + DIRECTION_UP, + DIRECTION_DOWN +} from '../inputjs/input-consts'; + +/** + * @private + * direction cons to string + * @param {constant} direction + * @returns {String} + */ +export default function directionStr(direction) { + if (direction === DIRECTION_DOWN) { + return 'down'; + } else if (direction === DIRECTION_UP) { + return 'up'; + } else if (direction === DIRECTION_LEFT) { + return 'left'; + } else if (direction === DIRECTION_RIGHT) { + return 'right'; + } + return ''; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/get-recognizer-by-name-if-manager.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/get-recognizer-by-name-if-manager.js new file mode 100644 index 00000000..395236c3 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/get-recognizer-by-name-if-manager.js @@ -0,0 +1,14 @@ +/** + * @private + * get a recognizer by name if it is bound to a manager + * @param {Recognizer|String} otherRecognizer + * @param {Recognizer} recognizer + * @returns {Recognizer} + */ +export default function getRecognizerByNameIfManager(otherRecognizer, recognizer) { + let { manager } = recognizer; + if (manager) { + return manager.get(otherRecognizer); + } + return otherRecognizer; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-constructor.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-constructor.js new file mode 100644 index 00000000..988764e1 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-constructor.js @@ -0,0 +1,300 @@ +import { + STATE_POSSIBLE, + STATE_ENDED, + STATE_FAILED, + STATE_RECOGNIZED, + STATE_CANCELLED, + STATE_BEGAN, + STATE_CHANGED +} from './recognizer-consts'; +import assign from '../utils/assign'; +import uniqueId from '../utils/unique-id'; +import invokeArrayArg from '../utils/invoke-array-arg'; +import inArray from '../utils/in-array'; +import boolOrFn from '../utils/bool-or-fn'; +import getRecognizerByNameIfManager from './get-recognizer-by-name-if-manager'; +import stateStr from './state-str'; + +/** + * @private + * Recognizer flow explained; * + * All recognizers have the initial state of POSSIBLE when a input session starts. + * The definition of a input session is from the first input until the last input, with all it's movement in it. * + * Example session for mouse-input: mousedown -> mousemove -> mouseup + * + * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed + * which determines with state it should be. + * + * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to + * POSSIBLE to give it another change on the next cycle. + * + * Possible + * | + * +-----+---------------+ + * | | + * +-----+-----+ | + * | | | + * Failed Cancelled | + * +-------+------+ + * | | + * Recognized Began + * | + * Changed + * | + * Ended/Recognized + */ + +/** + * @private + * Recognizer + * Every recognizer needs to extend from this class. + * @constructor + * @param {Object} options + */ +export default class Recognizer { + constructor(options = {}) { + this.options = { + enable: true, + ...options, + }; + + this.id = uniqueId(); + + this.manager = null; + + // default is enable true + this.state = STATE_POSSIBLE; + this.simultaneous = {}; + this.requireFail = []; + } + + /** + * @private + * set options + * @param {Object} options + * @return {Recognizer} + */ + set(options) { + assign(this.options, options); + + // also update the touchAction, in case something changed about the directions/enabled state + this.manager && this.manager.touchAction.update(); + return this; + } + + /** + * @private + * recognize simultaneous with an other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + recognizeWith(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { + return this; + } + + let { simultaneous } = this; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (!simultaneous[otherRecognizer.id]) { + simultaneous[otherRecognizer.id] = otherRecognizer; + otherRecognizer.recognizeWith(this); + } + return this; + } + + /** + * @private + * drop the simultaneous link. it doesnt remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRecognizeWith(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + delete this.simultaneous[otherRecognizer.id]; + return this; + } + + /** + * @private + * recognizer can only run when an other is failing + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + requireFailure(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { + return this; + } + + let { requireFail } = this; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (inArray(requireFail, otherRecognizer) === -1) { + requireFail.push(otherRecognizer); + otherRecognizer.requireFailure(this); + } + return this; + } + + /** + * @private + * drop the requireFailure link. it does not remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRequireFailure(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + let index = inArray(this.requireFail, otherRecognizer); + if (index > -1) { + this.requireFail.splice(index, 1); + } + return this; + } + + /** + * @private + * has require failures boolean + * @returns {boolean} + */ + hasRequireFailures() { + return this.requireFail.length > 0; + } + + /** + * @private + * if the recognizer can recognize simultaneous with an other recognizer + * @param {Recognizer} otherRecognizer + * @returns {Boolean} + */ + canRecognizeWith(otherRecognizer) { + return !!this.simultaneous[otherRecognizer.id]; + } + + /** + * @private + * You should use `tryEmit` instead of `emit` directly to check + * that all the needed recognizers has failed before emitting. + * @param {Object} input + */ + emit(input) { + let self = this; + let { state } = this; + + function emit(event) { + self.manager.emit(event, input); + } + + // 'panstart' and 'panmove' + if (state < STATE_ENDED) { + emit(self.options.event + stateStr(state)); + } + + emit(self.options.event); // simple 'eventName' events + + if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...) + emit(input.additionalEvent); + } + + // panend and pancancel + if (state >= STATE_ENDED) { + emit(self.options.event + stateStr(state)); + } + } + + /** + * @private + * Check that all the require failure recognizers has failed, + * if true, it emits a gesture event, + * otherwise, setup the state to FAILED. + * @param {Object} input + */ + tryEmit(input) { + if (this.canEmit()) { + return this.emit(input); + } + // it's failing anyway + this.state = STATE_FAILED; + } + + /** + * @private + * can we emit? + * @returns {boolean} + */ + canEmit() { + let i = 0; + while (i < this.requireFail.length) { + if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { + return false; + } + i++; + } + return true; + } + + /** + * @private + * update the recognizer + * @param {Object} inputData + */ + recognize(inputData) { + // make a new copy of the inputData + // so we can change the inputData without messing up the other recognizers + let inputDataClone = assign({}, inputData); + + // is is enabled and allow recognizing? + if (!boolOrFn(this.options.enable, [this, inputDataClone])) { + this.reset(); + this.state = STATE_FAILED; + return; + } + + // reset when we've reached the end + if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { + this.state = STATE_POSSIBLE; + } + + this.state = this.process(inputDataClone); + + // the recognizer has recognized a gesture + // so trigger an event + if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { + this.tryEmit(inputDataClone); + } + } + + /** + * @private + * return the state of the recognizer + * the actual recognizing happens in this method + * @virtual + * @param {Object} inputData + * @returns {constant} STATE + */ + + /* jshint ignore:start */ + process(inputData) { } + /* jshint ignore:end */ + + /** + * @private + * return the preferred touch-action + * @virtual + * @returns {Array} + */ + getTouchAction() { } + + /** + * @private + * called when the gesture isn't allowed to recognize + * like when another is being recognized or it is disabled + * @virtual + */ + reset() { } +} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-consts.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-consts.js new file mode 100644 index 00000000..7b1aa340 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/recognizer-consts.js @@ -0,0 +1,17 @@ +const STATE_POSSIBLE = 1; +const STATE_BEGAN = 2; +const STATE_CHANGED = 4; +const STATE_ENDED = 8; +const STATE_RECOGNIZED = STATE_ENDED; +const STATE_CANCELLED = 16; +const STATE_FAILED = 32; + +export { + STATE_POSSIBLE, + STATE_BEGAN, + STATE_CHANGED, + STATE_ENDED, + STATE_RECOGNIZED, + STATE_CANCELLED, + STATE_FAILED +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/state-str.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/state-str.js new file mode 100644 index 00000000..e37c5849 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizerjs/state-str.js @@ -0,0 +1,25 @@ +import { + STATE_CANCELLED, + STATE_ENDED, + STATE_CHANGED, + STATE_BEGAN +} from './recognizer-consts'; + +/** + * @private + * get a usable string, used as event postfix + * @param {constant} state + * @returns {String} state + */ +export default function stateStr(state) { + if (state & STATE_CANCELLED) { + return 'cancel'; + } else if (state & STATE_ENDED) { + return 'end'; + } else if (state & STATE_CHANGED) { + return 'move'; + } else if (state & STATE_BEGAN) { + return 'start'; + } + return ''; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/attribute.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/attribute.js new file mode 100644 index 00000000..e72a1db2 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/attribute.js @@ -0,0 +1,67 @@ +import Recognizer from '../recognizerjs/recognizer-constructor'; +import { + STATE_BEGAN, + STATE_CHANGED, + STATE_CANCELLED, + STATE_ENDED, + STATE_FAILED +} from '../recognizerjs/recognizer-consts'; +import { + INPUT_CANCEL, + INPUT_END +} from '../inputjs/input-consts'; + +/** + * @private + * This recognizer is just used as a base for the simple attribute recognizers. + * @constructor + * @extends Recognizer + */ +export default class AttrRecognizer extends Recognizer { + constructor(options = {}) { + super({ + pointers: 1, + ...options, + }); + } + + /** + * @private + * Used to check if it the recognizer receives valid input, like input.distance > 10. + * @memberof AttrRecognizer + * @param {Object} input + * @returns {Boolean} recognized + */ + attrTest(input) { + let optionPointers = this.options.pointers; + return optionPointers === 0 || input.pointers.length === optionPointers; + } + + /** + * @private + * Process the input and return the state for the recognizer + * @memberof AttrRecognizer + * @param {Object} input + * @returns {*} State + */ + process(input) { + let { state } = this; + let { eventType } = input; + + let isRecognized = state & (STATE_BEGAN | STATE_CHANGED); + let isValid = this.attrTest(input); + + // on cancel input and we've recognized before, return STATE_CANCELLED + if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { + return state | STATE_CANCELLED; + } else if (isRecognized || isValid) { + if (eventType & INPUT_END) { + return state | STATE_ENDED; + } else if (!(state & STATE_BEGAN)) { + return STATE_BEGAN; + } + return state | STATE_CHANGED; + } + return STATE_FAILED; + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pan.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pan.js new file mode 100644 index 00000000..14f000ec --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pan.js @@ -0,0 +1,89 @@ +import AttrRecognizer from './attribute'; +import { + DIRECTION_ALL, + DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL, + DIRECTION_NONE, + DIRECTION_UP, + DIRECTION_DOWN, + DIRECTION_LEFT, + DIRECTION_RIGHT +} from '../inputjs/input-consts'; +import { STATE_BEGAN } from '../recognizerjs/recognizer-consts'; +import { TOUCH_ACTION_PAN_X,TOUCH_ACTION_PAN_Y } from '../touchactionjs/touchaction-Consts'; +import directionStr from '../recognizerjs/direction-str'; + +/** + * @private + * Pan + * Recognized when the pointer is down and moved in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ +export default class PanRecognizer extends AttrRecognizer { + constructor(options = {}) { + super({ + event: 'pan', + threshold: 10, + pointers: 1, + direction: DIRECTION_ALL, + ...options, + }); + this.pX = null; + this.pY = null; + } + + getTouchAction() { + let { options:{ direction } } = this; + let actions = []; + if (direction & DIRECTION_HORIZONTAL) { + actions.push(TOUCH_ACTION_PAN_Y); + } + if (direction & DIRECTION_VERTICAL) { + actions.push(TOUCH_ACTION_PAN_X); + } + return actions; + } + + directionTest(input) { + let { options } = this; + let hasMoved = true; + let { distance } = input; + let { direction } = input; + let x = input.deltaX; + let y = input.deltaY; + + // lock to axis? + if (!(direction & options.direction)) { + if (options.direction & DIRECTION_HORIZONTAL) { + direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + hasMoved = x !== this.pX; + distance = Math.abs(input.deltaX); + } else { + direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN; + hasMoved = y !== this.pY; + distance = Math.abs(input.deltaY); + } + } + input.direction = direction; + return hasMoved && distance > options.threshold && direction & options.direction; + } + + attrTest(input) { + return AttrRecognizer.prototype.attrTest.call(this, input) && // replace with a super call + (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input))); + } + + emit(input) { + + this.pX = input.deltaX; + this.pY = input.deltaY; + + let direction = directionStr(input.direction); + + if (direction) { + input.additionalEvent = this.options.event + direction; + } + super.emit(input); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pinch.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pinch.js new file mode 100644 index 00000000..bd4bc0d0 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/pinch.js @@ -0,0 +1,38 @@ +import AttrRecognizer from './attribute'; +import { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts'; +import { STATE_BEGAN } from '../recognizerjs/recognizer-consts'; + +/** + * @private + * Pinch + * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). + * @constructor + * @extends AttrRecognizer + */ +export default class PinchRecognizer extends AttrRecognizer { + constructor(options = {}) { + super({ + event: 'pinch', + threshold: 0, + pointers: 2, + ...options, + }); + } + + getTouchAction() { + return [TOUCH_ACTION_NONE]; + } + + attrTest(input) { + return super.attrTest(input) && + (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); + } + + emit(input) { + if (input.scale !== 1) { + let inOut = input.scale < 1 ? 'in' : 'out'; + input.additionalEvent = this.options.event + inOut; + } + super.emit(input); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/press.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/press.js new file mode 100644 index 00000000..c6a12a49 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/press.js @@ -0,0 +1,79 @@ +import Recognizer from '../recognizerjs/recognizer-constructor'; +import { + STATE_RECOGNIZED, + STATE_FAILED +} from '../recognizerjs/recognizer-consts'; +import { now } from '../utils/utils-consts'; +import { TOUCH_ACTION_AUTO } from '../touchactionjs/touchaction-Consts'; +import { + INPUT_START, + INPUT_END, + INPUT_CANCEL +} from '../inputjs/input-consts'; + +/** + * @private + * Press + * Recognized when the pointer is down for x ms without any movement. + * @constructor + * @extends Recognizer + */ +export default class PressRecognizer extends Recognizer { + constructor(options = {}) { + super({ + event: 'press', + pointers: 1, + time: 251, // minimal time of the pointer to be pressed + threshold: 9, // a minimal movement is ok, but keep it low + ...options, + }); + this._timer = null; + this._input = null; + } + + getTouchAction() { + return [TOUCH_ACTION_AUTO]; + } + + process(input) { + let { options } = this; + let validPointers = input.pointers.length === options.pointers; + let validMovement = input.distance < options.threshold; + let validTime = input.deltaTime > options.time; + + this._input = input; + + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) { + this.reset(); + } else if (input.eventType & INPUT_START) { + this.reset(); + this._timer = setTimeout(() => { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.time); + } else if (input.eventType & INPUT_END) { + return STATE_RECOGNIZED; + } + return STATE_FAILED; + } + + reset() { + clearTimeout(this._timer); + } + + emit(input) { + if (this.state !== STATE_RECOGNIZED) { + return; + } + + if (input && (input.eventType & INPUT_END)) { + this.manager.emit(`${this.options.event}up`, input); + } else { + this._input.timeStamp = now(); + this.manager.emit(this.options.event, this._input); + } + } +} + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/rotate.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/rotate.js new file mode 100644 index 00000000..77b59f33 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/rotate.js @@ -0,0 +1,30 @@ +import AttrRecognizer from './attribute'; +import { TOUCH_ACTION_NONE } from '../touchactionjs/touchaction-Consts'; +import { STATE_BEGAN } from '../recognizerjs/recognizer-consts'; + +/** + * @private + * Rotate + * Recognized when two or more pointer are moving in a circular motion. + * @constructor + * @extends AttrRecognizer + */ +export default class RotateRecognizer extends AttrRecognizer { + constructor(options = {}) { + super( { + event: 'rotate', + threshold: 0, + pointers: 2, + ...options, + }); + } + + getTouchAction() { + return [TOUCH_ACTION_NONE]; + } + + attrTest(input) { + return super.attrTest(input) && + (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); + } +} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/swipe.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/swipe.js new file mode 100644 index 00000000..bdbb0a30 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/swipe.js @@ -0,0 +1,58 @@ +import AttrRecognizer from '../recognizers/attribute'; +import { abs } from '../utils/utils-consts'; +import { DIRECTION_HORIZONTAL,DIRECTION_VERTICAL } from '../inputjs/input-consts'; +import PanRecognizer from './pan'; +import { INPUT_END } from '../inputjs/input-consts'; +import directionStr from '../recognizerjs/direction-str'; + +/** + * @private + * Swipe + * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ +export default class SwipeRecognizer extends AttrRecognizer { + constructor(options = {}) { + super({ + event: 'swipe', + threshold: 10, + velocity: 0.3, + direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, + pointers: 1, + ...options, + }); + } + + getTouchAction() { + return PanRecognizer.prototype.getTouchAction.call(this); + } + + attrTest(input) { + let { direction } = this.options; + let velocity; + + if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { + velocity = input.overallVelocity; + } else if (direction & DIRECTION_HORIZONTAL) { + velocity = input.overallVelocityX; + } else if (direction & DIRECTION_VERTICAL) { + velocity = input.overallVelocityY; + } + + return super.attrTest(input) && + direction & input.offsetDirection && + input.distance > this.options.threshold && + input.maxPointers === this.options.pointers && + abs(velocity) > this.options.velocity && input.eventType & INPUT_END; + } + + emit(input) { + let direction = directionStr(input.offsetDirection); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this.manager.emit(this.options.event, input); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/tap.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/tap.js new file mode 100644 index 00000000..f2e25ce2 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/recognizers/tap.js @@ -0,0 +1,120 @@ +import Recognizer from '../recognizerjs/recognizer-constructor'; +import { TOUCH_ACTION_MANIPULATION } from '../touchactionjs/touchaction-Consts'; +import {INPUT_START,INPUT_END } from '../inputjs/input-consts'; +import { + STATE_RECOGNIZED, + STATE_BEGAN, + STATE_FAILED +} from '../recognizerjs/recognizer-consts'; +import getDistance from '../inputjs/get-distance'; + +/** + * @private + * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur + * between the given interval and position. The delay option can be used to recognize multi-taps without firing + * a single tap. + * + * The eventData from the emitted event contains the property `tapCount`, which contains the amount of + * multi-taps being recognized. + * @constructor + * @extends Recognizer + */ +export default class TapRecognizer extends Recognizer { + constructor(options = {}) { + super({ + event: 'tap', + pointers: 1, + taps: 1, + interval: 300, // max time between the multi-tap taps + time: 250, // max time of the pointer to be down (like finger on the screen) + threshold: 9, // a minimal movement is ok, but keep it low + posThreshold: 10, // a multi-tap can be a bit off the initial position + ...options, + }); + + // previous time and center, + // used for tap counting + this.pTime = false; + this.pCenter = false; + + this._timer = null; + this._input = null; + this.count = 0; + } + + getTouchAction() { + return [TOUCH_ACTION_MANIPULATION]; + } + + process(input) { + let { options } = this; + + let validPointers = input.pointers.length === options.pointers; + let validMovement = input.distance < options.threshold; + let validTouchTime = input.deltaTime < options.time; + + this.reset(); + + if ((input.eventType & INPUT_START) && (this.count === 0)) { + return this.failTimeout(); + } + + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (validMovement && validTouchTime && validPointers) { + if (input.eventType !== INPUT_END) { + return this.failTimeout(); + } + + let validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true; + let validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; + + this.pTime = input.timeStamp; + this.pCenter = input.center; + + if (!validMultiTap || !validInterval) { + this.count = 1; + } else { + this.count += 1; + } + + this._input = input; + + // if tap count matches we have recognized it, + // else it has began recognizing... + let tapCount = this.count % options.taps; + if (tapCount === 0) { + // no failing requirements, immediately trigger the tap event + // or wait as long as the multitap interval to trigger + if (!this.hasRequireFailures()) { + return STATE_RECOGNIZED; + } else { + this._timer = setTimeout(() => { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.interval); + return STATE_BEGAN; + } + } + } + return STATE_FAILED; + } + + failTimeout() { + this._timer = setTimeout(() => { + this.state = STATE_FAILED; + }, this.options.interval); + return STATE_FAILED; + } + + reset() { + clearTimeout(this._timer); + } + + emit() { + if (this.state === STATE_RECOGNIZED) { + this._input.tapCount = this.count; + this.manager.emit(this.options.event, this._input); + } + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/clean-touch-actions.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/clean-touch-actions.js new file mode 100644 index 00000000..2244fd81 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/clean-touch-actions.js @@ -0,0 +1,44 @@ +import inStr from '../utils/in-str'; +import { + TOUCH_ACTION_NONE, + TOUCH_ACTION_PAN_X, + TOUCH_ACTION_PAN_Y, + TOUCH_ACTION_MANIPULATION, + TOUCH_ACTION_AUTO +} from './touchaction-Consts'; + +/** + * @private + * when the touchActions are collected they are not a valid value, so we need to clean things up. * + * @param {String} actions + * @returns {*} + */ +export default function cleanTouchActions(actions) { + // none + if (inStr(actions, TOUCH_ACTION_NONE)) { + return TOUCH_ACTION_NONE; + } + + let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + + // if both pan-x and pan-y are set (different recognizers + // for different directions, e.g. horizontal pan but vertical swipe?) + // we need none (as otherwise with pan-x pan-y combined none of these + // recognizers will work, since the browser would handle all panning + if (hasPanX && hasPanY) { + return TOUCH_ACTION_NONE; + } + + // pan-x OR pan-y + if (hasPanX || hasPanY) { + return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; + } + + // manipulation + if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { + return TOUCH_ACTION_MANIPULATION; + } + + return TOUCH_ACTION_AUTO; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/get-touchaction-props.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/get-touchaction-props.js new file mode 100644 index 00000000..72e5a680 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/get-touchaction-props.js @@ -0,0 +1,21 @@ +import prefixed from '../utils/prefixed'; +import { TEST_ELEMENT } from '../utils/utils-consts'; +import {window} from '../browser'; + +export const PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); +export const NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; + +export default function getTouchActionProps() { + if (!NATIVE_TOUCH_ACTION) { + return false; + } + let touchMap = {}; + let cssSupports = window.CSS && window.CSS.supports; + ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach((val) => { + + // If css.supports is not supported but there is native touch-action assume it supports + // all values. This is the case for IE 10 and 11. + return touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true; + }); + return touchMap; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-Consts.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-Consts.js new file mode 100644 index 00000000..568e5ad6 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-Consts.js @@ -0,0 +1,22 @@ +import getTouchActionProps from './get-touchaction-props'; + + + +// magical touchAction value +const TOUCH_ACTION_COMPUTE = 'compute'; +const TOUCH_ACTION_AUTO = 'auto'; +const TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented +const TOUCH_ACTION_NONE = 'none'; +const TOUCH_ACTION_PAN_X = 'pan-x'; +const TOUCH_ACTION_PAN_Y = 'pan-y'; +const TOUCH_ACTION_MAP = getTouchActionProps(); + +export { + TOUCH_ACTION_AUTO, + TOUCH_ACTION_COMPUTE, + TOUCH_ACTION_MANIPULATION, + TOUCH_ACTION_NONE, + TOUCH_ACTION_PAN_X, + TOUCH_ACTION_PAN_Y, + TOUCH_ACTION_MAP +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-constructor.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-constructor.js new file mode 100644 index 00000000..6efc96d8 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/touchactionjs/touchaction-constructor.js @@ -0,0 +1,127 @@ +import { + TOUCH_ACTION_COMPUTE, + TOUCH_ACTION_MAP, + TOUCH_ACTION_NONE, + TOUCH_ACTION_PAN_X, + TOUCH_ACTION_PAN_Y +} from './touchaction-Consts'; +import { + NATIVE_TOUCH_ACTION, + PREFIXED_TOUCH_ACTION, +} from "./get-touchaction-props"; +import { + DIRECTION_VERTICAL, + DIRECTION_HORIZONTAL +} from '../inputjs/input-consts'; +import each from '../utils/each'; +import boolOrFn from '../utils/bool-or-fn'; +import inStr from '../utils/in-str'; +import cleanTouchActions from './clean-touch-actions'; + +/** + * @private + * Touch Action + * sets the touchAction property or uses the js alternative + * @param {Manager} manager + * @param {String} value + * @constructor + */ +export default class TouchAction { + constructor(manager, value) { + this.manager = manager; + this.set(value); + } + + /** + * @private + * set the touchAction value on the element or enable the polyfill + * @param {String} value + */ + set(value) { + // find out the touch-action by the event handlers + if (value === TOUCH_ACTION_COMPUTE) { + value = this.compute(); + } + + if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) { + this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; + } + this.actions = value.toLowerCase().trim(); + } + + /** + * @private + * just re-set the touchAction value + */ + update() { + this.set(this.manager.options.touchAction); + } + + /** + * @private + * compute the value for the touchAction property based on the recognizer's settings + * @returns {String} value + */ + compute() { + let actions = []; + each(this.manager.recognizers, (recognizer) => { + if (boolOrFn(recognizer.options.enable, [recognizer])) { + actions = actions.concat(recognizer.getTouchAction()); + } + }); + return cleanTouchActions(actions.join(' ')); + } + + /** + * @private + * this method is called on each input cycle and provides the preventing of the browser behavior + * @param {Object} input + */ + preventDefaults(input) { + let { srcEvent } = input; + let direction = input.offsetDirection; + + // if the touch action did prevented once this session + if (this.manager.session.prevented) { + srcEvent.preventDefault(); + return; + } + + let { actions } = this; + let hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE]; + let hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y]; + let hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X]; + + if (hasNone) { + // do not prevent defaults if this is a tap gesture + let isTapPointer = input.pointers.length === 1; + let isTapMovement = input.distance < 2; + let isTapTouchTime = input.deltaTime < 250; + + if (isTapPointer && isTapMovement && isTapTouchTime) { + return; + } + } + + if (hasPanX && hasPanY) { + // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent + return; + } + + if (hasNone || + (hasPanY && direction & DIRECTION_HORIZONTAL) || + (hasPanX && direction & DIRECTION_VERTICAL)) { + return this.preventSrc(srcEvent); + } + } + + /** + * @private + * call preventDefault to prevent the browser's default behavior (scrolling in most cases) + * @param {Object} srcEvent + */ + preventSrc(srcEvent) { + this.manager.session.prevented = true; + srcEvent.preventDefault(); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/add-event-listeners.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/add-event-listeners.js new file mode 100644 index 00000000..99b2da80 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/add-event-listeners.js @@ -0,0 +1,14 @@ +import each from './each'; +import splitStr from './split-str'; +/** + * @private + * addEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ +export default function addEventListeners(target, types, handler) { + each(splitStr(types), (type) => { + target.addEventListener(type, handler, false); + }); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/assign.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/assign.js new file mode 100644 index 00000000..3b1314a2 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/assign.js @@ -0,0 +1,33 @@ +/** + * @private + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} target + * @param {...Object} objects_to_assign + * @returns {Object} target + */ +let assign; +if (typeof Object.assign !== 'function') { + assign = function assign(target) { + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + let output = Object(target); + for (let index = 1; index < arguments.length; index++) { + const source = arguments[index]; + if (source !== undefined && source !== null) { + for (const nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey]; + } + } + } + } + return output; + }; +} else { + assign = Object.assign; +} + +export default assign; \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bind-fn.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bind-fn.js new file mode 100644 index 00000000..b915d84a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bind-fn.js @@ -0,0 +1,12 @@ +/** + * @private + * simple function bind + * @param {Function} fn + * @param {Object} context + * @returns {Function} + */ +export default function bindFn(fn, context) { + return function boundFn() { + return fn.apply(context, arguments); + }; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bool-or-fn.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bool-or-fn.js new file mode 100644 index 00000000..b57ebb51 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/bool-or-fn.js @@ -0,0 +1,15 @@ +import { TYPE_FUNCTION } from './utils-consts'; +/** + * @private + * let a boolean value also be a function that must return a boolean + * this first item in args will be used as the context + * @param {Boolean|Function} val + * @param {Array} [args] + * @returns {Boolean} + */ +export default function boolOrFn(val, args) { + if (typeof val === TYPE_FUNCTION) { + return val.apply(args ? args[0] || undefined : undefined, args); + } + return val; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/deprecate.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/deprecate.js new file mode 100644 index 00000000..8f896375 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/deprecate.js @@ -0,0 +1,23 @@ +/** + * @private + * wrap a method with a deprecation warning and stack trace + * @param {Function} method + * @param {String} name + * @param {String} message + * @returns {Function} A new function wrapping the supplied method. + */ +export default function deprecate(method, name, message) { + let deprecationMessage = `DEPRECATED METHOD: ${name}\n${message} AT \n`; + return function() { + let e = new Error('get-stack-trace'); + let stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '') + .replace(/^\s+at\s+/gm, '') + .replace(/^Object.\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace'; + + let log = window.console && (window.console.warn || window.console.log); + if (log) { + log.call(window.console, deprecationMessage, stack); + } + return method.apply(this, arguments); + }; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/each.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/each.js new file mode 100644 index 00000000..dd124bb3 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/each.js @@ -0,0 +1,28 @@ +/** + * @private + * walk objects and arrays + * @param {Object} obj + * @param {Function} iterator + * @param {Object} context + */ +export default function each(obj, iterator, context) { + let i; + + if (!obj) { + return; + } + + if (obj.forEach) { + obj.forEach(iterator, context); + } else if (obj.length !== undefined) { + i = 0; + while (i < obj.length) { + iterator.call(context, obj[i], i, obj); + i++; + } + } else { + for (i in obj) { + obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); + } + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/extend.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/extend.js new file mode 100644 index 00000000..b3aa2372 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/extend.js @@ -0,0 +1,23 @@ +import deprecate from './deprecate'; +/** + * @private + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] + * @returns {Object} dest + */ +const extend = deprecate((dest, src, merge) => { + let keys = Object.keys(src); + let i = 0; + while (i < keys.length) { + if (!merge || (merge && dest[keys[i]] === undefined)) { + dest[keys[i]] = src[keys[i]]; + } + i++; + } + return dest; +}, 'extend', 'Use `assign`.'); + +export default extend; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/get-window-for-element.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/get-window-for-element.js new file mode 100644 index 00000000..f63cc409 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/get-window-for-element.js @@ -0,0 +1,10 @@ +/** + * @private + * get the window object of an element + * @param {HTMLElement} element + * @returns {DocumentView|Window} + */ +export default function getWindowForElement(element) { + let doc = element.ownerDocument || element; + return (doc.defaultView || doc.parentWindow || window); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/has-parent.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/has-parent.js new file mode 100644 index 00000000..0e52d532 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/has-parent.js @@ -0,0 +1,17 @@ +/** + * @private + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ +export default function hasParent(node, parent) { + while (node) { + if (node === parent) { + return true; + } + node = node.parentNode; + } + return false; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/if-undefined.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/if-undefined.js new file mode 100644 index 00000000..72ea9218 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/if-undefined.js @@ -0,0 +1,10 @@ +/** + * @private + * use the val2 when val1 is undefined + * @param {*} val1 + * @param {*} val2 + * @returns {*} + */ +export default function ifUndefined(val1, val2) { + return (val1 === undefined) ? val2 : val1; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-array.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-array.js new file mode 100644 index 00000000..11f7769e --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-array.js @@ -0,0 +1,22 @@ +/** + * @private + * find if a array contains the object using indexOf or a simple polyFill + * @param {Array} src + * @param {String} find + * @param {String} [findByKey] + * @return {Boolean|Number} false when not found, or the index + */ +export default function inArray(src, find, findByKey) { + if (src.indexOf && !findByKey) { + return src.indexOf(find); + } else { + let i = 0; + while (i < src.length) { + if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {// do not use === here, test fails + return i; + } + i++; + } + return -1; + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-str.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-str.js new file mode 100644 index 00000000..c45fb4f3 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/in-str.js @@ -0,0 +1,10 @@ +/** + * @private + * small indexOf wrapper + * @param {String} str + * @param {String} find + * @returns {Boolean} found + */ +export default function inStr(str, find) { + return str.indexOf(find) > -1; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/inherit.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/inherit.js new file mode 100644 index 00000000..1780b175 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/inherit.js @@ -0,0 +1,20 @@ +import assign from './assign'; +/** + * @private + * simple class inheritance + * @param {Function} child + * @param {Function} base + * @param {Object} [properties] + */ +export default function inherit(child, base, properties) { + let baseP = base.prototype; + let childP; + + childP = child.prototype = Object.create(baseP); + childP.constructor = child; + childP._super = baseP; + + if (properties) { + assign(childP, properties); + } +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/invoke-array-arg.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/invoke-array-arg.js new file mode 100644 index 00000000..7f909ab6 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/invoke-array-arg.js @@ -0,0 +1,18 @@ +import each from './each'; +/** + * @private + * if the argument is an array, we want to execute the fn on each entry + * if it aint an array we don't want to do a thing. + * this is used by all the methods that accept a single and array argument. + * @param {*|Array} arg + * @param {String} fn + * @param {Object} [context] + * @returns {Boolean} + */ +export default function invokeArrayArg(arg, fn, context) { + if (Array.isArray(arg)) { + each(arg, context[fn], context); + return true; + } + return false; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/merge.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/merge.js new file mode 100644 index 00000000..015447d9 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/merge.js @@ -0,0 +1,15 @@ +import deprecate from './deprecate'; +import extend from './extend'; +/** + * @private + * merge the values from src in the dest. + * means that properties that exist in dest will not be overwritten by src + * @param {Object} dest + * @param {Object} src + * @returns {Object} dest + */ +const merge = deprecate((dest, src) => { + return extend(dest, src, true); +}, 'merge', 'Use `assign`.'); + +export default merge; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/prefixed.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/prefixed.js new file mode 100644 index 00000000..9f4fd260 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/prefixed.js @@ -0,0 +1,25 @@ +import { VENDOR_PREFIXES } from './utils-consts'; +/** + * @private + * get the prefixed property + * @param {Object} obj + * @param {String} property + * @returns {String|Undefined} prefixed + */ +export default function prefixed(obj, property) { + let prefix; + let prop; + let camelProp = property[0].toUpperCase() + property.slice(1); + + let i = 0; + while (i < VENDOR_PREFIXES.length) { + prefix = VENDOR_PREFIXES[i]; + prop = (prefix) ? prefix + camelProp : property; + + if (prop in obj) { + return prop; + } + i++; + } + return undefined; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/remove-event-listeners.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/remove-event-listeners.js new file mode 100644 index 00000000..a2689874 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/remove-event-listeners.js @@ -0,0 +1,14 @@ +import each from './each'; +import splitStr from './split-str'; +/** + * @private + * removeEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ +export default function removeEventListeners(target, types, handler) { + each(splitStr(types), (type) => { + target.removeEventListener(type, handler, false); + }); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/set-timeout-context.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/set-timeout-context.js new file mode 100644 index 00000000..9f461bb4 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/set-timeout-context.js @@ -0,0 +1,13 @@ +import bindFn from './bind-fn'; + +/** + * @private + * set a timeout with a given scope + * @param {Function} fn + * @param {Number} timeout + * @param {Object} context + * @returns {number} + */ +export default function setTimeoutContext(fn, timeout, context) { + return setTimeout(bindFn(fn, context), timeout); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/split-str.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/split-str.js new file mode 100644 index 00000000..352e73fb --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/split-str.js @@ -0,0 +1,10 @@ +/** + * @private + * split string on whitespace + * @param {String} str + * @returns {Array} words + */ + +export default function splitStr(str) { + return str.trim().split(/\s+/g); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/to-array.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/to-array.js new file mode 100644 index 00000000..8187e832 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/to-array.js @@ -0,0 +1,9 @@ +/** + * @private + * convert array-like objects to real arrays + * @param {Object} obj + * @returns {Array} + */ +export default function toArray(obj) { + return Array.prototype.slice.call(obj, 0); +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-array.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-array.js new file mode 100644 index 00000000..36a95aeb --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-array.js @@ -0,0 +1,36 @@ +import inArray from './in-array'; + +/** + * @private + * unique array with objects based on a key (like 'id') or just by the array's value + * @param {Array} src [{id:1},{id:2},{id:1}] + * @param {String} [key] + * @param {Boolean} [sort=False] + * @returns {Array} [{id:1},{id:2}] + */ +export default function uniqueArray(src, key, sort) { + let results = []; + let values = []; + let i = 0; + + while (i < src.length) { + let val = key ? src[i][key] : src[i]; + if (inArray(values, val) < 0) { + results.push(src[i]); + } + values[i] = val; + i++; + } + + if (sort) { + if (!key) { + results = results.sort(); + } else { + results = results.sort((a, b) => { + return a[key] > b[key]; + }); + } + } + + return results; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-id.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-id.js new file mode 100644 index 00000000..10916ab1 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/unique-id.js @@ -0,0 +1,9 @@ +/** + * @private + * get a unique id + * @returns {number} uniqueId + */ +let _uniqueId = 1; +export default function uniqueId() { + return _uniqueId++; +} diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/utils-consts.js b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/utils-consts.js new file mode 100644 index 00000000..6bca6490 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/src/utils/utils-consts.js @@ -0,0 +1,17 @@ + +const VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o']; +const TEST_ELEMENT = typeof document === "undefined" ? {style: {}} : document.createElement('div'); + +const TYPE_FUNCTION = 'function'; + +const { round, abs } = Math; +const { now } = Date; + +export { + VENDOR_PREFIXES, + TEST_ELEMENT, + TYPE_FUNCTION, + round, + abs, + now +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/testrollup.config.js b/iut-expo-starter/node_modules/@egjs/hammerjs/testrollup.config.js new file mode 100644 index 00000000..a3e99c86 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/testrollup.config.js @@ -0,0 +1,31 @@ +import babel from "rollup-plugin-babel"; +import { uglify } from "rollup-plugin-uglify"; + +export default [ + { + input: "./tests/index.js", + plugins: [babel({ exclude: "node_modules/**" })], + output: { + format: "umd", + name: "Hammer", + exports: "default", + freeze: false, + interop: false, + sourcemap: true, + file: "./testdist/hammer.js", + }, + }, + { + input: "./tests/index.js", + plugins: [babel({ exclude: "node_modules/**" }), uglify({ sourcemap: true })], + output: { + format: "umd", + name: "Hammer", + exports: "default", + freeze: false, + interop: false, + sourcemap: true, + file: "./testdist/hammer.min.js", + }, + }, +]; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/index.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/index.js new file mode 100644 index 00000000..40174d91 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/index.js @@ -0,0 +1,6 @@ +import {Manager, Pan, Pinch, DIRECTION_NONE, DIRECTION_VERTICAL, DIRECTION_HORIZONTAL, DIRECTION_ALL, PointerEventInput, TouchMouseInput, TouchInput, MouseInput} from "../src/index"; + +console.log(Manager, Pan, Pinch, PointerEventInput, TouchMouseInput, TouchInput, MouseInput, DIRECTION_NONE, DIRECTION_VERTICAL, DIRECTION_HORIZONTAL, DIRECTION_ALL); + + +export default {}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/assets/style.css b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/assets/style.css new file mode 100644 index 00000000..332c999f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/assets/style.css @@ -0,0 +1,42 @@ +@import url(http://fonts.googleapis.com/css?family=Open+Sans); + +*, *:after, *:before { + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +html, body { + margin: 0; + padding: 0; + height: 100%; + min-height: 100%; + background: #eee; + font: 13px/1.5em 'Open Sans', Helvetica, Arial, sans-serif; +} + +a { + color: #4986e7; +} + +.bg1, .green { background: #42d692; } +.bg2, .blue { background: #4986e7; } +.bg3, .red { background: #d06b64; } +.bg4, .purple { background: #cd74e6; } +.bg5, .azure { background: #9fe1e7; } + +body { + margin: 20px; +} + +pre { + background: #fff; + padding: 20px; + margin-bottom: 20px; +} + +.container { + max-width: 900px; + margin: 0 auto; +} + +.clear { clear: both; } diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/compute_touch_action.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/compute_touch_action.html new file mode 100644 index 00000000..fca01c19 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/compute_touch_action.html @@ -0,0 +1,18 @@ + + + + + + + + Open the inspector and play a bit with the touchAction property. + + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/input.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/input.html new file mode 100644 index 00000000..c5ca43aa --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/input.html @@ -0,0 +1,51 @@ + + + + + + + + Hammer.js + + +
+
+
+ +

+
+        

+    
+ + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/log.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/log.html new file mode 100644 index 00000000..8a8bb292 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/log.html @@ -0,0 +1,61 @@ + + + + + + + Hammer.js + + +
+ +
+ +
+ +

+
+        

+
+    
+ + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/multiple.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/multiple.html new file mode 100644 index 00000000..544749e9 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/multiple.html @@ -0,0 +1,73 @@ + + + + + + + Hammer.js + + + +
+

+        
+
+        
+ +

Multiple instances the same time

+

You can run multiple instances of Hammer on your page and they will recognize each completely isolated + from each other. This makes it possible to build multi-user interfaces.

+ +
+ + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/nested.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/nested.html new file mode 100644 index 00000000..d562173e --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/nested.html @@ -0,0 +1,217 @@ + + + + + + + + Hammer.js + + + + + +
+
+
+
1.1
+
1.2
+
1.3
+
1.4
+
1.5
+
+
+
+
+
2.1
+
2.2
+
2.3
+
2.4
+
2.5
+
+
+
+
+
3.1
+
3.2
+
3.3
+
3.4
+
3.5
+
+
+
+
+
4.1
+
4.2
+
4.3
+
4.4
+
4.5
+
+
+
+
+
5.1
+
5.2
+
5.3
+
5.4
+
5.5
+
+
+
+ +
+

Nested Pan recognizers

+ +

Nested recognizers are possible with some threshold and with use of requireFailure().

+
+ + + + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator-googlemaps.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator-googlemaps.html new file mode 100644 index 00000000..6100621f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator-googlemaps.html @@ -0,0 +1,100 @@ + + + + + + Hammer.js + + + +
+
+ +

Gestures simulator

+

Used for unit-testing Hammer.js. To test it on the Google Maps view, you should open your + + Inspector and emulate a touch-screen. + Or just open it on your touch-device.

+

Currently, it only triggers touchEvents.

+
+ + + + + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator.html new file mode 100644 index 00000000..cf4fa046 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/simulator.html @@ -0,0 +1,118 @@ + + + + + + Hammer.js + + + +
+ +
+
+ +

+
+    

+
+
+ + + + + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/touchaction.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/touchaction.html new file mode 100644 index 00000000..edff019a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/touchaction.html @@ -0,0 +1,91 @@ + + + + + + Hammer.js + + + + + +
+

Hammer provides a kind of polyfill + for the browsers that don't support the touch-action property.

+ +
Your browser has support for the touch-action property!
+
Your browser doesn't support the touch-action property, + so we use the polyfill.
+ +

touch-action: auto

+

Should prevent nothing.

+
+ +

touch-action: pan-y

+

Should prevent scrolling on horizontal movement. This is set by default when creating a Hammer instance.

+
+ +

touch-action: pan-x

+

Should prevent scrolling on vertical movement.

+
+ +

touch-action: pan-x pan-y

+

Should not prevent any scrolling on any movement. Horizontal and vertical scrolling handled by the browser directly.

+
+ +

touch-action: none

+

Should prevent all.

+
+
+ + + +
+

hi.

+ + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/visual.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/visual.html new file mode 100644 index 00000000..b24a7a4f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/manual/visual.html @@ -0,0 +1,211 @@ + + + + + + Hammer.js + + + + + +
+
+ + + + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/assets/utils.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/assets/utils.js new file mode 100644 index 00000000..10fda618 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/assets/utils.js @@ -0,0 +1,50 @@ +var utils = { + /** + * trigger simple dom event + * @param obj + * @param name + */ + triggerDomEvent: function(obj, name) { + var event = document.createEvent('Event'); + event.initEvent(name, true, true); + obj.dispatchEvent(event); + }, + + + createTouchEvent: function(name, x, y, identifier) { + var event = document.createEvent('Event'); + event.initEvent('touch' + name, true, true); + + event.touches = event.targetTouches = [{ + clientX: x, + clientY: y, + identifier: identifier || 0 + }]; + + //https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches + event.changedTouches = [{ + clientX: x, + clientY: y, + identifier: identifier || 0 + }]; + + return event; + }, + + dispatchTouchEvent: function(el, name, x, y, identifier) { + var event = utils.createTouchEvent(name, x, y, identifier); + el.dispatchEvent(event); + }, + + createHitArea: function(parent) { + if (parent == null) { + parent = document.getElementById('qunit-fixture') + } + var hitArea = document.createElement('div'); + hitArea.style.background = '#eee'; + hitArea.style.height = '300px'; + + parent.appendChild(hitArea); + return hitArea; + } +}; diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pan.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pan.js new file mode 100644 index 00000000..96d9050c --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pan.js @@ -0,0 +1,67 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,Simulator */ + +var el; +var hammer; + +QUnit.module('Pan Gesture', { + beforeEach: function() { + el = document.createElement('div'); + document.body.appendChild(el); + + hammer = new Hammer(el, { recognizers: [] }); + }, + afterEach: function() { + document.body.removeChild(el); + hammer.destroy(); + } + }); + +QUnit.test('`panstart` and `panmove` should be recognized', function(assert) { + assert.expect(2); + + var panMoveCount = 0; + var pan = new Hammer.Pan({ threshold: 1 }); + + hammer.add(pan); + hammer.on('panstart', function() { + assert.ok(true, 'Pan start triggered'); + }); + hammer.on('panmove', function() { + panMoveCount++; + }); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'move', 70, 50); + utils.dispatchTouchEvent(el, 'move', 90, 50); + + assert.equal(panMoveCount, 1, 'exactly one panMove triggered'); + }); + +QUnit.test('Pan event flow should be start -> left -> end', function(assert) { + var done = assert.async(); + assert.expect(1); + var pan = new Hammer.Pan({ threshold: 1 }); + hammer.add(pan); + + var eventflow = ''; + var isCalledPanleft = false; + hammer.on('panstart', function() { + eventflow += 'start'; + }); + hammer.on('panleft', function() { + if (!isCalledPanleft) { + isCalledPanleft = true; + eventflow += 'left'; + } + }); + hammer.on('panend', function() { + eventflow += 'end'; + isCalledPanleft = true; + }); + + Simulator.gestures.pan(el, { deltaX: -100, deltaY: 0 }, function() { + assert.equal(eventflow, 'startleftend', 'correct event flow'); + done(); + }); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pinch.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pinch.js new file mode 100644 index 00000000..b1f1fece --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_pinch.js @@ -0,0 +1,46 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,Simulator */ + +var el; +var hammer; + +QUnit.module('Pinch Gesture', { + beforeEach: function() { + el = document.createElement('div'); + document.body.appendChild(el); + + hammer = new Hammer(el, { recognizers: [] }); + }, + afterEach: function() { + document.body.removeChild(el); + hammer.destroy(); + } + }); + +QUnit.test('Pinch event flow should be start -> in -> end', function(assert) { + var done = assert.async(); + assert.expect(1); + var pinch = new Hammer.Pinch({ enable: true, threshold: 0.1 }); + hammer.add(pinch); + + var eventflow = ''; + var isFiredPinchin = false; + hammer.on('pinchstart', function() { + eventflow += 'start'; + }); + hammer.on('pinchin', function() { + if (!isFiredPinchin) { + isFiredPinchin = true; + eventflow += 'in'; + } + }); + hammer.on('pinchend', function() { + eventflow += 'end'; + isFiredPinchin = false; + }); + + Simulator.gestures.pinch(el, { duration: 500, scale: 0.5 }, function() { + assert.equal(eventflow, 'startinend', 'correct event flow'); + done(); + }); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_swipe.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_swipe.js new file mode 100644 index 00000000..60fb58da --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/gestures/test_swipe.js @@ -0,0 +1,29 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,Simulator */ + +var el; +var hammer; +var swipeCount = 0; + +QUnit.module('Swipe Gesture', { + beforeEach: function() { + el = utils.createHitArea(); + hammer = new Hammer(el, { recognizers: [] }); + swipeCount = 0; + }, + afterEach: function() { + hammer.destroy(); + } + }); + +QUnit.test('swipe can be recognized', function(assert) { + assert.expect(1); + var done = assert.async(); + var swipe = new Hammer.Swipe({ threshold: 1 }); + hammer.add(swipe); + hammer.on('swipe', function() { + assert.ok(true); + done(); + }); + Simulator.gestures.swipe(el); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/index.html b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/index.html new file mode 100644 index 00000000..e87df116 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/index.html @@ -0,0 +1,43 @@ + + + + + Tests + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_enable.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_enable.js new file mode 100644 index 00000000..8af9b8bb --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_enable.js @@ -0,0 +1,179 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils */ +/* jshint unused:false */ + +var el, + hammer, + counter; + +QUnit.module('Test recognizer enable', { + beforeEach: function() { + el = utils.createHitArea(); + hammer = new Hammer.Manager(el, { recognizers: [] }); + counter = 0; + }, + afterEach: function() { + hammer && hammer.destroy(); + } + }); + +QUnit.test('should disable a recognizer through the `enable` constructor parameter', function(assert) { + assert.expect(1); + hammer.add(new Hammer.Tap({ enable: false })); + hammer.on('tap', function() { + counter++; + }); + + var done = assert.async(); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + setTimeout(function() { + + assert.equal(counter, 0, 'counter is zero'); + done(); + }, 100); + }); + +QUnit.test('should disable recognizing when the manager is disabled.', function(assert) { + assert.expect(1); + hammer.set({ enable: false }); + hammer.add(new Hammer.Tap()); + hammer.on('tap', function() { + counter++; + }); + + var done = assert.async(); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + setTimeout(function() { + assert.equal(counter, 0, 'counter is zero'); + done(); + }, 100); + }); + +QUnit.test('should toggle a recognizer using the `set` call to the recognizer enable property', function(assert) { + assert.expect(2); + + hammer.add(new Hammer.Tap()); + hammer.on('tap', function() { + counter++; + }); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 1); + + hammer.get('tap').set({ enable: false }); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 1, 'counter is 1'); + }); + +QUnit.test('should accept the `enable` constructor parameter as function', function(assert) { + assert.expect(2); + + var canRecognizeTap = false; + + var tap = new Hammer.Tap({ + enable: function() { + return canRecognizeTap; + } + }); + + hammer.add(tap); + hammer.on('tap', function() { + counter++; + }); + + var done = assert.async(); + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + setTimeout(function() { + assert.equal(counter, 0, 'counter is zero'); + + canRecognizeTap = true; + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + assert.equal(counter, 1, 'counter is 1'); + done(); + }, 100); + }); + +QUnit.test('should accept a function parameter with `set`', function(assert) { + assert.expect(3); + + hammer.add(new Hammer.Tap()); + hammer.on('tap', function() { + counter++; + }); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 1, 'counter is 1'); + + var canRecognizeTap = false; + hammer.get('tap').set({ enable: function() { + return canRecognizeTap; + } }); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 1, 'counter is 1'); + + canRecognizeTap = true; + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 2, 'counter is 2'); + }); + +QUnit.test('should pass the recognizer and optional the input parameter to the `enable` callback', function(assert) { + assert.expect(2); + + var tap; + + // The enable function is called initially to setup the touch-action property + // at that moment there isn't any input + var canEnable = function(recognizer, input) { + assert.equal(recognizer, tap, 'recognizer is tap'); + return true; + }; + tap = new Hammer.Tap({ enable: canEnable }); + hammer.add(tap); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + }); + +QUnit.test('should toggle based on other object method', function(assert) { + assert.expect(2); + + var view = { + state: 0, + canRecognizeTap: function(recognizer, input) { + return this.state !== 0; + } + }; + + hammer.add(new Hammer.Tap({ enable: function(rec, input) { + return view.canRecognizeTap(rec, input); + } })); + hammer.on('tap', function() { + counter++; + }); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 0, 'counter is 0'); + + view.state = 1; + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + assert.equal(counter, 1, 'counter is 1'); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_events.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_events.js new file mode 100644 index 00000000..fe7f04ca --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_events.js @@ -0,0 +1,64 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,el */ + +QUnit.module('eventEmitter'); + +QUnit.test('test the eventemitter', function(assert) { + assert.expect(6); + + var ee = new Hammer.Manager(utils.createHitArea()); + var inputData = { + target: document.body, + srcEvent: { + preventDefault: function() { + assert.ok(true, 'preventDefault ref'); + }, + target: document.body + } + }; + + function event3Handler() { + assert.ok(true, 'emitted event3'); + } + + ee.on('testEvent1', function() { + assert.ok(true, 'emitted event'); + }); + ee.on('testEvent2', function(ev) { + assert.ok(true, 'emitted event'); + ev.preventDefault(); + assert.ok(ev.target === document.body, 'target is the body'); + }); + ee.on('testEvent3', event3Handler); + + ee.emit('testEvent1', inputData); + ee.emit('testEvent2', inputData); + ee.emit('testEvent3', inputData); + + // Unbind testEvent2 + ee.off('testEvent2'); + ee.off('testEvent3', event3Handler); + + ee.emit('testEvent1', inputData); // Should trigger testEvent1 again + ee.emit('testEvent2', inputData); // Doenst trigger a thing + ee.emit('testEvent3', inputData); // Doenst trigger a thing + + // Destroy + ee.destroy(); + + ee.emit('testEvent1', inputData); // Doenst trigger a thing + ee.emit('testEvent2', inputData); // Doenst trigger a thing + ee.emit('testEvent3', inputData); // Doenst trigger a thing + }); + +/* + * Hammer.Manager.off method : exception handling + */ +QUnit.test('When Hammer.Manager didnt attach an event, `off` method is ignored', function(assert) { + var count = 0; + var hammer = new Hammer(el, { inputTarget: document.body }); + hammer.off('swipeleft', function() { + count++; + }); + assert.ok(true, 'nothing'); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_gestures.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_gestures.js new file mode 100644 index 00000000..b0be3141 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_gestures.js @@ -0,0 +1,225 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,Simulator */ + +// TODO: this tests fails because tapRecognizer changes +// it could be that tapRecognizer setup its BEGAN state and +// disable the other gesture recognition +var el; +var hammer; +var events; +var allGestureEvents = [ + 'tap doubletap press', + 'pinch pinchin pinchout pinchstart pinchmove pinchend pinchcancel', + 'rotate rotatestart rotatemove rotateend rotatecancel', + 'pan panstart panmove panup pandown panleft panright panend pancancel', + 'swipe swipeleft swiperight swipeup swipedown' +].join(' '); + +QUnit.module('Gesture recognition', { + beforeEach: function() { + el = utils.createHitArea(); + hammer = new Hammer(el); + hammer.get('pinch') + .set({ // Some threshold, since the simulator doesnt stays at scale:1 when rotating + enable: true, + threshold: 0.1 + }); + + hammer.get('rotate') + .set({ enable: true }); + + hammer.on(allGestureEvents, function(ev) { + events[ ev.type ] = true; + }); + events = {}; + }, + afterEach: function() { + hammer && hammer.destroy(); + events = null; + } + }); + +QUnit.test('recognize pan', function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.pan(el, { duration: 500, deltaX: 100, deltaY: 0 }, function() { + assert.deepEqual(events, { + pan: true, + panstart: true, + panmove: true, + panright: true, + panend: true + }, 'Pan events recognized'); + done(); + }); + }); + +QUnit.test('recognize press', function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.press(el, null, function() { + assert.deepEqual(events, { + press: true + }); + done(); + }, 'only press was recognized'); + }); + +QUnit.test('recognize swipe', function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.swipe(el, { duration: 300, deltaX: 400, deltaY: 0 }, function() { + assert.deepEqual(events, { + pan: true, + panstart: true, + panmove: true, + panright: true, + panend: true, + swipe: true, + swiperight: true + }, 'pan and swipe events were recognized'); + done(); + }); + }); + +QUnit.test('recognize pinch', function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.pinch(el, { duration: 500, scale: 0.5 }, function() { + assert.deepEqual(events, { + pinch: true, + pinchstart: true, + pinchmove: true, + pinchend: true, + pinchin: true + }, 'pinch events were recognized'); + done(); + }); + }); + +QUnit.test('recognize children multitouch pinch', function(assert) { + var done = assert.async(); + assert.expect(1); + + var el1 = utils.createHitArea(el); + var el2 = utils.createHitArea(el); + + Simulator.gestures.pinch([ el1, el2 ], { duration: 500, scale: 0.5 }, function() { + assert.deepEqual(events, { + pinch: true, + pinchstart: true, + pinchmove: true, + pinchend: true, + pinchin: true + }, 'pinch events on child were recognized'); + done(); + }); + }); + +QUnit.test('recognize parent-child multitouch pinch', function(assert) { + var done = assert.async(); + assert.expect(1); + + var el1 = utils.createHitArea(el); + + Simulator.gestures.pinch([ el, el1 ], { duration: 100, scale: 0.5 }, function() { + assert.deepEqual(events, { + pinch: true, + pinchstart: true, + pinchmove: true, + pinchend: true, + pinchin: true + }, 'Pinch events on parent were recognized'); + done(); + }); + }); + +QUnit.test('recognize rotate', function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.rotate(el, { duration: 500, scale: 1 }, function() { + assert.deepEqual(events, { + rotate: true, + rotatestart: true, + rotatemove: true, + rotateend: true + }, 'Rotate events recognized'); + done(); + }); + }); + +QUnit.test('recognize multitouch rotate', function(assert) { + var done = assert.async(); + assert.expect(1); + + var el1 = utils.createHitArea(el); + + Simulator.gestures.rotate([ el, el1 ], { duration: 500, scale: 1 }, function() { + assert.deepEqual(events, { + rotate: true, + rotatestart: true, + rotatemove: true, + rotateend: true + }, 'Rotate events were recognized'); + done(); + }); + }); + +QUnit.test('recognize rotate and pinch simultaneous', function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.pinchRotate(el, { duration: 500, scale: 2 }, function() { + assert.deepEqual(events, { + rotate: true, + rotatestart: true, + rotatemove: true, + rotateend: true, + pinch: true, + pinchstart: true, + pinchmove: true, + pinchend: true, + pinchout: true + }, 'Rotate and pinch were recognized together'); + done(); + }); + }); + +QUnit.test("don't recognize pan and swipe when moving down, when only horizontal is allowed", function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.swipe(el, { duration: 250, deltaX: 0, deltaZ: 200 }, function() { + assert.deepEqual(events, { }, 'No events were recognized'); + done(); + }); + }); + +QUnit.test("don't recognize press if duration is too short.", function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.press(el, { duration: 240 }); + + setTimeout(function() { + assert.deepEqual(events, { tap: true }, 'Tap gesture has been recognized.'); + done(); + }, 275); + }); + +QUnit.test("don't recognize tap if duration is too long.", function(assert) { + var done = assert.async(); + assert.expect(1); + + Simulator.gestures.tap(el, { duration: 255 }); + + setTimeout(function() { + assert.deepEqual(events, { press: true }, 'Press gesture has been recognized.'); + done(); + }, 275); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_hammer.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_hammer.js new file mode 100644 index 00000000..b75b87a5 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_hammer.js @@ -0,0 +1,197 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals,requireTemplateStringsForConcatenation,requireArrayDestructuring +/* globals QUnit,Hammer,utils,Simulator */ + +var el, el2, + hammer, hammer2; + +QUnit.module('Tests', { + beforeEach: function() { + el = utils.createHitArea(); + el2 = utils.createHitArea(); + }, + + afterEach: function() { + if (hammer) { + hammer.destroy(); + hammer = null; + } + if (hammer2) { + hammer2.destroy(); + hammer2 = null; + } + } + }); + +// since Hammer is now a ES6 Class and we cannot call a class as a function, +// it needs a `new` keyword prefixed that makes this Shortcut test kinda Redundant. + +// QUnit.test( "hammer shortcut", function( assert ) { +// assert.expect( 2 ); +// +// Hammer.defaults.touchAction = "pan-y"; +// hammer = Hammer( el ); +// +// assert.ok( hammer instanceof Hammer.Manager, "returns an instance of Manager" ); +// assert.ok( hammer.touchAction.actions == Hammer.defaults.touchAction, "set the default touchAction" ); +// } ); +// +// QUnit.test( "hammer shortcut with options", function( assert ) { +// assert.expect( 2 ); +// +// hammer = Hammer( el, { +// touchAction: "none" +// } ); +// assert.ok( hammer instanceof Hammer.Manager, "returns an instance of Manager" ); +// assert.ok( hammer.touchAction.actions == "none", "set the default touchAction" ); +// } ); + +/* Creating a hammer instance does not work on the same way + * when using Hammer or Hammer.Manager. + * + * This can confuse developers who read tests to use the library when doc is missing. + */ +QUnit.test('Hammer and Hammer.Manager constructors work exactly on the same way.', function(assert) { + assert.expect(2); + + hammer = new Hammer(el, {}); + assert.equal(Hammer.defaults.preset.length, hammer.recognizers.length, + 'Correct number of recognizers by default'); + + hammer2 = new Hammer.Manager(el, {}); + assert.equal(0, hammer2.recognizers.length, 'No default recognizers with manager and empty object'); + }); + +/* DOC to disable default recognizers should be added. + * + * - Hammer(el). IMO: Currently, well done. + * - Hammer(el, {}) . IMO: should disable default recognizers + * - Hammer(el, {recognizers: null}). IMO: now, it fails. + * - Hammer(el, {recognizers: []}). It works, but it is likely not intuitive. + */ +QUnit.test('A Hammer instance can be setup to not having default recognizers.', function(assert) { + assert.expect(1); + + hammer = new Hammer(el, { recognizers: false }); + assert.equal(0, hammer.recognizers.length, 'No default recognizers with recognizers false'); + }); + +/* The case was when I added a custom tap event which was added to the default + * recognizers, and my custom tap gesture wasn't working (I do not know exactly the reason), + * but removing the default recognizers solved the issue. + */ +QUnit.test('Adding the same recognizer type should remove the old recognizer', function(assert) { + assert.expect(4); + + hammer = new Hammer(el); + + assert.ok(!!hammer.get('tap')); + assert.equal(7, hammer.recognizers.length, '7 recognizers found'); + + var newTap = new Hammer.Tap({ time: 1337 }); + hammer.add(newTap); + + assert.equal(7, hammer.recognizers.length, '7 recognizers found after adding tap'); + assert.equal(1337, hammer.get('tap').options.time, 'Time has been updated to reflect new tap'); + }); + +/* + * Swipe gesture: + * - in this tests, it does not update input.velocity ( always 0) + * - does not fire swipeleft or swiperight events + */ +QUnit.test('Swiping to the left should fire swipeleft event', function(assert) { + var done = assert.async(); + assert.expect(2); + + hammer = new Hammer(el, { recognizers: [] }); + hammer.add(new Hammer.Swipe()); + hammer.on('swipe swipeleft', function() { + assert.ok(true); + }); + + Simulator.gestures.swipe(el, { pos: [ 300, 300 ], deltaY: 0, deltaX: -200 }, function() { + done(); + }); + }); + +/* + * Input target change + */ +QUnit.test('Should detect input while on other element', function(assert) { + var done = assert.async(); + assert.expect(1); + + hammer = new Hammer(el, { inputTarget: document.body }); + hammer.on('tap', function() { + assert.ok(true); + }); + + Simulator.gestures.tap(document.body, null, function() { + done(); + }); + }); + +/* Hammer.Manager constructor accepts a "recognizers" option in which each + * element is an array representation of a Recognizer. + */ +QUnit.test('Hammer.Manager accepts recognizers as arrays.', function(assert) { + assert.expect(4); + + hammer = new Hammer.Manager(el, { + recognizers: [ + [ Hammer.Swipe ], + [ Hammer.Pinch ], + [ Hammer.Rotate ], + [ Hammer.Pan, { direction: Hammer.DIRECTION_UP }, [ 'swipe', 'pinch' ], [ 'rotate' ] ] + ] + }); + assert.equal(4, hammer.recognizers.length, '4 recognizers found'); + + var recognizerActual = hammer.recognizers[ 3 ]; + assert.equal(recognizerActual.options.direction, Hammer.DIRECTION_UP, + 'Recognize direction from options'); + assert.equal(2, Object.keys(recognizerActual.simultaneous).length, '2 simultanious recognizers found'); + assert.equal(1, recognizerActual.requireFail.length, '1 require failing recognizer found'); + }); + +/* + * Removing a recognizer which cannot be found would errantly remove the last recognizer in the + * manager's list. + */ +QUnit.test('Remove non-existent recognizer.', function(assert) { + assert.expect(1); + + hammer = new Hammer(el, { recognizers: [] }); + hammer.add(new Hammer.Swipe()); + hammer.remove('tap'); + + assert.equal(1, hammer.recognizers.length, '1 recognizer found'); + }); + +QUnit.test('check whether Hammer.defaults.cssProps is restored', function(assert) { + var beforeCssProps = { + userSelect: 'text', + touchSelect: 'grippers', + touchCallout: 'default', + contentZooming: 'chained', + userDrag: 'element', + tapHighlightColor: 'rgba(0, 1, 0, 0)' + }; + var prop; + Hammer.each(Hammer.defaults.cssProps, function(value, name) { + prop = Hammer.prefixed(el.style, name); + if (prop) { + el.style[ prop ] = beforeCssProps[ name ]; + } + }); + + hammer = new Hammer(el); + hammer.destroy(); + hammer = null; + Hammer.each(Hammer.defaults.cssProps, function(value, name) { + prop = Hammer.prefixed(el.style, name); + if (prop) { + assert.equal(el.style[ prop ], beforeCssProps[ name ], 'check if ' + name + ' is restored'); + } + }); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_jquery_plugin.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_jquery_plugin.js new file mode 100644 index 00000000..33d26ab7 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_jquery_plugin.js @@ -0,0 +1,63 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,Simulator,$,jQuery */ + +var el, hammer, events; + +var jQueryPluginPath = '../../node_modules/jquery-hammerjs/jquery.hammer.js'; + +QUnit.module('jQuery plugin', { + beforeEach: function() { + el = utils.createHitArea(); + events = {}; + }, + afterEach: function() { + hammer && hammer.destroy(); + } + }); + +QUnit.test('trigger pan with jQuery', function(assert) { + var done = assert.async(); + assert.expect(2); + + $.getScript(jQueryPluginPath, function() { + jQuery(el).hammer(); + jQuery(el).bind('panstart pan panmove panright panend', function(ev) { + if (ev.gesture) { + events[ ev.type ] = true; + } + }); + + Simulator.gestures.pan(el, { deltaX: 50, deltaY: 0 }, function() { + + assert.deepEqual(events, { + pan: true, + panstart: true, + panmove: true, + panright: true, + panend: true + }, 'Pan events recognized'); + + assert.ok(jQuery(el).data('hammer') instanceof Hammer.Manager, 'data attribute refers to the instance'); + done(); + }); + }); + }); + +QUnit.test('trigger pan without jQuery should still work', function(assert) { + var done = assert.async(); + assert.expect(1); + var hammer = new Hammer(el); + hammer.on('panstart pan panmove panright panend', function(ev) { + events[ev.type] = true; + }); + Simulator.gestures.pan(el, { deltaX: 50, deltaY: 0 }, function() { + assert.deepEqual(events, { + pan: true, + panstart: true, + panmove: true, + panright: true, + panend: true + }, 'Pan events recognized'); + done(); + }); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_multiple_taps.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_multiple_taps.js new file mode 100644 index 00000000..00e703a7 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_multiple_taps.js @@ -0,0 +1,97 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils*/ + +var el; +var hammer; + +var tripleTapCount = 0; +var doubleTapCount = 0; +var tapCount = 0; + +QUnit.module('Tap delay', { + beforeEach: function() { + el = utils.createHitArea(); + hammer = new Hammer(el, { recognizers: [] }); + + var tap = new Hammer.Tap(); + var doubleTap = new Hammer.Tap({ event: 'doubleTap', taps: 2 }); + var tripleTap = new Hammer.Tap({ event: 'tripleTap', taps: 3 }); + + hammer.add([ tripleTap, doubleTap, tap ]); + + tripleTap.recognizeWith([ doubleTap, tap ]); + doubleTap.recognizeWith(tap); + + doubleTap.requireFailure(tripleTap); + tap.requireFailure([ tripleTap, doubleTap ]); + + tripleTapCount = 0; + doubleTapCount = 0; + tapCount = 0; + + hammer.on('tap', function() { + tapCount++; + }); + hammer.on('doubleTap', function() { + doubleTapCount++; + }); + hammer.on('tripleTap', function() { + tripleTapCount++; + }); + }, + afterEach: function() { + hammer.destroy(); + } + }); +QUnit.test('When a tripleTap is fired, doubleTap and Tap should not be recognized', function(assert) { + var done = assert.async(); + assert.expect(3); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + setTimeout(function() { + assert.equal(tripleTapCount, 1, 'one tripletap event'); + assert.equal(doubleTapCount, 0, 'no doubletap event'); + assert.equal(tapCount, 0, 'no singletap event'); + done(); + }, 350); + }); +QUnit.test('When a doubleTap is fired, tripleTap and Tap should not be recognized', function(assert) { + var done = assert.async(); + assert.expect(3); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + setTimeout(function() { + assert.equal(tripleTapCount, 0, 'No tripple taps recognized'); + assert.equal(doubleTapCount, 1, '1 double tap recognized'); + assert.equal(tapCount, 0, 'No single taps recognized'); + done(); + }, 350); + }); + +QUnit.test('When a tap is fired, tripleTap and doubleTap should not be recognized', function(assert) { + var done = assert.async(); + assert.expect(3); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'end', 50, 50); + + setTimeout(function() { + assert.equal(tripleTapCount, 0, 'No tripple taps recognized'); + assert.equal(doubleTapCount, 0, 'No double taps recognized'); + assert.equal(tapCount, 1, '1 single tap recognized'); + done(); + }, 350); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_nested_gesture_recognizers.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_nested_gesture_recognizers.js new file mode 100644 index 00000000..3f8d8d51 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_nested_gesture_recognizers.js @@ -0,0 +1,170 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils*/ +/*jshint -W079 */ + +var parent, + child, + hammerChild, + hammerParent; + +QUnit.module('Nested gesture recognizers (Tap Child + Pan Parent)', { + beforeEach: function() { + parent = document.createElement('div'); + child = document.createElement('div'); + + document.getElementById('qunit-fixture').appendChild(parent); + parent.appendChild(child); + + hammerParent = new Hammer.Manager(parent, { + touchAction: 'none' + }); + hammerChild = new Hammer.Manager(child, { + touchAction: 'none' + }); + + hammerChild.add(new Hammer.Tap()); + hammerParent.add(new Hammer.Pan({ threshold: 5, pointers: 1 })); + }, + afterEach: function() { + hammerChild.destroy(); + hammerParent.destroy(); + } + }); + +QUnit.test('Tap on the child', function(assert) { + assert.expect(1); + + hammerChild.on('tap', function() { + assert.ok(true); + }); + hammerParent.on('tap', function() { + throw new Error('tap should not fire on parent'); + }); + + utils.dispatchTouchEvent(child, 'start', 0, 10); + utils.dispatchTouchEvent(child, 'end', 0, 10); + }); + +QUnit.test('Panning on the child should fire parent pan and should not fire child tap event', function(assert) { + assert.expect(1); + + hammerChild.on('tap', function() { + throw new Error('tap should not fire on parent'); + }); + hammerParent.on('panend', function() { + assert.ok(true); + }); + + utils.dispatchTouchEvent(child, 'start', 10, 0); + utils.dispatchTouchEvent(child, 'move', 20, 0); + utils.dispatchTouchEvent(child, 'end', 30, 0); + + }); + +/* + // test (optional pointers validation) + test('Panning with one finger down on child, other on parent', function () { + expect(1); + + var event, + touches; + + hammerParent.on('panend', function () { + ok(true); + }); + + // one finger one child + utils.dispatchTouchEvent(child, 'start', 10, 0, 0); + utils.dispatchTouchEvent(parent, 'start', 12, 0, 1); + + touches = [ + {clientX: 20, clientY: 0, identifier: 0 }, + {clientX: 20, clientY: 0, identifier: 1 } + ]; + + event = document.createEvent('Event'); + event.initEvent('touchmove', true, true); + event.touches = touches; + event.changedTouches = touches; + + parent.dispatchEvent(event); + + touches = [ + {clientX: 30, clientY: 0, identifier: 0 }, + {clientX: 30, clientY: 0, identifier: 1 } + ]; + + event = document.createEvent('Event'); + event.initEvent('touchend', true, true); + event.touches = touches; + event.changedTouches = touches; + + parent.dispatchEvent(event); + }); + */ + +var pressPeriod = 600; +QUnit.module('Nested gesture recognizers (Press Child + Pan Parent)', { + beforeEach: function() { + parent = document.createElement('div'); + child = document.createElement('div'); + + document.getElementById('qunit-fixture').appendChild(parent); + parent.appendChild(child); + + hammerParent = new Hammer.Manager(parent, { + touchAction: 'none' + }); + hammerChild = new Hammer.Manager(child, { + touchAction: 'none' + }); + + hammerChild.add(new Hammer.Press({ time: pressPeriod })); + hammerParent.add(new Hammer.Pan({ threshold: 5, pointers: 1 })); + }, + afterEach: function() { + hammerChild.destroy(); + hammerParent.destroy(); + } + }); + +QUnit.test('Press on the child', function(assert) { + assert.expect(1); + + hammerChild.on('press', function() { + assert.ok(true); + }); + hammerParent.on('press', function() { + throw new Error('press should not fire on parent'); + }); + + utils.dispatchTouchEvent(child, 'start', 0, 10); + + var done = assert.async(); + + setTimeout(function() { + done(); + }, pressPeriod); + }); + +QUnit.test('When Press is followed by Pan on the same element, both gestures are recognized', function(assert) { + assert.expect(2); + hammerChild.on('press', function() { + assert.ok(true); + }); + hammerParent.on('panend', function() { + assert.ok(true); + }); + + utils.dispatchTouchEvent(child, 'start', 0, 10); + var done = assert.async(); + + setTimeout(function() { + utils.dispatchTouchEvent(child, 'move', 10, 10); + utils.dispatchTouchEvent(child, 'move', 20, 10); + utils.dispatchTouchEvent(child, 'move', 30, 10); + utils.dispatchTouchEvent(child, 'end', 30, 10); + + done(); + }, pressPeriod); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_propagation_bubble.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_propagation_bubble.js new file mode 100644 index 00000000..ec4bd858 --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_propagation_bubble.js @@ -0,0 +1,60 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils*/ +/*jshint -W079 */ + +var parent; +var child; +var hammerChild; +var hammerParent; + +QUnit.module('Propagation (Tap in Child and Parent)', { + beforeEach: function() { + parent = document.createElement('div'); + child = document.createElement('div'); + + document.getElementById('qunit-fixture').appendChild(parent); + parent.appendChild(child); + + hammerParent = new Hammer.Manager(parent); + hammerChild = new Hammer.Manager(child); + + hammerChild.add(new Hammer.Tap()); + hammerParent.add(new Hammer.Tap()); + }, + afterEach: function() { + hammerChild.destroy(); + hammerParent.destroy(); + } + }); + +QUnit.test('Tap on the child, fires also the tap event to the parent', function(assert) { + assert.expect(2); + + hammerChild.on('tap', function() { + assert.ok(true); + }); + hammerParent.on('tap', function() { + assert.ok(true); + }); + + utils.dispatchTouchEvent(child, 'start', 0, 10); + utils.dispatchTouchEvent(child, 'end', 0, 10); + }); + +QUnit.test('When tap on the child and the child stops the input event propagation, the tap event does not get fired in the parent', function(assert) { + assert.expect(1); + + hammerChild.on('tap', function() { + assert.ok(true); + }); + hammerParent.on('tap', function() { + throw new Error('parent tap gesture should not be recognized'); + }); + + child.addEventListener('touchend', function(ev) { + ev.stopPropagation(); + }); + + utils.dispatchTouchEvent(child, 'start', 0, 10); + utils.dispatchTouchEvent(child, 'end', 0, 10); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_require_failure.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_require_failure.js new file mode 100644 index 00000000..954423de --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_require_failure.js @@ -0,0 +1,118 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,Simulator */ + +var el; +var hammer; +var pressPeriod = 200; +var pressThreshold = 20; +var pressCount = 0; +var panStartCount = 0; +var swipeCount = 0; + +QUnit.module('Require Failure ( Swipe & Press )', { + beforeEach: function() { + el = utils.createHitArea(); + hammer = new Hammer(el, { recognizers: [] }); + + var swipe = new Hammer.Swipe({ threshold: 1 }); + var press = new Hammer.Press({ time: pressPeriod, threshold: pressThreshold }); + + hammer.add(swipe); + hammer.add(press); + + swipe.recognizeWith(press); + press.requireFailure(swipe); + + pressCount = 0; + swipeCount = 0; + hammer.on('press', function() { + pressCount++; + }); + hammer.on('swipe', function() { + swipeCount++; + }); + }, + afterEach: function() { + hammer.destroy(); + } + }); + +QUnit.test('When swipe does not recognize the gesture, a press gesture can be fired', function(assert) { + var done = assert.async(); + assert.expect(1); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + + setTimeout(function() { + assert.equal(pressCount, 1, '1 press recognized'); + done(); + }, pressPeriod + 100); + }); + +QUnit.test('When swipe does recognize the gesture, a press gesture cannot be fired', function(assert) { + var done = assert.async(); + assert.expect(2); + + Simulator.gestures.swipe(el, null, function() { + assert.ok(swipeCount > 0, 'swipe gesture should be recognizing'); + + assert.equal(pressCount, 0, 'press gesture should not be recognized because swipe gesture is recognizing'); + done(); + }); + }); +QUnit.module('Require Failure ( Pan & Press )', { + beforeEach: function() { + el = document.createElement('div'); + document.body.appendChild(el); + + hammer = new Hammer(el, { recognizers: [] }); + + var pan = new Hammer.Pan({ threshold: 1 }); + var press = new Hammer.Press({ time: pressPeriod, threshold: pressThreshold }); + + hammer.add([ pan, press ]); + + pan.recognizeWith(press); + press.requireFailure(pan); + + pressCount = 0; + panStartCount = 0; + hammer.on('press', function() { + pressCount++; + }); + hammer.on('panstart', function() { + panStartCount++; + }); + }, + afterEach: function() { + document.body.removeChild(el); + hammer.destroy(); + } + }); + +QUnit.test('When pan does not recognize the gesture, a press gesture can be fired', function(assert) { + var done = assert.async(); + assert.expect(1); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + + setTimeout(function() { + assert.equal(pressCount, 1, '1 press recognized'); + done(); + }, pressPeriod + 100); + }); + +QUnit.test('When pan recognizes the gesture, a press gesture cannot be fired', function(assert) { + var done = assert.async(); + assert.expect(2); + + utils.dispatchTouchEvent(el, 'start', 50, 50); + utils.dispatchTouchEvent(el, 'move', 50 + pressThreshold / 4, 50); + + setTimeout(function() { + assert.ok(panStartCount > 0, 'pan gesture should be recognizing'); + + assert.equal(pressCount, 0, 'press gesture should not be recognized because pan gesture is recognizing'); + done(); + }, pressPeriod + 100); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_simultaneous_recognition.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_simultaneous_recognition.js new file mode 100644 index 00000000..885e054a --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_simultaneous_recognition.js @@ -0,0 +1,238 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils*/ + +var el; +var hammer; + +QUnit.module('Simultaenous recognition', { + beforeEach: function() { + el = utils.createHitArea(); + }, + afterEach: function() { + hammer && hammer.destroy(); + } + }); + +QUnit.test('should pinch and pan simultaneously be recognized when enabled', function(assert) { + var done = assert.async(); + assert.expect(4); + + var panCount = 0; + var pinchCount = 0; + + hammer = new Hammer.Manager(el, { + touchAction: 'none' + }); + + hammer.add(new Hammer.Pan({ threshold: 5, pointers: 2 })); + + var pinch = new Hammer.Pinch({ threshold: 0, pointers: 2 }); + hammer.add(pinch); + pinch.recognizeWith(hammer.get('pan')); + + hammer.on('panend', function() { + panCount++; + }); + hammer.on('pinchend', function() { + pinchCount++; + }); + + var executeGesture = function(cb) { + var event, touches; + + touches = [ + { clientX: 0, clientY: 10, identifier: 0, target: el }, + { clientX: 10, clientY: 10, identifier: 1, target: el } + ]; + + event = document.createEvent('Event'); + event.initEvent('touchstart', true, true); + event.touches = touches; + event.targetTouches = touches; + event.changedTouches = touches; + el.dispatchEvent(event); + + setTimeout(function() { + touches = [ + { clientX: 10, clientY: 20, identifier: 0, target: el }, + { clientX: 20, clientY: 20, identifier: 1, target: el } + ]; + + event = document.createEvent('Event'); + event.initEvent('touchmove', true, true); + event.touches = touches; + event.targetTouches = touches; + event.changedTouches = touches; + + el.dispatchEvent(event); + }, 100); + + setTimeout(function() { + touches = [ + { clientX: 20, clientY: 30, identifier: 0, target: el }, + { clientX: 40, clientY: 30, identifier: 1, target: el } + ]; + + event = document.createEvent('Event'); + event.initEvent('touchmove', true, true); + event.touches = touches; + event.targetTouches = touches; + event.changedTouches = touches; + el.dispatchEvent(event); + + event = document.createEvent('Event'); + event.initEvent('touchend', true, true); + event.touches = touches; + event.targetTouches = touches; + event.changedTouches = touches; + el.dispatchEvent(event); + + cb(); + }, 200); + }; + + // 2 gesture will be recognized + executeGesture(function() { + assert.equal(panCount, 1, '1 pan event recognized'); + assert.equal(pinchCount, 1, '1 pinch event recognized'); + + pinch.dropRecognizeWith(hammer.get('pan')); + + // Only the pan gesture will be recognized + executeGesture(function() { + assert.equal(panCount, 2, '2 pan events recognized'); + assert.equal(pinchCount, 1, 'One pinch event recognized'); + + done(); + }); + }); + }); + +QUnit.test('the first gesture should block the following gestures (Tap & DoubleTap)', function(assert) { + assert.expect(4); + + var tapCount = 0; + var doubleTapCount = 0; + + hammer = new Hammer.Manager(el, { + touchAction: 'none' + }); + + var tap = new Hammer.Tap(); + var doubleTap = new Hammer.Tap({ event: 'doubletap', taps: 2 }); + + hammer.add(tap); + hammer.add(doubleTap); + + hammer.on('tap', function() { + tapCount++; + }); + hammer.on('doubletap', function() { + doubleTapCount++; + }); + + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + + assert.equal(tapCount, 2, 'on a double tap gesture, the tap gesture is recognized twice'); + assert.equal(doubleTapCount, 0, 'double tap gesture is not recognized because the prior tap gesture does not recognize it simultaneously'); + + doubleTap.recognizeWith(hammer.get('tap')); + + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + + assert.equal(tapCount, 4, '4 tap events recognized'); + assert.equal(doubleTapCount, 1, 'when the tap gesture is configured to work simultaneously, tap & doubleTap can be recognized simultaneously'); + }); + +QUnit.test('when disabled, the first gesture should not block gestures (Tap & DoubleTap )', function(assert) { + assert.expect(4); + + var tapCount = 0; + var doubleTapCount = 0; + + hammer = new Hammer.Manager(el, { + touchAction: 'none' + }); + + var tap = new Hammer.Tap(); + var doubleTap = new Hammer.Tap({ event: 'doubletap', taps: 2 }); + + hammer.add(tap); + hammer.add(doubleTap); + + hammer.on('tap', function() { + tapCount++; + }); + hammer.on('doubletap', function() { + doubleTapCount++; + }); + + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + + assert.equal(tapCount, 2, 'on a double tap gesture, the tap gesture is recognized twice'); + assert.equal(doubleTapCount, 0, 'double tap gesture is not recognized because the prior tap gesture does not recognize it simultaneously'); + + hammer.get('tap').set({ enable: false }); + + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + + assert.equal(tapCount, 2, 'tap gesture should not be recognized when the recognizer is disabled'); + assert.equal(doubleTapCount, 1, 'when the tap gesture is disabled, doubleTap can be recognized'); + }); + +QUnit.test('the first gesture should block the following gestures (DoubleTap & Tap)', function(assert) { + assert.expect(4); + + var tapCount = 0; + var doubleTapCount = 0; + + hammer = new Hammer.Manager(el, { + touchAction: 'none' + }); + + var tap = new Hammer.Tap(); + var doubleTap = new Hammer.Tap({ event: 'doubletap', taps: 2 }); + + hammer.add(doubleTap); + hammer.add(tap); + + hammer.on('tap', function() { + tapCount++; + }); + hammer.on('doubletap', function() { + doubleTapCount++; + }); + + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + + assert.equal(doubleTapCount, 1, 'double tap is recognized'); + assert.equal(tapCount, 1, 'tap is detected, the doubletap is only catched by the doubletap recognizer'); + + // Doubletap and tap together + doubleTap.recognizeWith(hammer.get('tap')); + doubleTapCount = 0; + tapCount = 0; + + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + utils.dispatchTouchEvent(el, 'start', 0, 10); + utils.dispatchTouchEvent(el, 'end', 0, 10); + + assert.equal(doubleTapCount, 1, '1 double tap recognized'); + assert.equal(tapCount, 2, 'when the tap gesture is configured to work simultaneously, tap & doubleTap can be recognized simultaneously'); + }); diff --git a/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_utils.js b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_utils.js new file mode 100644 index 00000000..c1b2f36f --- /dev/null +++ b/iut-expo-starter/node_modules/@egjs/hammerjs/tests/unit/test_utils.js @@ -0,0 +1,167 @@ +// jscs:disable requireArrowFunctions,disallowVar,requireEnhancedObjectLiterals +/* globals QUnit,Hammer,utils,_*/ + +QUnit.module('utils'); + +// For the tests, all hammer properties and methods of Hammer are exposed to window.Hammer + +QUnit.test('get/set prefixed util', function(assert) { + assert.ok(_.isUndefined(Hammer.prefixed(window, 'FakeProperty')), 'non existent property returns undefined'); + + window.webkitFakeProperty = 1337; + assert.ok(Hammer.prefixed(window, 'FakeProperty') == 'webkitFakeProperty', 'existent prefixed property returns the prefixed name'); + + delete window.webkitFakeProperty; + }); + +QUnit.test('fnBind', function(assert) { + var context = { a: true }; + + Hammer.bindFn(function(b) { + assert.ok(this.a === true, 'bindFn scope'); + assert.ok(b === 123, 'bindFn argument'); + }, context)(123); + }); + +QUnit.test('Inherit objects', function(assert) { + function Base() { + this.name = true; + } + + function Child() { + Base.call(this); + } + + Hammer.inherit(Child, Base, { + newMethod: function() { + } + }); + + var inst = new Child(); + + assert.ok(inst.name == true, 'child has extended from base'); + assert.ok(inst.newMethod, 'child has a new method'); + assert.ok(Child.prototype.newMethod, 'child has a new prototype method'); + assert.ok(inst instanceof Child, 'is instanceof Child'); + assert.ok(inst instanceof Base, 'is instanceof Base'); + assert.ok(inst._super === Base.prototype, '_super is ref to prototype of Base'); + }); + +QUnit.test('toArray', function(assert) { + assert.ok(_.isArray(Hammer.toArray({ 0: true, 1: 'second', length: 2 })), 'converted an array-like object to an array'); + assert.ok(_.isArray(Hammer.toArray([ true, true ])), 'array stays an array'); + }); + +QUnit.test('inArray', function(assert) { + assert.ok(Hammer.inArray([ 1, 2, 3, 4, 'hammer' ], 'hammer') === 4, 'found item and returned the index'); + assert.ok(Hammer.inArray([ 1, 2, 3, 4, 'hammer' ], 'notfound') === -1, 'not found an item and returned -1'); + assert.ok(Hammer.inArray([ + { id: 2 }, + { id: 24 } + ], '24', 'id') === 1, 'find by key and return the index'); + assert.ok(Hammer.inArray([ + { id: 2 }, + { id: 24 } + ], '22', 'id') === -1, 'not found by key and return -1'); + }); + +QUnit.test('splitStr', function(assert) { + assert.deepEqual(Hammer.splitStr(' a b c d '), [ 'a', 'b', 'c', 'd' ], 'str split valid'); + }); + +QUnit.test('uniqueArray', function(assert) { + assert.deepEqual(Hammer.uniqueArray([ + { id: 1 }, + { id: 2 }, + { id: 2 } + ], 'id'), [ + { id: 1 }, + { id: 2 } + ], 'remove duplicate ids'); + }); + +QUnit.test('boolOrFn', function(assert) { + assert.equal(Hammer.boolOrFn(true), true, 'Passing an boolean'); + assert.equal(Hammer.boolOrFn(false), false, 'Passing an boolean'); + assert.equal(Hammer.boolOrFn(function() { + return true; + }), true, 'Passing an boolean'); + assert.equal(Hammer.boolOrFn(1), true, 'Passing an integer'); + }); + +QUnit.test('hasParent', function(assert) { + var parent = document.createElement('div'); + var child = document.createElement('div'); + + document.body.appendChild(parent); + parent.appendChild(child); + + assert.equal(Hammer.hasParent(child, parent), true, 'Found parent'); + assert.equal(Hammer.hasParent(parent, child), false, 'Not in parent'); + + document.body.removeChild(parent); + }); + +QUnit.test('each', function(assert) { + var object = { hi: true }; + var array = [ 'a', 'b', 'c' ]; + var loop; + + loop = false; + Hammer.each(object, function(value, key) { + if (key == 'hi' && value === true) { + loop = true; + } + }); + assert.ok(loop, 'object loop'); + + loop = 0; + Hammer.each(array, function(value) { + if (value) { + loop++; + } + }); + assert.ok(loop == 3, 'array loop'); + + loop = 0; + array.forEach = null; + Hammer.each(array, function(value) { + if (value) { + loop++; + } + }); + assert.ok(loop == 3, 'array loop without Array.forEach'); + }); + +QUnit.test('assign', function(assert) { + assert.expect(2); + assert.deepEqual( + Hammer.assign( + { a: 1, b: 3 }, + { b: 2, c: 3 } + ), + { a: 1, b: 2, c: 3 }, + 'Simple extend' + ); + + var src = { foo: true }; + var dest = Hammer.assign({}, src); + src.foo = false; + assert.deepEqual(dest, { foo: true }, 'Clone reference'); + }); + +QUnit.test('test add/removeEventListener', function(assert) { + function handleEvent() { + assert.ok(true, 'triggered event'); + } + + assert.expect(2); + + Hammer.addEventListeners(window, 'testEvent1 testEvent2 ', handleEvent); + utils.triggerDomEvent(window, 'testEvent1'); + utils.triggerDomEvent(window, 'testEvent2'); + + Hammer.removeEventListeners(window, ' testEvent1 testEvent2 ', handleEvent); + utils.triggerDomEvent(window, 'testEvent1'); + utils.triggerDomEvent(window, 'testEvent2'); + }); diff --git a/iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/node-which b/iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/node-which deleted file mode 120000 index 6f8415ec..00000000 --- a/iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/node-which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/node-which \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/rimraf b/iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/iut-expo-starter/node_modules/@expo/cli/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/.bin/json5 b/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/.bin/json5 b/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/package-manager/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/.bin/json5 b/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/@expo/cli/node_modules/@expo/prebuild-config/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/osascript/node_modules/.bin/node-which b/iut-expo-starter/node_modules/@expo/osascript/node_modules/.bin/node-which deleted file mode 120000 index 6f8415ec..00000000 --- a/iut-expo-starter/node_modules/@expo/osascript/node_modules/.bin/node-which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/node-which \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/package-manager/node_modules/.bin/node-which b/iut-expo-starter/node_modules/@expo/package-manager/node_modules/.bin/node-which deleted file mode 120000 index 6f8415ec..00000000 --- a/iut-expo-starter/node_modules/@expo/package-manager/node_modules/.bin/node-which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/node-which \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/.bin/json5 b/iut-expo-starter/node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/@expo/webpack-config/node_modules/babel-loader/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/@types/hammerjs/LICENSE b/iut-expo-starter/node_modules/@types/hammerjs/LICENSE new file mode 100755 index 00000000..9e841e7a --- /dev/null +++ b/iut-expo-starter/node_modules/@types/hammerjs/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/iut-expo-starter/node_modules/@types/hammerjs/README.md b/iut-expo-starter/node_modules/@types/hammerjs/README.md new file mode 100755 index 00000000..00f61483 --- /dev/null +++ b/iut-expo-starter/node_modules/@types/hammerjs/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/hammerjs` + +# Summary +This package contains type definitions for Hammer.js (http://hammerjs.github.io/). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/hammerjs. + +### Additional Details + * Last updated: Thu, 23 Dec 2021 23:34:48 GMT + * Dependencies: none + * Global values: `Hammer`, `HammerInput`, `MouseInput`, `PointerEventInput`, `SingleTouchInput`, `TouchAction`, `TouchInput`, `TouchMouseInput` + +# Credits +These definitions were written by [Han Lin Yap](https://github.com/codler). diff --git a/iut-expo-starter/node_modules/@types/hammerjs/index.d.ts b/iut-expo-starter/node_modules/@types/hammerjs/index.d.ts new file mode 100755 index 00000000..c7a270f7 --- /dev/null +++ b/iut-expo-starter/node_modules/@types/hammerjs/index.d.ts @@ -0,0 +1,375 @@ +// Type definitions for Hammer.js 2.0.8 +// Project: http://hammerjs.github.io/ +// Definitions by: Han Lin Yap +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare var Hammer:HammerStatic; + +declare module "hammerjs" { + export = Hammer; +} + +interface HammerStatic +{ + new( element:HTMLElement | SVGElement, options?:HammerOptions ): HammerManager; + + defaults:HammerDefaults; + + VERSION: number; + + INPUT_START: 1; + INPUT_MOVE: 2; + INPUT_END: 4; + INPUT_CANCEL: 8; + + STATE_POSSIBLE: 1; + STATE_BEGAN: 2; + STATE_CHANGED: 4; + STATE_ENDED: 8; + STATE_RECOGNIZED: 8; // same as STATE_ENDED + STATE_CANCELLED: 16; + STATE_FAILED: 32; + + DIRECTION_NONE: 1; + DIRECTION_LEFT: 2; + DIRECTION_RIGHT: 4; + DIRECTION_UP: 8; + DIRECTION_DOWN: 16; + DIRECTION_HORIZONTAL: 6; // DIRECTION_LEFT | DIRECTION_RIGHT + DIRECTION_VERTICAL: 24; // DIRECTION_UP | DIRECTION_DOWN + DIRECTION_ALL: 30; // DIRECTION_HORIZONTAL | DIRECTION_VERTICAL + + Manager: HammerManagerConstructor; + Input: HammerInput; + TouchAction: TouchAction; + + TouchInput: TouchInput; + MouseInput: MouseInput; + PointerEventInput: PointerEventInput; + TouchMouseInput: TouchMouseInput; + SingleTouchInput: SingleTouchInput; + + Recognizer: RecognizerStatic; + AttrRecognizer: AttrRecognizerStatic; + Tap: TapRecognizerStatic; + Pan: PanRecognizerStatic; + Swipe: SwipeRecognizerStatic; + Pinch: PinchRecognizerStatic; + Rotate: RotateRecognizerStatic; + Press: PressRecognizerStatic; + + on( target:EventTarget, types:string, handler:Function ):void; + off( target:EventTarget, types:string, handler:Function ):void; + each( obj:any, iterator:Function, context:any ): void; + merge( dest:any, src:any ): any; + extend( dest:any, src:any, merge:boolean ): any; + inherit( child:Function, base:Function, properties:any ):any; + bindFn( fn:Function, context:any ):Function; + prefixed( obj:any, property:string ):string; +} + +type RecognizerTuple = + [RecognizerStatic] + | [RecognizerStatic, RecognizerOptions] + | [RecognizerStatic, RecognizerOptions, string | string[]] + | [RecognizerStatic, RecognizerOptions, string | string[], (string | Recognizer) | (string | Recognizer)[]]; + +interface HammerDefaults extends HammerOptions +{ + domEvents:boolean; + enable:boolean; + preset:RecognizerTuple[]; + touchAction:string; + cssProps:CssProps; + + inputClass:HammerInput; + inputTarget:EventTarget; +} + +interface CssProps +{ + contentZooming:string; + tapHighlightColor:string; + touchCallout:string; + touchSelect:string; + userDrag:string; + userSelect:string; +} + +interface HammerOptions +{ + cssProps?:CssProps | undefined; + domEvents?:boolean | undefined; + enable?:boolean | ((manager: HammerManager) => boolean) | undefined; + preset?:RecognizerTuple[] | undefined; + touchAction?:string | undefined; + recognizers?:RecognizerTuple[] | undefined; + + inputClass?:HammerInput | undefined; + inputTarget?:EventTarget | undefined; +} + +interface HammerManagerConstructor { + new( element:EventTarget, options?:HammerOptions ):HammerManager; +} + +interface HammerListener { + (event:HammerInput): void +} + +interface HammerManager +{ + add( recogniser:Recognizer ):Recognizer; + add( recogniser:Recognizer ):HammerManager; + add( recogniser:Recognizer[] ):Recognizer; + add( recogniser:Recognizer[] ):HammerManager; + destroy():void; + emit( event:string, data:any ):void; + get( recogniser:Recognizer ):Recognizer; + get( recogniser:string ):Recognizer; + off( events:string, handler?:HammerListener ):void; + on( events:string, handler:HammerListener ):void; + recognize( inputData:any ):void; + remove( recogniser:Recognizer ):HammerManager; + remove( recogniser:string ):HammerManager; + set( options:HammerOptions ):HammerManager; + stop( force:boolean ):void; +} + +declare class HammerInput +{ + constructor( manager:HammerManager, callback:Function ); + + destroy():void; + handler():void; + init():void; + + /** Name of the event. Like panstart. */ + type:string; + + /** Movement of the X axis. */ + deltaX:number; + + /** Movement of the Y axis. */ + deltaY:number; + + /** Total time in ms since the first input. */ + deltaTime:number; + + /** Distance moved. */ + distance:number; + + /** Angle moved. */ + angle:number; + + /** Velocity on the X axis, in px/ms. */ + velocityX:number; + + /** Velocity on the Y axis, in px/ms */ + velocityY:number; + + /** Highest velocityX/Y value. */ + velocity:number; + + overallVelocity:number; + + overallVelocityX:number; + + overallVelocityY:number; + + /** Direction moved. Matches the DIRECTION constants. */ + direction:number; + + /** Direction moved from it's starting point. Matches the DIRECTION constants. */ + offsetDirection:number; + + /** Scaling that has been done when multi-touch. 1 on a single touch. */ + scale:number; + + /** Rotation that has been done when multi-touch. 0 on a single touch. */ + rotation:number; + + /** Center position for multi-touch, or just the single pointer. */ + center:HammerPoint; + + /** Source event object, type TouchEvent, MouseEvent or PointerEvent. */ + srcEvent:TouchEvent | MouseEvent | PointerEvent; + + /** Target that received the event. */ + target:HTMLElement; + + /** Primary pointer type, could be touch, mouse, pen or kinect. */ + pointerType:string; + + /** Event type, matches the INPUT constants. */ + eventType: HammerStatic['INPUT_START'] | + HammerStatic['INPUT_MOVE'] | + HammerStatic['INPUT_END'] | + HammerStatic['INPUT_CANCEL']; + + /** true when the first input. */ + isFirst:boolean; + + /** true when the final (last) input. */ + isFinal:boolean; + + /** Array with all pointers, including the ended pointers (touchend, mouseup). */ + pointers:any[]; + + /** Array with all new/moved/lost pointers. */ + changedPointers:any[]; + + /** Maximum number of pointers detected in the gesture */ + maxPointers:number; + + /** Timestamp of a gesture */ + timeStamp:number; + + /** Reference to the srcEvent.preventDefault() method. Only for experts! */ + preventDefault:Function; +} + +declare class MouseInput extends HammerInput +{ + constructor( manager:HammerManager, callback:Function ); +} + +declare class PointerEventInput extends HammerInput +{ + constructor( manager:HammerManager, callback:Function ); +} + +declare class SingleTouchInput extends HammerInput +{ + constructor( manager:HammerManager, callback:Function ); +} + +declare class TouchInput extends HammerInput +{ + constructor( manager:HammerManager, callback:Function ); +} + +declare class TouchMouseInput extends HammerInput +{ + constructor( manager:HammerManager, callback:Function ); +} + +interface RecognizerOptions { + direction?: number | undefined; + enable?: boolean | ((recognizer: Recognizer, inputData: HammerInput) => boolean) | undefined; + event?: string | undefined; + interval?: number | undefined; + pointers?: number | undefined; + posThreshold?: number | undefined; + taps?: number | undefined + threshold?: number | undefined; + time?: number | undefined; + velocity?: number | undefined; +} + +interface RecognizerStatic +{ + new( options?:RecognizerOptions ):Recognizer; +} + +interface Recognizer +{ + defaults:any; + + canEmit():boolean; + canRecognizeWith( otherRecognizer:Recognizer ):boolean; + dropRecognizeWith( otherRecognizer:Recognizer | Recognizer[] | string):Recognizer; + dropRequireFailure( otherRecognizer:Recognizer | Recognizer[] | string):Recognizer; + emit( input:HammerInput ):void; + getTouchAction():any[]; + hasRequireFailures():boolean; + process( inputData:HammerInput ):string; + recognize( inputData:HammerInput ):void; + recognizeWith( otherRecognizer:Recognizer | Recognizer[] | string):Recognizer; + requireFailure( otherRecognizer:Recognizer | Recognizer[] | string):Recognizer; + reset():void; + set( options?:RecognizerOptions ):Recognizer; + tryEmit( input:HammerInput ):void; +} + +interface AttrRecognizerStatic +{ + attrTest( input:HammerInput ):boolean; + process( input:HammerInput ):any; +} + +interface AttrRecognizer extends Recognizer +{ + new( options?:RecognizerOptions ):AttrRecognizer; +} + +interface PanRecognizerStatic +{ + new( options?:RecognizerOptions ):PanRecognizer; +} + +interface PanRecognizer extends AttrRecognizer +{ +} + +interface PinchRecognizerStatic +{ + new( options?:RecognizerOptions ):PinchRecognizer; +} + +interface PinchRecognizer extends AttrRecognizer +{ +} + +interface PressRecognizerStatic +{ + new( options?:RecognizerOptions ):PressRecognizer; +} + +interface PressRecognizer extends AttrRecognizer +{ +} + +interface RotateRecognizerStatic +{ + new( options?:RecognizerOptions ):RotateRecognizer; +} + +interface RotateRecognizer extends AttrRecognizer +{ +} + +interface SwipeRecognizerStatic +{ + new( options?:RecognizerOptions ):SwipeRecognizer; +} + +interface SwipeRecognizer extends AttrRecognizer +{ +} + +interface TapRecognizerStatic +{ + new( options?:RecognizerOptions ):TapRecognizer; +} + +interface TapRecognizer extends AttrRecognizer +{ +} + +declare class TouchAction +{ + constructor( manager:HammerManager, value:string ); + + compute():string; + preventDefaults( input:HammerInput ):void; + preventSrc( srcEvent:any ):void; + set( value:string ):void; + update():void; +} + +interface HammerPoint +{ + x: number; + y: number; +} diff --git a/iut-expo-starter/node_modules/@types/hammerjs/package.json b/iut-expo-starter/node_modules/@types/hammerjs/package.json new file mode 100755 index 00000000..095d9698 --- /dev/null +++ b/iut-expo-starter/node_modules/@types/hammerjs/package.json @@ -0,0 +1,25 @@ +{ + "name": "@types/hammerjs", + "version": "2.0.41", + "description": "TypeScript definitions for Hammer.js", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/hammerjs", + "license": "MIT", + "contributors": [ + { + "name": "Han Lin Yap", + "url": "https://github.com/codler", + "githubUsername": "codler" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/hammerjs" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "6e62091eae2c2414fff64672862711eb9d5fa3fefbdfb667c34653179e2374e9", + "typeScriptVersion": "3.8" +} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/css-loader/node_modules/.bin/json5 b/iut-expo-starter/node_modules/css-loader/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/css-loader/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/expo-cli/node_modules/.bin/rimraf b/iut-expo-starter/node_modules/expo-cli/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/iut-expo-starter/node_modules/expo-cli/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/expo-cli/node_modules/@expo/config/node_modules/.bin/json5 b/iut-expo-starter/node_modules/expo-cli/node_modules/@expo/config/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/expo-cli/node_modules/@expo/config/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/expo-pwa/node_modules/.bin/semver b/iut-expo-starter/node_modules/expo-pwa/node_modules/.bin/semver deleted file mode 120000 index 5aaadf42..00000000 --- a/iut-expo-starter/node_modules/expo-pwa/node_modules/.bin/semver +++ /dev/null @@ -1 +0,0 @@ -../semver/bin/semver.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/expo/node_modules/.bin/semver b/iut-expo-starter/node_modules/expo/node_modules/.bin/semver deleted file mode 120000 index 5aaadf42..00000000 --- a/iut-expo-starter/node_modules/expo/node_modules/.bin/semver +++ /dev/null @@ -1 +0,0 @@ -../semver/bin/semver.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/express/node_modules/.bin/mime b/iut-expo-starter/node_modules/express/node_modules/.bin/mime deleted file mode 120000 index fbb7ee0e..00000000 --- a/iut-expo-starter/node_modules/express/node_modules/.bin/mime +++ /dev/null @@ -1 +0,0 @@ -../mime/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/CHANGELOG.md b/iut-expo-starter/node_modules/hoist-non-react-statics/CHANGELOG.md new file mode 100644 index 00000000..59994b42 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/CHANGELOG.md @@ -0,0 +1,37 @@ +# 3.3.2 (January 22, 2020) +- Fix `React.memo` for v16.12+ (#93) + +# 3.3.1 (November 14, 2019) +- Fix for UMD bundle (#85) +- Tooling changes (#83, #84, #87) + +# 3.3.0 (January 23, 2019) +- Prevent hoisting of React.memo statics (#73) + +# 3.2.1 (December 3, 2018) +- Fixed `defaultProps`, `displayName` and `propTypes` being hoisted from `React.forwardRef` to `React.forwardRef`. ([#71]) + +# 3.2.0 (November 26, 2018) +- Added support for `getDerivedStateFromError`. ([#68]) +- Added support for React versions less than 0.14. ([#69]) + +# 3.1.0 (October 30, 2018) +- Added support for `contextType`. ([#62]) +- Reduced bundle size. ([e89c7a6]) +- Removed TypeScript definitions. ([#61]) + +# 3.0.1 (July 28, 2018) +- Fixed prop-types warnings. ([e0846fe]) + +# 3.0.0 (July 27, 2018) +- Dropped support for React versions less than 0.14. ([#55]) +- Added support for `React.forwardRef` components. ([#55]) + +[#55]: https://github.com/mridgway/hoist-non-react-statics/pull/55 +[#61]: https://github.com/mridgway/hoist-non-react-statics/pull/61 +[#62]: https://github.com/mridgway/hoist-non-react-statics/pull/62 +[#68]: https://github.com/mridgway/hoist-non-react-statics/pull/68 +[#69]: https://github.com/mridgway/hoist-non-react-statics/pull/69 +[#71]: https://github.com/mridgway/hoist-non-react-statics/pull/71 +[e0846fe]: https://github.com/mridgway/hoist-non-react-statics/commit/e0846feefbad8b34d300de9966ffd607aacb81a3 +[e89c7a6]: https://github.com/mridgway/hoist-non-react-statics/commit/e89c7a6168edc19eeadb2d149e600b888e8b0446 diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/LICENSE.md b/iut-expo-starter/node_modules/hoist-non-react-statics/LICENSE.md new file mode 100644 index 00000000..2464f59e --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/LICENSE.md @@ -0,0 +1,29 @@ +Software License Agreement (BSD License) +======================================== + +Copyright (c) 2015, Yahoo! Inc. All rights reserved. +---------------------------------------------------- + +Redistribution and use of this software in source and binary forms, with or +without modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of Yahoo! Inc. nor the names of YUI's contributors may be + used to endorse or promote products derived from this software without + specific prior written permission of Yahoo! Inc. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/README.md b/iut-expo-starter/node_modules/hoist-non-react-statics/README.md new file mode 100644 index 00000000..24ea6887 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/README.md @@ -0,0 +1,55 @@ +# hoist-non-react-statics + +[![NPM version](https://badge.fury.io/js/hoist-non-react-statics.svg)](http://badge.fury.io/js/hoist-non-react-statics) +[![Build Status](https://img.shields.io/travis/mridgway/hoist-non-react-statics.svg)](https://travis-ci.org/mridgway/hoist-non-react-statics) +[![Coverage Status](https://img.shields.io/coveralls/mridgway/hoist-non-react-statics.svg)](https://coveralls.io/r/mridgway/hoist-non-react-statics?branch=master) +[![Dependency Status](https://img.shields.io/david/mridgway/hoist-non-react-statics.svg)](https://david-dm.org/mridgway/hoist-non-react-statics) +[![devDependency Status](https://img.shields.io/david/dev/mridgway/hoist-non-react-statics.svg)](https://david-dm.org/mridgway/hoist-non-react-statics#info=devDependencies) + +Copies non-react specific statics from a child component to a parent component. +Similar to `Object.assign`, but with React static keywords blacklisted from +being overridden. + +```bash +$ npm install --save hoist-non-react-statics +``` + +## Usage + +```js +import hoistNonReactStatics from 'hoist-non-react-statics'; + +hoistNonReactStatics(targetComponent, sourceComponent); +``` + +If you have specific statics that you don't want to be hoisted, you can also pass a third parameter to exclude them: + +```js +hoistNonReactStatics(targetComponent, sourceComponent, { myStatic: true, myOtherStatic: true }); +``` + +## What does this module do? + +See this [explanation](https://facebook.github.io/react/docs/higher-order-components.html#static-methods-must-be-copied-over) from the React docs. + +## Compatible React Versions + +Please use latest 3.x. Versions prior to 3.x will not support ForwardRefs. + +| hoist-non-react-statics Version | Compatible React Version | +|--------------------------|-------------------------------| +| 3.x | 0.13-16.x With ForwardRef Support | +| 2.x | 0.13-16.x Without ForwardRef Support | +| 1.x | 0.13-16.2 | + +## Browser Support + +This package uses `Object.defineProperty` which has a broken implementation in IE8. In order to use this package in IE8, you will need a polyfill that fixes this method. + +## License +This software is free to use under the Yahoo Inc. BSD license. +See the [LICENSE file][] for license text and copyright information. + +[LICENSE file]: https://github.com/mridgway/hoist-non-react-statics/blob/master/LICENSE.md + +Third-party open source code used are listed in our [package.json file]( https://github.com/mridgway/hoist-non-react-statics/blob/master/package.json). diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js b/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js new file mode 100644 index 00000000..60f9c4b9 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js @@ -0,0 +1,103 @@ +'use strict'; + +var reactIs = require('react-is'); + +/** + * Copyright 2015, Yahoo! Inc. + * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +var REACT_STATICS = { + childContextTypes: true, + contextType: true, + contextTypes: true, + defaultProps: true, + displayName: true, + getDefaultProps: true, + getDerivedStateFromError: true, + getDerivedStateFromProps: true, + mixins: true, + propTypes: true, + type: true +}; +var KNOWN_STATICS = { + name: true, + length: true, + prototype: true, + caller: true, + callee: true, + arguments: true, + arity: true +}; +var FORWARD_REF_STATICS = { + '$$typeof': true, + render: true, + defaultProps: true, + displayName: true, + propTypes: true +}; +var MEMO_STATICS = { + '$$typeof': true, + compare: true, + defaultProps: true, + displayName: true, + propTypes: true, + type: true +}; +var TYPE_STATICS = {}; +TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; +TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; + +function getStatics(component) { + // React v16.11 and below + if (reactIs.isMemo(component)) { + return MEMO_STATICS; + } // React v16.12 and above + + + return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; +} + +var defineProperty = Object.defineProperty; +var getOwnPropertyNames = Object.getOwnPropertyNames; +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var getPrototypeOf = Object.getPrototypeOf; +var objectPrototype = Object.prototype; +function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { + if (typeof sourceComponent !== 'string') { + // don't hoist over string (html) components + if (objectPrototype) { + var inheritedComponent = getPrototypeOf(sourceComponent); + + if (inheritedComponent && inheritedComponent !== objectPrototype) { + hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); + } + } + + var keys = getOwnPropertyNames(sourceComponent); + + if (getOwnPropertySymbols) { + keys = keys.concat(getOwnPropertySymbols(sourceComponent)); + } + + var targetStatics = getStatics(targetComponent); + var sourceStatics = getStatics(sourceComponent); + + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + + if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { + var descriptor = getOwnPropertyDescriptor(sourceComponent, key); + + try { + // Avoid failures from read-only properties + defineProperty(targetComponent, key, descriptor); + } catch (e) {} + } + } + } + + return targetComponent; +} + +module.exports = hoistNonReactStatics; diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.js b/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.js new file mode 100644 index 00000000..c6d59c78 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.js @@ -0,0 +1,449 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.hoistNonReactStatics = factory()); +}(this, (function () { 'use strict'; + + function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var reactIs_production_min = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports,"__esModule",{value:!0}); + var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?Symbol.for("react.suspense_list"): + 60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.fundamental"):60117,w=b?Symbol.for("react.responder"):60118,x=b?Symbol.for("react.scope"):60119;function y(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function z(a){return y(a)===m} + exports.typeOf=y;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p; + exports.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w||a.$$typeof===x)};exports.isAsyncMode=function(a){return z(a)||y(a)===l};exports.isConcurrentMode=z;exports.isContextConsumer=function(a){return y(a)===k};exports.isContextProvider=function(a){return y(a)===h}; + exports.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return y(a)===n};exports.isFragment=function(a){return y(a)===e};exports.isLazy=function(a){return y(a)===t};exports.isMemo=function(a){return y(a)===r};exports.isPortal=function(a){return y(a)===d};exports.isProfiler=function(a){return y(a)===g};exports.isStrictMode=function(a){return y(a)===f};exports.isSuspense=function(a){return y(a)===p}; + }); + + unwrapExports(reactIs_production_min); + var reactIs_production_min_1 = reactIs_production_min.typeOf; + var reactIs_production_min_2 = reactIs_production_min.AsyncMode; + var reactIs_production_min_3 = reactIs_production_min.ConcurrentMode; + var reactIs_production_min_4 = reactIs_production_min.ContextConsumer; + var reactIs_production_min_5 = reactIs_production_min.ContextProvider; + var reactIs_production_min_6 = reactIs_production_min.Element; + var reactIs_production_min_7 = reactIs_production_min.ForwardRef; + var reactIs_production_min_8 = reactIs_production_min.Fragment; + var reactIs_production_min_9 = reactIs_production_min.Lazy; + var reactIs_production_min_10 = reactIs_production_min.Memo; + var reactIs_production_min_11 = reactIs_production_min.Portal; + var reactIs_production_min_12 = reactIs_production_min.Profiler; + var reactIs_production_min_13 = reactIs_production_min.StrictMode; + var reactIs_production_min_14 = reactIs_production_min.Suspense; + var reactIs_production_min_15 = reactIs_production_min.isValidElementType; + var reactIs_production_min_16 = reactIs_production_min.isAsyncMode; + var reactIs_production_min_17 = reactIs_production_min.isConcurrentMode; + var reactIs_production_min_18 = reactIs_production_min.isContextConsumer; + var reactIs_production_min_19 = reactIs_production_min.isContextProvider; + var reactIs_production_min_20 = reactIs_production_min.isElement; + var reactIs_production_min_21 = reactIs_production_min.isForwardRef; + var reactIs_production_min_22 = reactIs_production_min.isFragment; + var reactIs_production_min_23 = reactIs_production_min.isLazy; + var reactIs_production_min_24 = reactIs_production_min.isMemo; + var reactIs_production_min_25 = reactIs_production_min.isPortal; + var reactIs_production_min_26 = reactIs_production_min.isProfiler; + var reactIs_production_min_27 = reactIs_production_min.isStrictMode; + var reactIs_production_min_28 = reactIs_production_min.isSuspense; + + var reactIs_development = createCommonjsModule(function (module, exports) { + + + + if (process.env.NODE_ENV !== "production") { + (function() { + + Object.defineProperty(exports, '__esModule', { value: true }); + + // The Symbol used to tag the ReactElement-like types. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + var hasSymbol = typeof Symbol === 'function' && Symbol.for; + var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; + var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; + var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; + var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; + var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; + var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; + var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary + // (unstable) APIs that have been removed. Can we remove the symbols? + + var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; + var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; + var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; + var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; + var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; + var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; + var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; + var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; + var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; + var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + + function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE); + } + + /** + * Forked from fbjs/warning: + * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js + * + * Only change is we use console.warn instead of console.error, + * and do nothing when 'console' is not supported. + * This really simplifies the code. + * --- + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + var lowPriorityWarningWithoutStack = function () {}; + + { + var printWarning = function (format) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + + if (typeof console !== 'undefined') { + console.warn(message); + } + + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + lowPriorityWarningWithoutStack = function (condition, format) { + if (format === undefined) { + throw new Error('`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (!condition) { + for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(void 0, [format].concat(args)); + } + }; + } + + var lowPriorityWarningWithoutStack$1 = lowPriorityWarningWithoutStack; + + function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; + } // AsyncMode is deprecated along with isAsyncMode + + var AsyncMode = REACT_ASYNC_MODE_TYPE; + var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; + lowPriorityWarningWithoutStack$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; + } + function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; + } + function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + + exports.typeOf = typeOf; + exports.AsyncMode = AsyncMode; + exports.ConcurrentMode = ConcurrentMode; + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.isValidElementType = isValidElementType; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + })(); + } + }); + + unwrapExports(reactIs_development); + var reactIs_development_1 = reactIs_development.typeOf; + var reactIs_development_2 = reactIs_development.AsyncMode; + var reactIs_development_3 = reactIs_development.ConcurrentMode; + var reactIs_development_4 = reactIs_development.ContextConsumer; + var reactIs_development_5 = reactIs_development.ContextProvider; + var reactIs_development_6 = reactIs_development.Element; + var reactIs_development_7 = reactIs_development.ForwardRef; + var reactIs_development_8 = reactIs_development.Fragment; + var reactIs_development_9 = reactIs_development.Lazy; + var reactIs_development_10 = reactIs_development.Memo; + var reactIs_development_11 = reactIs_development.Portal; + var reactIs_development_12 = reactIs_development.Profiler; + var reactIs_development_13 = reactIs_development.StrictMode; + var reactIs_development_14 = reactIs_development.Suspense; + var reactIs_development_15 = reactIs_development.isValidElementType; + var reactIs_development_16 = reactIs_development.isAsyncMode; + var reactIs_development_17 = reactIs_development.isConcurrentMode; + var reactIs_development_18 = reactIs_development.isContextConsumer; + var reactIs_development_19 = reactIs_development.isContextProvider; + var reactIs_development_20 = reactIs_development.isElement; + var reactIs_development_21 = reactIs_development.isForwardRef; + var reactIs_development_22 = reactIs_development.isFragment; + var reactIs_development_23 = reactIs_development.isLazy; + var reactIs_development_24 = reactIs_development.isMemo; + var reactIs_development_25 = reactIs_development.isPortal; + var reactIs_development_26 = reactIs_development.isProfiler; + var reactIs_development_27 = reactIs_development.isStrictMode; + var reactIs_development_28 = reactIs_development.isSuspense; + + var reactIs = createCommonjsModule(function (module) { + + if (process.env.NODE_ENV === 'production') { + module.exports = reactIs_production_min; + } else { + module.exports = reactIs_development; + } + }); + var reactIs_1 = reactIs.typeOf; + var reactIs_2 = reactIs.AsyncMode; + var reactIs_3 = reactIs.ConcurrentMode; + var reactIs_4 = reactIs.ContextConsumer; + var reactIs_5 = reactIs.ContextProvider; + var reactIs_6 = reactIs.Element; + var reactIs_7 = reactIs.ForwardRef; + var reactIs_8 = reactIs.Fragment; + var reactIs_9 = reactIs.Lazy; + var reactIs_10 = reactIs.Memo; + var reactIs_11 = reactIs.Portal; + var reactIs_12 = reactIs.Profiler; + var reactIs_13 = reactIs.StrictMode; + var reactIs_14 = reactIs.Suspense; + var reactIs_15 = reactIs.isValidElementType; + var reactIs_16 = reactIs.isAsyncMode; + var reactIs_17 = reactIs.isConcurrentMode; + var reactIs_18 = reactIs.isContextConsumer; + var reactIs_19 = reactIs.isContextProvider; + var reactIs_20 = reactIs.isElement; + var reactIs_21 = reactIs.isForwardRef; + var reactIs_22 = reactIs.isFragment; + var reactIs_23 = reactIs.isLazy; + var reactIs_24 = reactIs.isMemo; + var reactIs_25 = reactIs.isPortal; + var reactIs_26 = reactIs.isProfiler; + var reactIs_27 = reactIs.isStrictMode; + var reactIs_28 = reactIs.isSuspense; + + /** + * Copyright 2015, Yahoo! Inc. + * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + var REACT_STATICS = { + childContextTypes: true, + contextType: true, + contextTypes: true, + defaultProps: true, + displayName: true, + getDefaultProps: true, + getDerivedStateFromError: true, + getDerivedStateFromProps: true, + mixins: true, + propTypes: true, + type: true + }; + var KNOWN_STATICS = { + name: true, + length: true, + prototype: true, + caller: true, + callee: true, + arguments: true, + arity: true + }; + var FORWARD_REF_STATICS = { + '$$typeof': true, + render: true, + defaultProps: true, + displayName: true, + propTypes: true + }; + var MEMO_STATICS = { + '$$typeof': true, + compare: true, + defaultProps: true, + displayName: true, + propTypes: true, + type: true + }; + var TYPE_STATICS = {}; + TYPE_STATICS[reactIs_7] = FORWARD_REF_STATICS; + TYPE_STATICS[reactIs_10] = MEMO_STATICS; + + function getStatics(component) { + // React v16.11 and below + if (reactIs_24(component)) { + return MEMO_STATICS; + } // React v16.12 and above + + + return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; + } + + var defineProperty = Object.defineProperty; + var getOwnPropertyNames = Object.getOwnPropertyNames; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var getPrototypeOf = Object.getPrototypeOf; + var objectPrototype = Object.prototype; + function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { + if (typeof sourceComponent !== 'string') { + // don't hoist over string (html) components + if (objectPrototype) { + var inheritedComponent = getPrototypeOf(sourceComponent); + + if (inheritedComponent && inheritedComponent !== objectPrototype) { + hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); + } + } + + var keys = getOwnPropertyNames(sourceComponent); + + if (getOwnPropertySymbols) { + keys = keys.concat(getOwnPropertySymbols(sourceComponent)); + } + + var targetStatics = getStatics(targetComponent); + var sourceStatics = getStatics(sourceComponent); + + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + + if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { + var descriptor = getOwnPropertyDescriptor(sourceComponent, key); + + try { + // Avoid failures from read-only properties + defineProperty(targetComponent, key, descriptor); + } catch (e) {} + } + } + } + + return targetComponent; + } + + return hoistNonReactStatics; + +}))); diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.min.js b/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.min.js new file mode 100644 index 00000000..2883e249 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).hoistNonReactStatics=t()}(this,(function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,t){return e(t={exports:{}},t.exports),t.exports}var r=t((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,n=r?Symbol.for("react.portal"):60106,c=r?Symbol.for("react.fragment"):60107,a=r?Symbol.for("react.strict_mode"):60108,f=r?Symbol.for("react.profiler"):60114,s=r?Symbol.for("react.provider"):60109,i=r?Symbol.for("react.context"):60110,u=r?Symbol.for("react.async_mode"):60111,y=r?Symbol.for("react.concurrent_mode"):60111,l=r?Symbol.for("react.forward_ref"):60112,p=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,d=r?Symbol.for("react.memo"):60115,b=r?Symbol.for("react.lazy"):60116,S=r?Symbol.for("react.fundamental"):60117,$=r?Symbol.for("react.responder"):60118,v=r?Symbol.for("react.scope"):60119;function g(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case u:case y:case c:case f:case a:case p:return e;default:switch(e=e&&e.$$typeof){case i:case l:case b:case d:case s:return e;default:return t}}case n:return t}}}function P(e){return g(e)===y}t.typeOf=g,t.AsyncMode=u,t.ConcurrentMode=y,t.ContextConsumer=i,t.ContextProvider=s,t.Element=o,t.ForwardRef=l,t.Fragment=c,t.Lazy=b,t.Memo=d,t.Portal=n,t.Profiler=f,t.StrictMode=a,t.Suspense=p,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===c||e===y||e===f||e===a||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===d||e.$$typeof===s||e.$$typeof===i||e.$$typeof===l||e.$$typeof===S||e.$$typeof===$||e.$$typeof===v)},t.isAsyncMode=function(e){return P(e)||g(e)===u},t.isConcurrentMode=P,t.isContextConsumer=function(e){return g(e)===i},t.isContextProvider=function(e){return g(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return g(e)===l},t.isFragment=function(e){return g(e)===c},t.isLazy=function(e){return g(e)===b},t.isMemo=function(e){return g(e)===d},t.isPortal=function(e){return g(e)===n},t.isProfiler=function(e){return g(e)===f},t.isStrictMode=function(e){return g(e)===a},t.isSuspense=function(e){return g(e)===p}}));e(r);var o=t((function(e,t){"production"!==process.env.NODE_ENV&&function(){Object.defineProperty(t,"__esModule",{value:!0});var e="function"==typeof Symbol&&Symbol.for,r=e?Symbol.for("react.element"):60103,o=e?Symbol.for("react.portal"):60106,n=e?Symbol.for("react.fragment"):60107,c=e?Symbol.for("react.strict_mode"):60108,a=e?Symbol.for("react.profiler"):60114,f=e?Symbol.for("react.provider"):60109,s=e?Symbol.for("react.context"):60110,i=e?Symbol.for("react.async_mode"):60111,u=e?Symbol.for("react.concurrent_mode"):60111,y=e?Symbol.for("react.forward_ref"):60112,l=e?Symbol.for("react.suspense"):60113,p=e?Symbol.for("react.suspense_list"):60120,m=e?Symbol.for("react.memo"):60115,d=e?Symbol.for("react.lazy"):60116,b=e?Symbol.for("react.fundamental"):60117,S=e?Symbol.for("react.responder"):60118,$=e?Symbol.for("react.scope"):60119;var v=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),o=1;t>o;o++)r[o-1]=arguments[o];var n=0,c="Warning: "+e.replace(/%s/g,(function(){return r[n++]}));void 0!==console&&console.warn(c);try{throw Error(c)}catch(e){}},g=function(e,t){if(void 0===t)throw Error("`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning message argument");if(!e){for(var r=arguments.length,o=Array(r>2?r-2:0),n=2;r>n;n++)o[n-2]=arguments[n];v.apply(void 0,[t].concat(o))}};function P(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:var p=e.type;switch(p){case i:case u:case n:case a:case c:case l:return p;default:var b=p&&p.$$typeof;switch(b){case s:case y:case d:case m:case f:return b;default:return t}}case o:return t}}}var h=i,w=u,M=s,x=f,C=r,O=y,_=n,j=d,E=m,F=o,N=a,R=c,T=l,A=!1;function z(e){return P(e)===u}t.typeOf=P,t.AsyncMode=h,t.ConcurrentMode=w,t.ContextConsumer=M,t.ContextProvider=x,t.Element=C,t.ForwardRef=O,t.Fragment=_,t.Lazy=j,t.Memo=E,t.Portal=F,t.Profiler=N,t.StrictMode=R,t.Suspense=T,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===n||e===u||e===a||e===c||e===l||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===m||e.$$typeof===f||e.$$typeof===s||e.$$typeof===y||e.$$typeof===b||e.$$typeof===S||e.$$typeof===$)},t.isAsyncMode=function(e){return A||(A=!0,g(!1,"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),z(e)||P(e)===i},t.isConcurrentMode=z,t.isContextConsumer=function(e){return P(e)===s},t.isContextProvider=function(e){return P(e)===f},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return P(e)===y},t.isFragment=function(e){return P(e)===n},t.isLazy=function(e){return P(e)===d},t.isMemo=function(e){return P(e)===m},t.isPortal=function(e){return P(e)===o},t.isProfiler=function(e){return P(e)===a},t.isStrictMode=function(e){return P(e)===c},t.isSuspense=function(e){return P(e)===l}}()}));e(o);var n=t((function(e){e.exports="production"===process.env.NODE_ENV?r:o})),c=n.Memo,a=n.isMemo,f={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},s={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},u={};function y(e){return a(e)?i:u[e.$$typeof]||f}u[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},u[c]=i;var l=Object.defineProperty,p=Object.getOwnPropertyNames,m=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,b=Object.getPrototypeOf,S=Object.prototype;return function e(t,r,o){if("string"!=typeof r){if(S){var n=b(r);n&&n!==S&&e(t,n,o)}var c=p(r);m&&(c=c.concat(m(r)));for(var a=y(t),f=y(r),i=0;c.length>i;++i){var u=c[i];if(!(s[u]||o&&o[u]||f&&f[u]||a&&a[u])){var $=d(r,u);try{l(t,u,$)}catch(e){}}}}return t}})); diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/package.json b/iut-expo-starter/node_modules/hoist-non-react-statics/package.json new file mode 100644 index 00000000..f5ec09d5 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/package.json @@ -0,0 +1,55 @@ +{ + "name": "hoist-non-react-statics", + "version": "3.3.2", + "description": "Copies non-react specific statics from a child component to a parent component", + "main": "dist/hoist-non-react-statics.cjs.js", + "repository": { + "type": "git", + "url": "git://github.com/mridgway/hoist-non-react-statics.git" + }, + "files": [ + "src", + "dist", + "index.d.ts" + ], + "scripts": { + "lint": "eslint src", + "build": "rimraf dist && rollup -c", + "test": "nyc mocha tests/unit/ --recursive --reporter spec --require=@babel/register", + "coverage": "nyc report --reporter=text-lcov | coveralls", + "prepublish": "npm test" + }, + "author": "Michael Ridgway ", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + }, + "devDependencies": { + "@babel/core": "^7.5.0", + "@babel/plugin-proposal-class-properties": "^7.5.0", + "@babel/preset-env": "^7.5.0", + "@babel/preset-react": "^7.0.0", + "@babel/register": "^7.4.4", + "chai": "^4.2.0", + "coveralls": "^2.11.1", + "create-react-class": "^15.5.3", + "eslint": "^4.13.1", + "mocha": "^6.1.4", + "nyc": "^14.1.1", + "pre-commit": "^1.0.7", + "prop-types": "^15.6.2", + "react": "^16.7.0", + "rimraf": "^2.6.2", + "rollup": "^1.16.6", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-commonjs": "^10.0.1", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "^5.1.1" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "keywords": [ + "react" + ] +} diff --git a/iut-expo-starter/node_modules/hoist-non-react-statics/src/index.js b/iut-expo-starter/node_modules/hoist-non-react-statics/src/index.js new file mode 100644 index 00000000..40b764b9 --- /dev/null +++ b/iut-expo-starter/node_modules/hoist-non-react-statics/src/index.js @@ -0,0 +1,104 @@ +/** + * Copyright 2015, Yahoo! Inc. + * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +import { ForwardRef, Memo, isMemo } from 'react-is'; + +const REACT_STATICS = { + childContextTypes: true, + contextType: true, + contextTypes: true, + defaultProps: true, + displayName: true, + getDefaultProps: true, + getDerivedStateFromError: true, + getDerivedStateFromProps: true, + mixins: true, + propTypes: true, + type: true +}; + +const KNOWN_STATICS = { + name: true, + length: true, + prototype: true, + caller: true, + callee: true, + arguments: true, + arity: true +}; + +const FORWARD_REF_STATICS = { + '$$typeof': true, + render: true, + defaultProps: true, + displayName: true, + propTypes: true +}; + +const MEMO_STATICS = { + '$$typeof': true, + compare: true, + defaultProps: true, + displayName: true, + propTypes: true, + type: true, +} + +const TYPE_STATICS = {}; +TYPE_STATICS[ForwardRef] = FORWARD_REF_STATICS; +TYPE_STATICS[Memo] = MEMO_STATICS; + +function getStatics(component) { + // React v16.11 and below + if (isMemo(component)) { + return MEMO_STATICS; + } + + // React v16.12 and above + return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; +} + +const defineProperty = Object.defineProperty; +const getOwnPropertyNames = Object.getOwnPropertyNames; +const getOwnPropertySymbols = Object.getOwnPropertySymbols; +const getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +const getPrototypeOf = Object.getPrototypeOf; +const objectPrototype = Object.prototype; + +export default function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { + if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components + + if (objectPrototype) { + const inheritedComponent = getPrototypeOf(sourceComponent); + if (inheritedComponent && inheritedComponent !== objectPrototype) { + hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); + } + } + + let keys = getOwnPropertyNames(sourceComponent); + + if (getOwnPropertySymbols) { + keys = keys.concat(getOwnPropertySymbols(sourceComponent)); + } + + const targetStatics = getStatics(targetComponent); + const sourceStatics = getStatics(sourceComponent); + + for (let i = 0; i < keys.length; ++i) { + const key = keys[i]; + if (!KNOWN_STATICS[key] && + !(blacklist && blacklist[key]) && + !(sourceStatics && sourceStatics[key]) && + !(targetStatics && targetStatics[key]) + ) { + const descriptor = getOwnPropertyDescriptor(sourceComponent, key); + try { // Avoid failures from read-only properties + defineProperty(targetComponent, key, descriptor); + } catch (e) {} + } + } + } + + return targetComponent; +}; diff --git a/iut-expo-starter/node_modules/html-webpack-plugin/node_modules/.bin/json5 b/iut-expo-starter/node_modules/html-webpack-plugin/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/html-webpack-plugin/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/mini-css-extract-plugin/node_modules/.bin/json5 b/iut-expo-starter/node_modules/mini-css-extract-plugin/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/mini-css-extract-plugin/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/prop-types/LICENSE b/iut-expo-starter/node_modules/prop-types/LICENSE new file mode 100644 index 00000000..188fb2b0 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/iut-expo-starter/node_modules/prop-types/README.md b/iut-expo-starter/node_modules/prop-types/README.md new file mode 100644 index 00000000..e54d435f --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/README.md @@ -0,0 +1,302 @@ +# prop-types [![Build Status](https://travis-ci.com/facebook/prop-types.svg?branch=main)](https://travis-ci.org/facebook/prop-types) + +Runtime type checking for React props and similar objects. + +You can use prop-types to document the intended types of properties passed to +components. React (and potentially other libraries—see the `checkPropTypes()` +reference below) will check props passed to your components against those +definitions, and warn in development if they don’t match. + +## Installation + +```shell +npm install --save prop-types +``` + +## Importing + +```js +import PropTypes from 'prop-types'; // ES6 +var PropTypes = require('prop-types'); // ES5 with npm +``` + +### CDN + +If you prefer to exclude `prop-types` from your application and use it +globally via `window.PropTypes`, the `prop-types` package provides +single-file distributions, which are hosted on the following CDNs: + +* [**unpkg**](https://unpkg.com/prop-types/) +```html + + + + + +``` + +* [**cdnjs**](https://cdnjs.com/libraries/prop-types) +```html + + + + + +``` + +To load a specific version of `prop-types` replace `15.6.0` with the version number. + +## Usage + +PropTypes was originally exposed as part of the React core module, and is +commonly used with React components. +Here is an example of using PropTypes with a React component, which also +documents the different validators provided: + +```js +import React from 'react'; +import PropTypes from 'prop-types'; + +class MyComponent extends React.Component { + render() { + // ... do things with the props + } +} + +MyComponent.propTypes = { + // You can declare that a prop is a specific JS primitive. By default, these + // are all optional. + optionalArray: PropTypes.array, + optionalBigInt: PropTypes.bigint, + optionalBool: PropTypes.bool, + optionalFunc: PropTypes.func, + optionalNumber: PropTypes.number, + optionalObject: PropTypes.object, + optionalString: PropTypes.string, + optionalSymbol: PropTypes.symbol, + + // Anything that can be rendered: numbers, strings, elements or an array + // (or fragment) containing these types. + // see https://reactjs.org/docs/rendering-elements.html for more info + optionalNode: PropTypes.node, + + // A React element (ie. ). + optionalElement: PropTypes.element, + + // A React element type (eg. MyComponent). + // a function, string, or "element-like" object (eg. React.Fragment, Suspense, etc.) + // see https://github.com/facebook/react/blob/HEAD/packages/shared/isValidElementType.js + optionalElementType: PropTypes.elementType, + + // You can also declare that a prop is an instance of a class. This uses + // JS's instanceof operator. + optionalMessage: PropTypes.instanceOf(Message), + + // You can ensure that your prop is limited to specific values by treating + // it as an enum. + optionalEnum: PropTypes.oneOf(['News', 'Photos']), + + // An object that could be one of many types + optionalUnion: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + PropTypes.instanceOf(Message) + ]), + + // An array of a certain type + optionalArrayOf: PropTypes.arrayOf(PropTypes.number), + + // An object with property values of a certain type + optionalObjectOf: PropTypes.objectOf(PropTypes.number), + + // You can chain any of the above with `isRequired` to make sure a warning + // is shown if the prop isn't provided. + + // An object taking on a particular shape + optionalObjectWithShape: PropTypes.shape({ + optionalProperty: PropTypes.string, + requiredProperty: PropTypes.number.isRequired + }), + + // An object with warnings on extra properties + optionalObjectWithStrictShape: PropTypes.exact({ + optionalProperty: PropTypes.string, + requiredProperty: PropTypes.number.isRequired + }), + + requiredFunc: PropTypes.func.isRequired, + + // A value of any data type + requiredAny: PropTypes.any.isRequired, + + // You can also specify a custom validator. It should return an Error + // object if the validation fails. Don't `console.warn` or throw, as this + // won't work inside `oneOfType`. + customProp: function(props, propName, componentName) { + if (!/matchme/.test(props[propName])) { + return new Error( + 'Invalid prop `' + propName + '` supplied to' + + ' `' + componentName + '`. Validation failed.' + ); + } + }, + + // You can also supply a custom validator to `arrayOf` and `objectOf`. + // It should return an Error object if the validation fails. The validator + // will be called for each key in the array or object. The first two + // arguments of the validator are the array or object itself, and the + // current item's key. + customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) { + if (!/matchme/.test(propValue[key])) { + return new Error( + 'Invalid prop `' + propFullName + '` supplied to' + + ' `' + componentName + '`. Validation failed.' + ); + } + }) +}; +``` + +Refer to the [React documentation](https://facebook.github.io/react/docs/typechecking-with-proptypes.html) for more information. + +## Migrating from React.PropTypes + +Check out [Migrating from React.PropTypes](https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) for details on how to migrate to `prop-types` from `React.PropTypes`. + +Note that this blog posts **mentions a codemod script that performs the conversion automatically**. + +There are also important notes below. + +## How to Depend on This Package? + +For apps, we recommend putting it in `dependencies` with a caret range. +For example: + +```js + "dependencies": { + "prop-types": "^15.5.7" + } +``` + +For libraries, we *also* recommend leaving it in `dependencies`: + +```js + "dependencies": { + "prop-types": "^15.5.7" + }, + "peerDependencies": { + "react": "^15.5.0" + } +``` + +**Note:** there are known issues in versions before 15.5.7 so we recommend using it as the minimal version. + +Make sure that the version range uses a caret (`^`) and thus is broad enough for npm to efficiently deduplicate packages. + +For UMD bundles of your components, make sure you **don’t** include `PropTypes` in the build. Usually this is done by marking it as an external (the specifics depend on your bundler), just like you do with React. + +## Compatibility + +### React 0.14 + +This package is compatible with **React 0.14.9**. Compared to 0.14.8 (which was released in March of 2016), there are no other changes in 0.14.9, so it should be a painless upgrade. + +```shell +# ATTENTION: Only run this if you still use React 0.14! +npm install --save react@^0.14.9 react-dom@^0.14.9 +``` + +### React 15+ + +This package is compatible with **React 15.3.0** and higher. + +``` +npm install --save react@^15.3.0 react-dom@^15.3.0 +``` + +### What happens on other React versions? + +It outputs warnings with the message below even though the developer doesn’t do anything wrong. Unfortunately there is no solution for this other than updating React to either 15.3.0 or higher, or 0.14.9 if you’re using React 0.14. + +## Difference from `React.PropTypes`: Don’t Call Validator Functions + +First of all, **which version of React are you using**? You might be seeing this message because a component library has updated to use `prop-types` package, but your version of React is incompatible with it. See the [above section](#compatibility) for more details. + +Are you using either React 0.14.9 or a version higher than React 15.3.0? Read on. + +When you migrate components to use the standalone `prop-types`, **all validator functions will start throwing an error if you call them directly**. This makes sure that nobody relies on them in production code, and it is safe to strip their implementations to optimize the bundle size. + +Code like this is still fine: + +```js +MyComponent.propTypes = { + myProp: PropTypes.bool +}; +``` + +However, code like this will not work with the `prop-types` package: + +```js +// Will not work with `prop-types` package! +var errorOrNull = PropTypes.bool(42, 'myProp', 'MyComponent', 'prop'); +``` + +It will throw an error: + +``` +Calling PropTypes validators directly is not supported by the `prop-types` package. +Use PropTypes.checkPropTypes() to call them. +``` + +(If you see **a warning** rather than an error with this message, please check the [above section about compatibility](#compatibility).) + +This is new behavior, and you will only encounter it when you migrate from `React.PropTypes` to the `prop-types` package. For the vast majority of components, this doesn’t matter, and if you didn’t see [this warning](https://facebook.github.io/react/warnings/dont-call-proptypes.html) in your components, your code is safe to migrate. This is not a breaking change in React because you are only opting into this change for a component by explicitly changing your imports to use `prop-types`. If you temporarily need the old behavior, you can keep using `React.PropTypes` until React 16. + +**If you absolutely need to trigger the validation manually**, call `PropTypes.checkPropTypes()`. Unlike the validators themselves, this function is safe to call in production, as it will be replaced by an empty function: + +```js +// Works with standalone PropTypes +PropTypes.checkPropTypes(MyComponent.propTypes, props, 'prop', 'MyComponent'); +``` +See below for more info. + +**If you DO want to use validation in production**, you can choose to use the **development version** by importing/requiring `prop-types/prop-types` instead of `prop-types`. + +**You might also see this error** if you’re calling a `PropTypes` validator from your own custom `PropTypes` validator. In this case, the fix is to make sure that you are passing *all* of the arguments to the inner function. There is a more in-depth explanation of how to fix it [on this page](https://facebook.github.io/react/warnings/dont-call-proptypes.html#fixing-the-false-positive-in-third-party-proptypes). Alternatively, you can temporarily keep using `React.PropTypes` until React 16, as it would still only warn in this case. + +If you use a bundler like Browserify or Webpack, don’t forget to [follow these instructions](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build) to correctly bundle your application in development or production mode. Otherwise you’ll ship unnecessary code to your users. + +## PropTypes.checkPropTypes + +React will automatically check the propTypes you set on the component, but if +you are using PropTypes without React then you may want to manually call +`PropTypes.checkPropTypes`, like so: + +```js +const myPropTypes = { + name: PropTypes.string, + age: PropTypes.number, + // ... define your prop validations +}; + +const props = { + name: 'hello', // is valid + age: 'world', // not valid +}; + +// Let's say your component is called 'MyComponent' + +// Works with standalone PropTypes +PropTypes.checkPropTypes(myPropTypes, props, 'prop', 'MyComponent'); +// This will warn as follows: +// Warning: Failed prop type: Invalid prop `age` of type `string` supplied to +// `MyComponent`, expected `number`. +``` + +## PropTypes.resetWarningCache() + +`PropTypes.checkPropTypes(...)` only `console.error`s a given message once. To reset the error warning cache in tests, call `PropTypes.resetWarningCache()` + +### License + +prop-types is [MIT licensed](./LICENSE). diff --git a/iut-expo-starter/node_modules/prop-types/checkPropTypes.js b/iut-expo-starter/node_modules/prop-types/checkPropTypes.js new file mode 100644 index 00000000..481f2cf9 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/checkPropTypes.js @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + var loggedTypeFailures = {}; + var has = require('./lib/has'); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) { /**/ } + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (process.env.NODE_ENV !== 'production') { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (process.env.NODE_ENV !== 'production') { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; diff --git a/iut-expo-starter/node_modules/prop-types/factory.js b/iut-expo-starter/node_modules/prop-types/factory.js new file mode 100644 index 00000000..abdf8e6d --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/factory.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +// React 15.5 references this module, and assumes PropTypes are still callable in production. +// Therefore we re-export development-only version with all the PropTypes checks here. +// However if one is migrating to the `prop-types` npm library, they will go through the +// `index.js` entry point, and it will branch depending on the environment. +var factory = require('./factoryWithTypeCheckers'); +module.exports = function(isValidElement) { + // It is still allowed in 15.5. + var throwOnDirectAccess = false; + return factory(isValidElement, throwOnDirectAccess); +}; diff --git a/iut-expo-starter/node_modules/prop-types/factoryWithThrowingShims.js b/iut-expo-starter/node_modules/prop-types/factoryWithThrowingShims.js new file mode 100644 index 00000000..ac882672 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/factoryWithThrowingShims.js @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bigint: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; diff --git a/iut-expo-starter/node_modules/prop-types/factoryWithTypeCheckers.js b/iut-expo-starter/node_modules/prop-types/factoryWithTypeCheckers.js new file mode 100644 index 00000000..a88068e5 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/factoryWithTypeCheckers.js @@ -0,0 +1,610 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactIs = require('react-is'); +var assign = require('object-assign'); + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); +var has = require('./lib/has'); +var checkPropTypes = require('./checkPropTypes'); + +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bigint: createPrimitiveTypeChecker('bigint'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message, data) { + this.message = message; + this.data = data && typeof data === 'object' ? data: {}; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (process.env.NODE_ENV !== 'production') { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), + {expectedType: expectedType} + ); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (process.env.NODE_ENV !== 'production') { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + var expectedTypes = []; + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); + if (checkerResult == null) { + return null; + } + if (checkerResult.data && has(checkerResult.data, 'expectedType')) { + expectedTypes.push(checkerResult.data.expectedType); + } + } + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function invalidValidatorError(componentName, location, propFullName, key, type) { + return new PropTypeError( + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' + ); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (has(shapeTypes, key) && typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; diff --git a/iut-expo-starter/node_modules/prop-types/index.js b/iut-expo-starter/node_modules/prop-types/index.js new file mode 100644 index 00000000..e9ef51d6 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/index.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (process.env.NODE_ENV !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} diff --git a/iut-expo-starter/node_modules/prop-types/lib/ReactPropTypesSecret.js b/iut-expo-starter/node_modules/prop-types/lib/ReactPropTypesSecret.js new file mode 100644 index 00000000..f54525e7 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/lib/ReactPropTypesSecret.js @@ -0,0 +1,12 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; diff --git a/iut-expo-starter/node_modules/prop-types/lib/has.js b/iut-expo-starter/node_modules/prop-types/lib/has.js new file mode 100644 index 00000000..007bae32 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/lib/has.js @@ -0,0 +1 @@ +module.exports = Function.call.bind(Object.prototype.hasOwnProperty); diff --git a/iut-expo-starter/node_modules/prop-types/node_modules/.bin/loose-envify b/iut-expo-starter/node_modules/prop-types/node_modules/.bin/loose-envify new file mode 120000 index 00000000..2a6b8df6 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/node_modules/.bin/loose-envify @@ -0,0 +1 @@ +../../../loose-envify/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/prop-types/package.json b/iut-expo-starter/node_modules/prop-types/package.json new file mode 100644 index 00000000..63daf704 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/package.json @@ -0,0 +1,60 @@ +{ + "name": "prop-types", + "version": "15.8.1", + "description": "Runtime type checking for React props and similar objects.", + "sideEffects": false, + "main": "index.js", + "license": "MIT", + "files": [ + "LICENSE", + "README.md", + "checkPropTypes.js", + "factory.js", + "factoryWithThrowingShims.js", + "factoryWithTypeCheckers.js", + "index.js", + "prop-types.js", + "prop-types.min.js", + "lib" + ], + "repository": "facebook/prop-types", + "keywords": [ + "react" + ], + "bugs": { + "url": "https://github.com/facebook/prop-types/issues" + }, + "homepage": "https://facebook.github.io/react/", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "scripts": { + "pretest": "npm run lint", + "lint": "eslint .", + "test": "npm run tests-only", + "tests-only": "jest", + "umd": "NODE_ENV=development browserify index.js -t loose-envify --standalone PropTypes -o prop-types.js", + "umd-min": "NODE_ENV=production browserify index.js -t loose-envify -t uglifyify --standalone PropTypes -p bundle-collapser/plugin -o | uglifyjs --compress unused,dead_code -o prop-types.min.js", + "build": "yarn umd && yarn umd-min", + "prepublish": "not-in-publish || yarn build" + }, + "devDependencies": { + "babel-jest": "^19.0.0", + "babel-preset-react": "^6.24.1", + "browserify": "^16.5.0", + "bundle-collapser": "^1.4.0", + "eslint": "^8.6.0", + "in-publish": "^2.0.1", + "jest": "^19.0.2", + "react": "^15.7.0", + "uglifyify": "^5.0.2", + "uglifyjs": "^2.4.11" + }, + "browserify": { + "transform": [ + "loose-envify" + ] + } +} diff --git a/iut-expo-starter/node_modules/prop-types/prop-types.js b/iut-expo-starter/node_modules/prop-types/prop-types.js new file mode 100644 index 00000000..a5a15ddb --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/prop-types.js @@ -0,0 +1,1315 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PropTypes = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + "development" !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + var expectedTypes = []; + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); + if (checkerResult == null) { + return null; + } + if (checkerResult.data.hasOwnProperty('expectedType')) { + expectedTypes.push(checkerResult.data.expectedType); + } + } + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function invalidValidatorError(componentName, location, propFullName, key, type) { + return new PropTypeError( + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' + ); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (has(shapeTypes, key) && typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +},{"./checkPropTypes":1,"./lib/ReactPropTypesSecret":5,"./lib/has":6,"object-assign":7,"react-is":11}],4:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if ("development" !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} + +},{"./factoryWithThrowingShims":2,"./factoryWithTypeCheckers":3,"react-is":11}],5:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +},{}],6:[function(require,module,exports){ +module.exports = Function.call.bind(Object.prototype.hasOwnProperty); + +},{}],7:[function(require,module,exports){ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],8:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],9:[function(require,module,exports){ +(function (process){(function (){ +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + + + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + +}).call(this)}).call(this,require('_process')) +},{"_process":8}],10:[function(require,module,exports){ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? +Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; +function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; +exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; +exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; + +},{}],11:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} + +}).call(this)}).call(this,require('_process')) +},{"./cjs/react-is.development.js":9,"./cjs/react-is.production.min.js":10,"_process":8}]},{},[4])(4) +}); diff --git a/iut-expo-starter/node_modules/prop-types/prop-types.min.js b/iut-expo-starter/node_modules/prop-types/prop-types.min.js new file mode 100644 index 00000000..7a746e12 --- /dev/null +++ b/iut-expo-starter/node_modules/prop-types/prop-types.min.js @@ -0,0 +1 @@ +!function(f){"object"==typeof exports&&"undefined"!=typeof module?module.exports=f():"function"==typeof define&&define.amd?define([],f):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).PropTypes=f()}(function(){return function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var p="function"==typeof require&&require;if(!f&&p)return p(i,!0);if(u)return u(i,!0);throw(p=new Error("Cannot find module '"+i+"'")).code="MODULE_NOT_FOUND",p}p=n[i]={exports:{}},e[i][0].call(p.exports,function(r){return o(e[i][1][r]||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/README.md b/iut-expo-starter/node_modules/react-native-gesture-handler/README.md new file mode 100644 index 00000000..45bfe6b2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/README.md @@ -0,0 +1,60 @@ +React Native Gesture Handler by Software Mansion + +### Declarative API exposing platform native touch and gesture system to React Native. + +React Native Gesture Handler provides native-driven gesture management APIs for building best possible touch-based experiences in React Native. + +With this library gestures are no longer controlled by the JS responder system, but instead are recognized and tracked in the UI thread. +It makes touch interactions and gesture tracking not only smooth, but also dependable and deterministic. + +## Installation + +Check [getting started](https://docs.swmansion.com/react-native-gesture-handler/docs/#installation) section of our docs for the detailed installation instructions. + +## Fabric + +To learn how to use `react-native-gesture-handler` with Fabric architecture, head over to [Fabric README](README-Fabric.md). Instructions on how to run Fabric Example within this repo can be found in the [FabricExample README](FabricExample/README.md). + +## Documentation + +Check out our dedicated documentation page for info about this library, API reference and more: [https://docs.swmansion.com/react-native-gesture-handler/docs/](https://docs.swmansion.com/react-native-gesture-handler/docs/) + +## Examples + +If you want to play with the API but don't feel like trying it on a real app, you can run the example project. Clone the repo, go to the `example` folder and run: + +```bash +yarn install +``` + +If you are running on ios, run `pod install` in the ios folder + +Run `yarn start` to start the metro bundler + +Run `yarn android` or `yarn ios` (depending on which platform you want to run the example app on). + +You will need to have an Android or iOS device or emulator connected as well as `react-native-cli` package installed globally. + +## React Native Support + +| version | react-native version | +| ------- | -------------------- | +| 2.0.0+ | 0.63.0+ | +| 1.4.0+ | 0.60.0+ | +| 1.1.0+ | 0.57.2+ | +| <1.1.0 | 0.50.0+ | + +It may be possible to use newer versions of react-native-gesture-handler on React Native with version <= 0.59 by reverse Jetifying. +Read more on that here + +## License + +Gesture handler library is licensed under [The MIT License](LICENSE). + +## Credits + +This project has been build and is maintained thanks to the support from [Shopify](https://shopify.com), [Expo.io](https://expo.io) and [Software Mansion](https://swmansion.com) + +[![shopify](https://avatars1.githubusercontent.com/u/8085?v=3&s=100 'Shopify.com')](https://shopify.com) +[![expo](https://avatars2.githubusercontent.com/u/12504344?v=3&s=100 'Expo.io')](https://expo.io) +[![swm](https://logo.swmansion.com/logo?color=white&variant=desktop&width=150&tag=react-native-reanimated-github 'Software Mansion')](https://swmansion.com) diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/RNGestureHandler.podspec b/iut-expo-starter/node_modules/react-native-gesture-handler/RNGestureHandler.podspec new file mode 100644 index 00000000..fc3226de --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/RNGestureHandler.podspec @@ -0,0 +1,56 @@ +require "json" + +fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1' + +isUserApp = File.exist?(File.join(__dir__, "..", "..", "node_modules", "react-native", "package.json")) +if isUserApp + libInstances = %x[find ../../ -name "package.json" | grep "/react-native-gesture-handler/package.json" | grep -v "/.yarn/"] + libInstancesArray = libInstances.split("\n") + if libInstancesArray.length() > 1 + parsedLocation = '' + for location in libInstancesArray + location['../../'] = '- ' + location['/package.json'] = '' + parsedLocation += location + "\n" + end + raise "[Gesture Handler] Multiple versions of Gesture Handler were detected. Only one instance of react-native-gesture-handler can be installed in a project. You need to resolve the conflict manually. Check out the documentation: https://docs.swmansion.com/react-native-gesture-handler/docs/troubleshooting#multiple-versions-of-reanimated-were-detected \n\nConflict between: \n" + parsedLocation + end +end + +Pod::Spec.new do |s| + # NPM package specification + package = JSON.parse(File.read(File.join(File.dirname(__FILE__), "package.json"))) + + s.name = "RNGestureHandler" + s.version = package["version"] + s.summary = package["description"] + s.homepage = "https://github.com/software-mansion/react-native-gesture-handler" + s.license = "MIT" + s.author = { package["author"]["name"] => package["author"]["email"] } + s.source = { :git => "https://github.com/software-mansion/react-native-gesture-handler", :tag => "#{s.version}" } + s.source_files = "ios/**/*.{h,m,mm}" + s.requires_arc = true + + if fabric_enabled + folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32' + + s.pod_target_xcconfig = { + 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/boost" "$(PODS_ROOT)/boost-for-react-native" "$(PODS_ROOT)/RCT-Folly"', + 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++17', + } + s.platforms = { ios: '11.0', tvos: '11.0' } + s.compiler_flags = folly_compiler_flags + ' -DRN_FABRIC_ENABLED' + + s.dependency "React" + s.dependency "React-RCTFabric" # This is for fabric component + s.dependency "React-Codegen" + s.dependency "RCT-Folly" + s.dependency "RCTRequired" + s.dependency "RCTTypeSafety" + s.dependency "ReactCommon/turbomodule/core" + else + s.platforms = { :ios => "9.0", :tvos => "9.0" } + + s.dependency "React-Core" + end +end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/Swipeable/package.json b/iut-expo-starter/node_modules/react-native-gesture-handler/Swipeable/package.json new file mode 100644 index 00000000..ed038794 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/Swipeable/package.json @@ -0,0 +1,6 @@ +{ + "main": "../lib/commonjs/components/Swipeable", + "module": "../lib/module/components/Swipeable", + "react-native": "../src/components/Swipeable", + "types": "../lib/typescript/components/Swipeable.d.ts" +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/build.gradle b/iut-expo-starter/node_modules/react-native-gesture-handler/android/build.gradle new file mode 100644 index 00000000..20f41eaa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/build.gradle @@ -0,0 +1,236 @@ +import groovy.json.JsonSlurper +import java.nio.file.Paths + +buildscript { + def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['RNGH_kotlinVersion'] + + repositories { + maven { + url "https://plugins.gradle.org/m2/" + } + mavenCentral() + google() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + classpath("com.android.tools.build:gradle:7.2.1") + classpath("com.diffplug.spotless:spotless-plugin-gradle:6.7.2") + } +} + +def isNewArchitectureEnabled() { + // To opt-in for the New Architecture, you can either: + // - Set `newArchEnabled` to true inside the `gradle.properties` file + // - Invoke gradle with `-newArchEnabled=true` + // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" +} + +def safeExtGet(prop, fallback) { + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback +} + +def resolveReactNativeDirectory() { + def reactNativeLocation = safeExtGet("REACT_NATIVE_NODE_MODULES_DIR", null) + if (reactNativeLocation != null) { + return file(reactNativeLocation) + } + + // monorepo workaround + // react-native can be hoisted or in project's own node_modules + def reactNativeFromProjectNodeModules = file("${rootProject.projectDir}/../node_modules/react-native") + if (reactNativeFromProjectNodeModules.exists()) { + return reactNativeFromProjectNodeModules + } + + def reactNativeFromNodeModulesWithReanimated = file("${projectDir}/../../react-native") + if (reactNativeFromNodeModulesWithReanimated.exists()) { + return reactNativeFromNodeModulesWithReanimated + } + + throw new Exception( + "[react-native-gesture-handler] Unable to resolve react-native location in " + + "node_modules. You should add project extension property (in app/build.gradle) " + + "`REACT_NATIVE_NODE_MODULES_DIR` with path to react-native." + ) +} + +if (isNewArchitectureEnabled()) { + apply plugin: 'com.facebook.react' +} +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +if (project == rootProject) { + apply from: "spotless.gradle" +} + +// Check whether Reanimated 2.3 or higher is installed alongside Gesture Handler +def shouldUseCommonInterfaceFromReanimated() { + def reanimated = rootProject.subprojects.find { it.name == 'react-native-reanimated' } + if (reanimated != null) { + def inputFile = new File(reanimated.projectDir, '../package.json') + def json = new JsonSlurper().parseText(inputFile.text) + def reanimatedVersion = json.version as String + def (major, minor, patch) = reanimatedVersion.tokenize('.') + return (Integer.parseInt(major) == 2 && Integer.parseInt(minor) >= 3) || Integer.parseInt(major) == 3 + } else { + return false + } +} + +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} + +def shouldAssertNoMultipleInstances() { + if (rootProject.hasProperty("disableMultipleInstancesCheck")) { + return rootProject.property("disableMultipleInstancesCheck") != "true" + } else { + return true + } +} + +def noMultipleInstancesAssertion() { + Set files = fileTree(rootDir.parent) { + include "node_modules/**/react-native-gesture-handler/package.json" + exclude "**/.yarn/**" + exclude "**/.pnpm/**" + }.files + + if (files.size() > 1) { + String parsedLocation = files.stream().map({ File file -> "- " + file.toString().replace("/package.json", "") }).collect().join("\n") + String exceptionMessage = "\n[Gesture Handler] Multiple instances of Gesture Handler were detected. Only one instance of react-native-gesture-handler can be installed in a project. You need to resolve the conflict manually. Check out the documentation: https://docs.swmansion.com/react-native-gesture-handler/docs/troubleshooting#multiple-instances-of-gesture-handler-were-detected \n\nConflict between: \n" + parsedLocation + "\n"; + throw new Exception(exceptionMessage); + } +} + +def REACT_NATIVE_DIR = resolveReactNativeDirectory() + +def reactProperties = new Properties() +file("$REACT_NATIVE_DIR/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } + +def REACT_NATIVE_VERSION = reactProperties.getProperty("VERSION_NAME") +def REACT_NATIVE_MINOR_VERSION = REACT_NATIVE_VERSION.startsWith("0.0.0-") ? 1000 : REACT_NATIVE_VERSION.split("\\.")[1].toInteger() + +def assertionTask = task assertNoMultipleInstances { + onlyIf { shouldAssertNoMultipleInstances() } + doFirst { + noMultipleInstancesAssertion() + } +} + +tasks.preBuild { + dependsOn assertionTask +} + +repositories { + mavenCentral() +} + +android { + compileSdkVersion safeExtGet("compileSdkVersion", 28) + + // Used to override the NDK path/version on internal CI or by allowing + // users to customize the NDK path/version from their root project (e.g. for M1 support) + if (rootProject.hasProperty("ndkPath")) { + ndkPath rootProject.ext.ndkPath + } + if (rootProject.hasProperty("ndkVersion")) { + ndkVersion rootProject.ext.ndkVersion + } + + if (REACT_NATIVE_MINOR_VERSION >= 71) { + buildFeatures { + prefab true + } + } + + defaultConfig { + minSdkVersion safeExtGet('minSdkVersion', 16) + targetSdkVersion safeExtGet('targetSdkVersion', 28) + versionCode 1 + versionName "1.0" + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() + buildConfigField "int", "REACT_NATIVE_MINOR_VERSION", REACT_NATIVE_MINOR_VERSION.toString() + + if (isNewArchitectureEnabled()) { + var appProject = rootProject.allprojects.find {it.plugins.hasPlugin('com.android.application')} + externalNativeBuild { + cmake { + cppFlags "-O2", "-frtti", "-fexceptions", "-Wall", "-Werror", "-std=c++17" + arguments "-DAPP_BUILD_DIR=${appProject.buildDir}", + "-DREACT_NATIVE_DIR=${REACT_NATIVE_DIR}", + "-DANDROID_STL=c++_shared" + abiFilters (*reactNativeArchitectures()) + } + } + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + if (isNewArchitectureEnabled()) { + externalNativeBuild { + cmake { + path "src/main/jni/CMakeLists.txt" + } + } + } + + packagingOptions { + // For some reason gradle only complains about the duplicated version of libreact_render libraries + // while there are more libraries copied in intermediates folder of the lib build directory, we exclude + // only the ones that make the build fail (ideally we should only include libgesturehandler but we + // are only allowed to specify exclude patterns) + exclude "**/libreact_render*.so" + } + + sourceSets.main { + java { + // Include "common/" only when it's not provided by Reanimated to mitigate + // multiple definitions of the same class preventing build + if (shouldUseCommonInterfaceFromReanimated()) { + srcDirs += 'reanimated/src/main/java' + } else { + srcDirs += 'common/src/main/java' + srcDirs += 'noreanimated/src/main/java' + } + + if (isNewArchitectureEnabled()) { + srcDirs += 'src/fabric/java' + } else { + // this folder also includes files from codegen so the library can compile with + // codegen turned off + srcDirs += 'src/paper/java' + } + } + } +} + +def kotlin_version = safeExtGet('kotlinVersion', project.properties['RNGH_kotlinVersion']) + +dependencies { + //noinspection GradleDynamicVersion + if (REACT_NATIVE_MINOR_VERSION >= 71) { + implementation "com.facebook.react:react-android" // version substituted by RNGP + } else { + implementation 'com.facebook.react:react-native:+' // from node_modules + } + + if (shouldUseCommonInterfaceFromReanimated()) { + // Include Reanimated as dependency to load the common interface + implementation (rootProject.subprojects.find { it.name == 'react-native-reanimated' }) { + exclude group:'com.facebook.fbjni' // resolves "Duplicate class com.facebook.jni.CppException" + } + } + + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation "androidx.core:core-ktx:1.6.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt new file mode 100644 index 00000000..4e754cdb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt @@ -0,0 +1,5 @@ +package com.swmansion.common + +interface GestureHandlerStateManager { + fun setGestureHandlerState(handlerTag: Int, newState: Int) +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/gradle.properties b/iut-expo-starter/node_modules/react-native-gesture-handler/android/gradle.properties new file mode 100644 index 00000000..bb5cbe32 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/gradle.properties @@ -0,0 +1,19 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +RNGH_kotlinVersion=1.6.21 diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt new file mode 100644 index 00000000..9e81005d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt @@ -0,0 +1,10 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.events.Event + +class ReanimatedEventDispatcher { + fun >sendEvent(event: T, reactApplicationContext: ReactContext) { + // no-op + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt new file mode 100644 index 00000000..d1d47301 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt @@ -0,0 +1,17 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.events.Event +import com.swmansion.reanimated.ReanimatedModule + +class ReanimatedEventDispatcher { + private var reanimatedModule: ReanimatedModule? = null + + fun >sendEvent(event: T, reactApplicationContext: ReactContext) { + if (reanimatedModule == null) { + reanimatedModule = reactApplicationContext.getNativeModule(ReanimatedModule::class.java) + } + + reanimatedModule?.nodesManager?.onEventDispatch(event) + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java new file mode 100644 index 00000000..44f6fc6f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java @@ -0,0 +1,29 @@ +package com.swmansion.gesturehandler.react; + +import com.facebook.jni.HybridData; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.fabric.ComponentFactory; +import com.facebook.soloader.SoLoader; + +@DoNotStrip +public class RNGestureHandlerComponentsRegistry { + static { + SoLoader.loadLibrary("fabricjni"); + SoLoader.loadLibrary("gesturehandler"); + } + + @DoNotStrip private final HybridData mHybridData; + + @DoNotStrip + private native HybridData initHybrid(ComponentFactory componentFactory); + + @DoNotStrip + private RNGestureHandlerComponentsRegistry(ComponentFactory componentFactory) { + mHybridData = initHybrid(componentFactory); + } + + @DoNotStrip + public static RNGestureHandlerComponentsRegistry register(ComponentFactory componentFactory) { + return new RNGestureHandlerComponentsRegistry(componentFactory); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt new file mode 100644 index 00000000..2e05de9b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt @@ -0,0 +1,12 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.fabric.FabricUIManager +import com.facebook.react.uimanager.UIManagerHelper +import com.facebook.react.uimanager.common.UIManagerType +import com.facebook.react.uimanager.events.Event + +fun ReactContext.dispatchEvent(event: Event<*>) { + val fabricUIManager = UIManagerHelper.getUIManager(this, UIManagerType.FABRIC) as FabricUIManager + fabricUIManager.eventDispatcher.dispatchEvent(event) +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/AndroidManifest.xml b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..5fa4c9c5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt new file mode 100644 index 00000000..48b7d2a1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt @@ -0,0 +1,21 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.ReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.uimanager.ViewManager +import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager +import com.swmansion.gesturehandler.react.RNGestureHandlerModule +import com.swmansion.gesturehandler.react.RNGestureHandlerRootViewManager + +class RNGestureHandlerPackage : ReactPackage { + override fun createNativeModules(reactContext: ReactApplicationContext): List { + return listOf(RNGestureHandlerModule(reactContext)) + } + + override fun createViewManagers(reactContext: ReactApplicationContext) = + listOf>( + RNGestureHandlerRootViewManager(), + RNGestureHandlerButtonViewManager() + ) +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt new file mode 100644 index 00000000..e3078d0d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt @@ -0,0 +1,100 @@ +package com.swmansion.gesturehandler.core + +import android.os.Handler +import android.os.Looper +import android.view.MotionEvent + +class FlingGestureHandler : GestureHandler() { + var numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED + var direction = DEFAULT_DIRECTION + + private val maxDurationMs = DEFAULT_MAX_DURATION_MS + private val minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA + private var startX = 0f + private var startY = 0f + private var handler: Handler? = null + private var maxNumberOfPointersSimultaneously = 0 + private val failDelayed = Runnable { fail() } + + override fun resetConfig() { + super.resetConfig() + numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED + direction = DEFAULT_DIRECTION + } + + private fun startFling(event: MotionEvent) { + startX = event.rawX + startY = event.rawY + begin() + maxNumberOfPointersSimultaneously = 1 + if (handler == null) { + handler = Handler(Looper.getMainLooper()) // lazy delegate? + } else { + handler!!.removeCallbacksAndMessages(null) + } + handler!!.postDelayed(failDelayed, maxDurationMs) + } + + private fun tryEndFling(event: MotionEvent) = if ( + maxNumberOfPointersSimultaneously == numberOfPointersRequired && + ( + direction and DIRECTION_RIGHT != 0 && + event.rawX - startX > minAcceptableDelta || + direction and DIRECTION_LEFT != 0 && + startX - event.rawX > minAcceptableDelta || + direction and DIRECTION_UP != 0 && + startY - event.rawY > minAcceptableDelta || + direction and DIRECTION_DOWN != 0 && + event.rawY - startY > minAcceptableDelta + ) + ) { + handler!!.removeCallbacksAndMessages(null) + activate() + true + } else { + false + } + + override fun activate(force: Boolean) { + super.activate(force) + end() + } + + private fun endFling(event: MotionEvent) { + if (!tryEndFling(event)) { + fail() + } + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + val state = state + if (state == STATE_UNDETERMINED) { + startFling(sourceEvent) + } + if (state == STATE_BEGAN) { + tryEndFling(sourceEvent) + if (sourceEvent.pointerCount > maxNumberOfPointersSimultaneously) { + maxNumberOfPointersSimultaneously = sourceEvent.pointerCount + } + val action = sourceEvent.actionMasked + if (action == MotionEvent.ACTION_UP) { + endFling(sourceEvent) + } + } + } + + override fun onCancel() { + handler?.removeCallbacksAndMessages(null) + } + + override fun onReset() { + handler?.removeCallbacksAndMessages(null) + } + + companion object { + private const val DEFAULT_MAX_DURATION_MS: Long = 800 + private const val DEFAULT_MIN_ACCEPTABLE_DELTA: Long = 160 + private const val DEFAULT_DIRECTION = DIRECTION_RIGHT + private const val DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1 + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt new file mode 100644 index 00000000..2c5f4b31 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt @@ -0,0 +1,792 @@ +package com.swmansion.gesturehandler.core + +import android.app.Activity +import android.content.Context +import android.content.ContextWrapper +import android.graphics.PointF +import android.graphics.Rect +import android.view.MotionEvent +import android.view.MotionEvent.PointerCoords +import android.view.MotionEvent.PointerProperties +import android.view.View +import android.view.Window +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.UiThreadUtil +import com.facebook.react.bridge.WritableArray +import com.facebook.react.uimanager.PixelUtil +import com.swmansion.gesturehandler.BuildConfig +import com.swmansion.gesturehandler.react.RNGestureHandlerTouchEvent +import java.lang.IllegalStateException +import java.util.* + +open class GestureHandler> { + private val trackedPointerIDs = IntArray(MAX_POINTERS_COUNT) + private var trackedPointersIDsCount = 0 + private val windowOffset = IntArray(2) { 0 } + var tag = 0 + var view: View? = null + private set + var state = STATE_UNDETERMINED + private set + var x = 0f + private set + var y = 0f + private set + var isWithinBounds = false + private set + var isEnabled = true + private set + var actionType = 0 + + var changedTouchesPayload: WritableArray? = null + private set + var allTouchesPayload: WritableArray? = null + private set + var touchEventType = RNGestureHandlerTouchEvent.EVENT_UNDETERMINED + private set + var trackedPointersCount = 0 + private set + private val trackedPointers: Array = Array(MAX_POINTERS_COUNT) { null } + var needsPointerData = false + + private var hitSlop: FloatArray? = null + var eventCoalescingKey: Short = 0 + private set + var lastAbsolutePositionX = 0f + private set + var lastAbsolutePositionY = 0f + private set + + private var manualActivation = false + + private var lastEventOffsetX = 0f + private var lastEventOffsetY = 0f + private var shouldCancelWhenOutside = false + var numberOfPointers = 0 + private set + private var orchestrator: GestureHandlerOrchestrator? = null + private var onTouchEventListener: OnTouchEventListener? = null + private var interactionController: GestureHandlerInteractionController? = null + + @Suppress("UNCHECKED_CAST") + protected fun self(): ConcreteGestureHandlerT = this as ConcreteGestureHandlerT + + protected inline fun applySelf(block: ConcreteGestureHandlerT.() -> Unit): ConcreteGestureHandlerT = + self().apply { block() } + + // properties set and accessed only by the orchestrator + var activationIndex = 0 + var isActive = false + var isAwaiting = false + var shouldResetProgress = false + + open fun dispatchStateChange(newState: Int, prevState: Int) { + onTouchEventListener?.onStateChange(self(), newState, prevState) + } + + open fun dispatchHandlerUpdate(event: MotionEvent) { + onTouchEventListener?.onHandlerUpdate(self(), event) + } + + open fun dispatchTouchEvent() { + if (changedTouchesPayload != null) { + onTouchEventListener?.onTouchEvent(self()) + } + } + + open fun resetConfig() { + needsPointerData = false + manualActivation = false + shouldCancelWhenOutside = false + isEnabled = true + hitSlop = null + } + + fun hasCommonPointers(other: GestureHandler<*>): Boolean { + for (i in trackedPointerIDs.indices) { + if (trackedPointerIDs[i] != -1 && other.trackedPointerIDs[i] != -1) { + return true + } + } + return false + } + + fun setShouldCancelWhenOutside(shouldCancelWhenOutside: Boolean): ConcreteGestureHandlerT = + applySelf { this.shouldCancelWhenOutside = shouldCancelWhenOutside } + + fun setEnabled(enabled: Boolean): ConcreteGestureHandlerT = applySelf { + // Don't cancel handler when not changing the value of the isEnabled, executing it always caused + // handlers to be cancelled on re-render because that's the moment when the config is updated. + // If the enabled prop "changed" from true to true the handler would get cancelled. + if (view != null && isEnabled != enabled) { + // If view is set then handler is in "active" state. In that case we want to "cancel" handler + // when it changes enabled state so that it gets cleared from the orchestrator + UiThreadUtil.runOnUiThread { cancel() } + } + isEnabled = enabled + } + + fun setManualActivation(manualActivation: Boolean): ConcreteGestureHandlerT = + applySelf { this.manualActivation = manualActivation } + + fun setHitSlop( + leftPad: Float, + topPad: Float, + rightPad: Float, + bottomPad: Float, + width: Float, + height: Float, + ): ConcreteGestureHandlerT = applySelf { + if (hitSlop == null) { + hitSlop = FloatArray(6) + } + hitSlop!![HIT_SLOP_LEFT_IDX] = leftPad + hitSlop!![HIT_SLOP_TOP_IDX] = topPad + hitSlop!![HIT_SLOP_RIGHT_IDX] = rightPad + hitSlop!![HIT_SLOP_BOTTOM_IDX] = bottomPad + hitSlop!![HIT_SLOP_WIDTH_IDX] = width + hitSlop!![HIT_SLOP_HEIGHT_IDX] = height + require(!(hitSlopSet(width) && hitSlopSet(leftPad) && hitSlopSet(rightPad))) { "Cannot have all of left, right and width defined" } + require(!(hitSlopSet(width) && !hitSlopSet(leftPad) && !hitSlopSet(rightPad))) { "When width is set one of left or right pads need to be defined" } + require(!(hitSlopSet(height) && hitSlopSet(bottomPad) && hitSlopSet(topPad))) { "Cannot have all of top, bottom and height defined" } + require(!(hitSlopSet(height) && !hitSlopSet(bottomPad) && !hitSlopSet(topPad))) { "When height is set one of top or bottom pads need to be defined" } + } + + fun setHitSlop(padding: Float): ConcreteGestureHandlerT { + return setHitSlop(padding, padding, padding, padding, HIT_SLOP_NONE, HIT_SLOP_NONE) + } + + fun setInteractionController(controller: GestureHandlerInteractionController?): ConcreteGestureHandlerT = + applySelf { interactionController = controller } + + fun prepare(view: View?, orchestrator: GestureHandlerOrchestrator?) { + check(!(this.view != null || this.orchestrator != null)) { "Already prepared or hasn't been reset" } + Arrays.fill(trackedPointerIDs, -1) + trackedPointersIDsCount = 0 + state = STATE_UNDETERMINED + this.view = view + this.orchestrator = orchestrator + + val decorView = getWindow(view?.context)?.decorView + if (decorView != null) { + val frame = Rect() + decorView.getWindowVisibleDisplayFrame(frame) + windowOffset[0] = frame.left + windowOffset[1] = frame.top + } else { + windowOffset[0] = 0 + windowOffset[1] = 0 + } + + onPrepare() + } + + protected open fun onPrepare() {} + + private fun getWindow(context: Context?): Window? { + if (context == null) return null + if (context is Activity) return context.window + if (context is ContextWrapper) return getWindow(context.baseContext) + + return null + } + + private fun findNextLocalPointerId(): Int { + var localPointerId = 0 + while (localPointerId < trackedPointersIDsCount) { + var i = 0 + while (i < trackedPointerIDs.size) { + if (trackedPointerIDs[i] == localPointerId) { + break + } + i++ + } + if (i == trackedPointerIDs.size) { + return localPointerId + } + localPointerId++ + } + return localPointerId + } + + fun startTrackingPointer(pointerId: Int) { + if (trackedPointerIDs[pointerId] == -1) { + trackedPointerIDs[pointerId] = findNextLocalPointerId() + trackedPointersIDsCount++ + } + } + + fun stopTrackingPointer(pointerId: Int) { + if (trackedPointerIDs[pointerId] != -1) { + trackedPointerIDs[pointerId] = -1 + trackedPointersIDsCount-- + } + } + + private fun needAdapt(event: MotionEvent): Boolean { + if (event.pointerCount != trackedPointersIDsCount) { + return true + } + + for (i in trackedPointerIDs.indices) { + val trackedPointer = trackedPointerIDs[i] + if (trackedPointer != -1 && trackedPointer != i) { + return true + } + } + return false + } + + private fun adaptEvent(event: MotionEvent): MotionEvent { + if (!needAdapt(event)) { + return event + } + var action = event.actionMasked + var actionIndex = -1 + if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) { + actionIndex = event.actionIndex + val actionPointer = event.getPointerId(actionIndex) + action = if (trackedPointerIDs[actionPointer] != -1) { + if (trackedPointersIDsCount == 1) MotionEvent.ACTION_DOWN else MotionEvent.ACTION_POINTER_DOWN + } else { + MotionEvent.ACTION_MOVE + } + } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) { + actionIndex = event.actionIndex + val actionPointer = event.getPointerId(actionIndex) + action = if (trackedPointerIDs[actionPointer] != -1) { + if (trackedPointersIDsCount == 1) MotionEvent.ACTION_UP else MotionEvent.ACTION_POINTER_UP + } else { + MotionEvent.ACTION_MOVE + } + } + initPointerProps(trackedPointersIDsCount) + var count = 0 + val deltaX = event.rawX - event.x + val deltaY = event.rawY - event.y + event.offsetLocation(deltaX, deltaY) + var index = 0 + val size = event.pointerCount + while (index < size) { + val origPointerId = event.getPointerId(index) + if (trackedPointerIDs[origPointerId] != -1) { + event.getPointerProperties(index, pointerProps[count]) + pointerProps[count]!!.id = trackedPointerIDs[origPointerId] + event.getPointerCoords(index, pointerCoords[count]) + if (index == actionIndex) { + action = action or (count shl MotionEvent.ACTION_POINTER_INDEX_SHIFT) + } + count++ + } + index++ + } + + // introduced in 1.11.0, remove if crashes are not reported + if (pointerProps.isEmpty() || pointerCoords.isEmpty()) { + throw IllegalStateException("pointerCoords.size=${pointerCoords.size}, pointerProps.size=${pointerProps.size}") + } + + val result: MotionEvent + try { + result = MotionEvent.obtain( + event.downTime, + event.eventTime, + action, + count, + pointerProps, /* props are copied and hence it is safe to use static array here */ + pointerCoords, /* same applies to coords */ + event.metaState, + event.buttonState, + event.xPrecision, + event.yPrecision, + event.deviceId, + event.edgeFlags, + event.source, + event.flags + ) + } catch (e: IllegalArgumentException) { + throw AdaptEventException(this, event, e) + } + event.offsetLocation(-deltaX, -deltaY) + result.offsetLocation(-deltaX, -deltaY) + return result + } + + // exception to help debug https://github.com/software-mansion/react-native-gesture-handler/issues/1188 + class AdaptEventException( + handler: GestureHandler<*>, + event: MotionEvent, + e: IllegalArgumentException + ) : Exception( + """ + handler: ${handler::class.simpleName} + state: ${handler.state} + view: ${handler.view} + orchestrator: ${handler.orchestrator} + isEnabled: ${handler.isEnabled} + isActive: ${handler.isActive} + isAwaiting: ${handler.isAwaiting} + trackedPointersCount: ${handler.trackedPointersIDsCount} + trackedPointers: ${handler.trackedPointerIDs.joinToString(separator = ", ")} + while handling event: $event + """.trimIndent(), + e + ) + + fun handle(transformedEvent: MotionEvent, sourceEvent: MotionEvent) { + if (!isEnabled || + state == STATE_CANCELLED || + state == STATE_FAILED || + state == STATE_END || + trackedPointersIDsCount < 1 + ) { + return + } + + // a workaround for https://github.com/software-mansion/react-native-gesture-handler/issues/1188 + val (adaptedTransformedEvent, adaptedSourceEvent) = if (BuildConfig.DEBUG) { + arrayOf(adaptEvent(transformedEvent), adaptEvent(sourceEvent)) + } else { + try { + arrayOf(adaptEvent(transformedEvent), adaptEvent(sourceEvent)) + } catch (e: AdaptEventException) { + fail() + return + } + } + + x = adaptedTransformedEvent.x + y = adaptedTransformedEvent.y + numberOfPointers = adaptedTransformedEvent.pointerCount + isWithinBounds = isWithinBounds(view, x, y) + if (shouldCancelWhenOutside && !isWithinBounds) { + if (state == STATE_ACTIVE) { + cancel() + } else if (state == STATE_BEGAN) { + fail() + } + return + } + lastAbsolutePositionX = GestureUtils.getLastPointerX(adaptedTransformedEvent, true) + lastAbsolutePositionY = GestureUtils.getLastPointerY(adaptedTransformedEvent, true) + lastEventOffsetX = adaptedTransformedEvent.rawX - adaptedTransformedEvent.x + lastEventOffsetY = adaptedTransformedEvent.rawY - adaptedTransformedEvent.y + onHandle(adaptedTransformedEvent, adaptedSourceEvent) + if (adaptedTransformedEvent != transformedEvent) { + adaptedTransformedEvent.recycle() + } + if (adaptedSourceEvent != sourceEvent) { + adaptedSourceEvent.recycle() + } + } + + private fun dispatchTouchDownEvent(event: MotionEvent) { + changedTouchesPayload = null + touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_DOWN + val pointerId = event.getPointerId(event.actionIndex) + val offsetX = event.rawX - event.x + val offsetY = event.rawY - event.y + + trackedPointers[pointerId] = PointerData( + pointerId, + event.getX(event.actionIndex), + event.getY(event.actionIndex), + event.getX(event.actionIndex) + offsetX - windowOffset[0], + event.getY(event.actionIndex) + offsetY - windowOffset[1], + ) + trackedPointersCount++ + addChangedPointer(trackedPointers[pointerId]!!) + extractAllPointersData() + + dispatchTouchEvent() + } + + private fun dispatchTouchUpEvent(event: MotionEvent) { + extractAllPointersData() + changedTouchesPayload = null + touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_UP + val pointerId = event.getPointerId(event.actionIndex) + val offsetX = event.rawX - event.x + val offsetY = event.rawY - event.y + + trackedPointers[pointerId] = PointerData( + pointerId, + event.getX(event.actionIndex), + event.getY(event.actionIndex), + event.getX(event.actionIndex) + offsetX - windowOffset[0], + event.getY(event.actionIndex) + offsetY - windowOffset[1], + ) + addChangedPointer(trackedPointers[pointerId]!!) + trackedPointers[pointerId] = null + trackedPointersCount-- + + dispatchTouchEvent() + } + + private fun dispatchTouchMoveEvent(event: MotionEvent) { + changedTouchesPayload = null + touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_MOVE + val offsetX = event.rawX - event.x + val offsetY = event.rawY - event.y + var pointersAdded = 0 + + for (i in 0 until event.pointerCount) { + val pointerId = event.getPointerId(i) + val pointer = trackedPointers[pointerId] ?: continue + + if (pointer.x != event.getX(i) || pointer.y != event.getY(i)) { + pointer.x = event.getX(i) + pointer.y = event.getY(i) + pointer.absoluteX = event.getX(i) + offsetX - windowOffset[0] + pointer.absoluteY = event.getY(i) + offsetY - windowOffset[1] + + addChangedPointer(pointer) + pointersAdded++ + } + } + + // only data about pointers that have changed their position is sent, it makes no sense to send + // an empty move event (especially when this method is called during down/up event and there is + // only info about one pointer) + if (pointersAdded > 0) { + extractAllPointersData() + dispatchTouchEvent() + } + } + + fun updatePointerData(event: MotionEvent) { + if (event.actionMasked == MotionEvent.ACTION_DOWN || event.actionMasked == MotionEvent.ACTION_POINTER_DOWN) { + dispatchTouchDownEvent(event) + dispatchTouchMoveEvent(event) + } else if (event.actionMasked == MotionEvent.ACTION_UP || event.actionMasked == MotionEvent.ACTION_POINTER_UP) { + dispatchTouchMoveEvent(event) + dispatchTouchUpEvent(event) + } else if (event.actionMasked == MotionEvent.ACTION_MOVE) { + dispatchTouchMoveEvent(event) + } + } + + private fun extractAllPointersData() { + allTouchesPayload = null + + for (pointerData in trackedPointers) { + if (pointerData != null) { + addPointerToAll(pointerData) + } + } + } + + private fun cancelPointers() { + touchEventType = RNGestureHandlerTouchEvent.EVENT_TOUCH_CANCELLED + changedTouchesPayload = null + extractAllPointersData() + + for (pointer in trackedPointers) { + pointer?.let { + addChangedPointer(it) + } + } + + trackedPointersCount = 0 + trackedPointers.fill(null) + + dispatchTouchEvent() + } + + private fun addChangedPointer(pointerData: PointerData) { + if (changedTouchesPayload == null) { + changedTouchesPayload = Arguments.createArray() + } + + changedTouchesPayload!!.pushMap(createPointerData(pointerData)) + } + + private fun addPointerToAll(pointerData: PointerData) { + if (allTouchesPayload == null) { + allTouchesPayload = Arguments.createArray() + } + + allTouchesPayload!!.pushMap(createPointerData(pointerData)) + } + + private fun createPointerData(pointerData: PointerData) = Arguments.createMap().apply { + putInt("id", pointerData.pointerId) + putDouble("x", PixelUtil.toDIPFromPixel(pointerData.x).toDouble()) + putDouble("y", PixelUtil.toDIPFromPixel(pointerData.y).toDouble()) + putDouble("absoluteX", PixelUtil.toDIPFromPixel(pointerData.absoluteX).toDouble()) + putDouble("absoluteY", PixelUtil.toDIPFromPixel(pointerData.absoluteY).toDouble()) + } + + fun consumeChangedTouchesPayload(): WritableArray? { + val result = changedTouchesPayload + changedTouchesPayload = null + return result + } + + fun consumeAllTouchesPayload(): WritableArray? { + val result = allTouchesPayload + allTouchesPayload = null + return result + } + + private fun moveToState(newState: Int) { + UiThreadUtil.assertOnUiThread() + if (state == newState) { + return + } + + // if there are tracked pointers and the gesture is about to end, send event cancelling all pointers + if (trackedPointersCount > 0 && (newState == STATE_END || newState == STATE_CANCELLED || newState == STATE_FAILED)) { + cancelPointers() + } + + val oldState = state + state = newState + if (state == STATE_ACTIVE) { + // Generate a unique coalescing-key each time the gesture-handler becomes active. All events will have + // the same coalescing-key allowing EventDispatcher to coalesce RNGestureHandlerEvents when events are + // generated faster than they can be treated by JS thread + eventCoalescingKey = nextEventCoalescingKey++ + } + orchestrator!!.onHandlerStateChange(this, newState, oldState) + onStateChange(newState, oldState) + } + + fun wantEvents(): Boolean { + return isEnabled && + state != STATE_FAILED && + state != STATE_CANCELLED && + state != STATE_END && + trackedPointersIDsCount > 0 + } + + open fun shouldRequireToWaitForFailure(handler: GestureHandler<*>): Boolean { + if (handler === this) { + return false + } + + return interactionController?.shouldRequireHandlerToWaitForFailure(this, handler) ?: false + } + + fun shouldWaitForHandlerFailure(handler: GestureHandler<*>): Boolean { + if (handler === this) { + return false + } + + return interactionController?.shouldWaitForHandlerFailure(this, handler) ?: false + } + + open fun shouldRecognizeSimultaneously(handler: GestureHandler<*>): Boolean { + if (handler === this) { + return true + } + + return interactionController?.shouldRecognizeSimultaneously(this, handler) ?: false + } + + open fun shouldBeCancelledBy(handler: GestureHandler<*>): Boolean { + if (handler === this) { + return false + } + + return interactionController?.shouldHandlerBeCancelledBy(this, handler) ?: false + } + + fun isWithinBounds(view: View?, posX: Float, posY: Float): Boolean { + var left = 0f + var top = 0f + var right = view!!.width.toFloat() + var bottom = view.height.toFloat() + hitSlop?.let { hitSlop -> + val padLeft = hitSlop[HIT_SLOP_LEFT_IDX] + val padTop = hitSlop[HIT_SLOP_TOP_IDX] + val padRight = hitSlop[HIT_SLOP_RIGHT_IDX] + val padBottom = hitSlop[HIT_SLOP_BOTTOM_IDX] + if (hitSlopSet(padLeft)) { + left -= padLeft + } + if (hitSlopSet(padTop)) { + top -= padTop + } + if (hitSlopSet(padRight)) { + right += padRight + } + if (hitSlopSet(padBottom)) { + bottom += padBottom + } + val width = hitSlop[HIT_SLOP_WIDTH_IDX] + val height = hitSlop[HIT_SLOP_HEIGHT_IDX] + if (hitSlopSet(width)) { + if (!hitSlopSet(padLeft)) { + left = right - width + } else if (!hitSlopSet(padRight)) { + right = left + width + } + } + if (hitSlopSet(height)) { + if (!hitSlopSet(padTop)) { + top = bottom - height + } else if (!hitSlopSet(padBottom)) { + bottom = top + height + } + } + } + return posX in left..right && posY in top..bottom + } + + fun cancel() { + if (state == STATE_ACTIVE || state == STATE_UNDETERMINED || state == STATE_BEGAN) { + onCancel() + moveToState(STATE_CANCELLED) + } + } + + fun fail() { + if (state == STATE_ACTIVE || state == STATE_UNDETERMINED || state == STATE_BEGAN) { + moveToState(STATE_FAILED) + } + } + + fun activate() = activate(force = false) + + open fun activate(force: Boolean) { + if ((!manualActivation || force) && (state == STATE_UNDETERMINED || state == STATE_BEGAN)) { + moveToState(STATE_ACTIVE) + } + } + + fun begin() { + if (state == STATE_UNDETERMINED) { + moveToState(STATE_BEGAN) + } + } + + fun end() { + if (state == STATE_BEGAN || state == STATE_ACTIVE) { + moveToState(STATE_END) + } + } + + // responsible for resetting the state of handler upon activation (may be called more than once + // if the handler is waiting for failure of other one) + open fun resetProgress() {} + + protected open fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + moveToState(STATE_FAILED) + } + + protected open fun onStateChange(newState: Int, previousState: Int) {} + protected open fun onReset() {} + protected open fun onCancel() {} + + /** + * Transforms a point in the coordinate space of the wrapperView (GestureHandlerRootView) to + * coordinate space of the view the gesture is attached to. + * + * If the gesture handler is not currently attached to a view, it will return (NaN, NaN). + * + * This method modifies and transforms the received point. + */ + protected fun transformPoint(point: PointF): PointF { + return orchestrator?.transformPointToViewCoords(this.view, point) ?: run { + point.x = Float.NaN + point.y = Float.NaN + point + } + } + fun reset() { + view = null + orchestrator = null + Arrays.fill(trackedPointerIDs, -1) + trackedPointersIDsCount = 0 + + trackedPointersCount = 0 + trackedPointers.fill(null) + touchEventType = RNGestureHandlerTouchEvent.EVENT_UNDETERMINED + onReset() + } + + fun setOnTouchEventListener(listener: OnTouchEventListener?): GestureHandler<*> { + onTouchEventListener = listener + return this + } + + override fun toString(): String { + val viewString = if (view == null) null else view!!.javaClass.simpleName + return this.javaClass.simpleName + "@[" + tag + "]:" + viewString + } + + val lastRelativePositionX: Float + get() = lastAbsolutePositionX + val lastRelativePositionY: Float + get() = lastAbsolutePositionY + + val lastPositionInWindowX: Float + get() = lastAbsolutePositionX + lastEventOffsetX - windowOffset[0] + val lastPositionInWindowY: Float + get() = lastAbsolutePositionY + lastEventOffsetY - windowOffset[1] + + companion object { + const val STATE_UNDETERMINED = 0 + const val STATE_FAILED = 1 + const val STATE_BEGAN = 2 + const val STATE_CANCELLED = 3 + const val STATE_ACTIVE = 4 + const val STATE_END = 5 + const val HIT_SLOP_NONE = Float.NaN + private const val HIT_SLOP_LEFT_IDX = 0 + private const val HIT_SLOP_TOP_IDX = 1 + private const val HIT_SLOP_RIGHT_IDX = 2 + private const val HIT_SLOP_BOTTOM_IDX = 3 + private const val HIT_SLOP_WIDTH_IDX = 4 + private const val HIT_SLOP_HEIGHT_IDX = 5 + const val DIRECTION_RIGHT = 1 + const val DIRECTION_LEFT = 2 + const val DIRECTION_UP = 4 + const val DIRECTION_DOWN = 8 + const val ACTION_TYPE_REANIMATED_WORKLET = 1 + const val ACTION_TYPE_NATIVE_ANIMATED_EVENT = 2 + const val ACTION_TYPE_JS_FUNCTION_OLD_API = 3 + const val ACTION_TYPE_JS_FUNCTION_NEW_API = 4 + private const val MAX_POINTERS_COUNT = 12 + private lateinit var pointerProps: Array + private lateinit var pointerCoords: Array + private fun initPointerProps(size: Int) { + var size = size + if (!Companion::pointerProps.isInitialized) { + pointerProps = arrayOfNulls(MAX_POINTERS_COUNT) + pointerCoords = arrayOfNulls(MAX_POINTERS_COUNT) + } + while (size > 0 && pointerProps[size - 1] == null) { + pointerProps[size - 1] = PointerProperties() + pointerCoords[size - 1] = PointerCoords() + size-- + } + } + + private var nextEventCoalescingKey: Short = 0 + private fun hitSlopSet(value: Float): Boolean { + return !java.lang.Float.isNaN(value) + } + + fun stateToString(state: Int): String? { + when (state) { + STATE_UNDETERMINED -> return "UNDETERMINED" + STATE_ACTIVE -> return "ACTIVE" + STATE_FAILED -> return "FAILED" + STATE_BEGAN -> return "BEGIN" + STATE_CANCELLED -> return "CANCELLED" + STATE_END -> return "END" + } + return null + } + } + + private data class PointerData( + val pointerId: Int, + var x: Float, + var y: Float, + var absoluteX: Float, + var absoluteY: Float + ) +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt new file mode 100644 index 00000000..97f35d0c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerInteractionController.kt @@ -0,0 +1,8 @@ +package com.swmansion.gesturehandler.core + +interface GestureHandlerInteractionController { + fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean + fun shouldRequireHandlerToWaitForFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean + fun shouldRecognizeSimultaneously(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean + fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt new file mode 100644 index 00000000..57944629 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt @@ -0,0 +1,680 @@ +package com.swmansion.gesturehandler.core + +import android.graphics.Matrix +import android.graphics.PointF +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup +import android.widget.EditText +import java.util.* + +class GestureHandlerOrchestrator( + private val wrapperView: ViewGroup, + private val handlerRegistry: GestureHandlerRegistry, + private val viewConfigHelper: ViewConfigurationHelper, +) { + /** + * Minimum alpha (value from 0 to 1) that should be set to a view so that it can be treated as a + * gesture target. E.g. if set to 0.1 then views that less than 10% opaque will be ignored when + * traversing view hierarchy and looking for gesture handlers. + */ + var minimumAlphaForTraversal = DEFAULT_MIN_ALPHA_FOR_TRAVERSAL + + private val gestureHandlers = arrayOfNulls?>(SIMULTANEOUS_GESTURE_HANDLER_LIMIT) + private val awaitingHandlers = arrayOfNulls?>(SIMULTANEOUS_GESTURE_HANDLER_LIMIT) + private val preparedHandlers = arrayOfNulls?>(SIMULTANEOUS_GESTURE_HANDLER_LIMIT) + private val handlersToCancel = arrayOfNulls?>(SIMULTANEOUS_GESTURE_HANDLER_LIMIT) + private var gestureHandlersCount = 0 + private var awaitingHandlersCount = 0 + private var isHandlingTouch = false + private var handlingChangeSemaphore = 0 + private var finishedHandlersCleanupScheduled = false + private var activationIndex = 0 + + /** + * Should be called from the view wrapper + */ + fun onTouchEvent(event: MotionEvent): Boolean { + isHandlingTouch = true + val action = event.actionMasked + if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) { + extractGestureHandlers(event) + } else if (action == MotionEvent.ACTION_CANCEL) { + cancelAll() + } + deliverEventToGestureHandlers(event) + isHandlingTouch = false + if (finishedHandlersCleanupScheduled && handlingChangeSemaphore == 0) { + cleanupFinishedHandlers() + } + return true + } + + private fun scheduleFinishedHandlersCleanup() { + if (isHandlingTouch || handlingChangeSemaphore != 0) { + finishedHandlersCleanupScheduled = true + } else { + cleanupFinishedHandlers() + } + } + + private inline fun compactHandlersIf(handlers: Array?>, count: Int, predicate: (handler: GestureHandler<*>?) -> Boolean): Int { + var out = 0 + for (i in 0 until count) { + if (predicate(handlers[i])) { + handlers[out++] = handlers[i] + } + } + return out + } + + private fun cleanupFinishedHandlers() { + var shouldCleanEmptyCells = false + for (i in gestureHandlersCount - 1 downTo 0) { + val handler = gestureHandlers[i]!! + if (isFinished(handler.state) && !handler.isAwaiting) { + gestureHandlers[i] = null + shouldCleanEmptyCells = true + handler.reset() + handler.apply { + isActive = false + isAwaiting = false + activationIndex = Int.MAX_VALUE + } + } + } + if (shouldCleanEmptyCells) { + gestureHandlersCount = compactHandlersIf(gestureHandlers, gestureHandlersCount) { handler -> + handler != null + } + } + finishedHandlersCleanupScheduled = false + } + + private fun hasOtherHandlerToWaitFor(handler: GestureHandler<*>): Boolean { + for (i in 0 until gestureHandlersCount) { + val otherHandler = gestureHandlers[i]!! + if (!isFinished(otherHandler.state) && shouldHandlerWaitForOther(handler, otherHandler)) { + return true + } + } + return false + } + + private fun tryActivate(handler: GestureHandler<*>) { + // see if there is anyone else who we need to wait for + if (hasOtherHandlerToWaitFor(handler)) { + addAwaitingHandler(handler) + } else { + // we can activate handler right away + makeActive(handler) + handler.isAwaiting = false + } + } + + private fun cleanupAwaitingHandlers() { + awaitingHandlersCount = compactHandlersIf(awaitingHandlers, awaitingHandlersCount) { handler -> + handler!!.isAwaiting + } + } + + /*package*/ + fun onHandlerStateChange(handler: GestureHandler<*>, newState: Int, prevState: Int) { + handlingChangeSemaphore += 1 + if (isFinished(newState)) { + // if there were handlers awaiting completion of this handler, we can trigger active state + for (i in 0 until awaitingHandlersCount) { + val otherHandler = awaitingHandlers[i] + if (shouldHandlerWaitForOther(otherHandler!!, handler)) { + if (newState == GestureHandler.STATE_END) { + // gesture has ended, we need to kill the awaiting handler + otherHandler.cancel() + if (otherHandler.state == GestureHandler.STATE_END) { + // Handle edge case, where discrete gestures end immediately after activation thus + // their state is set to END and when the gesture they are waiting for activates they + // should be cancelled, however `cancel` was never sent as gestures were already in the END state. + // Send synthetic BEGAN -> CANCELLED to properly handle JS logic + otherHandler.dispatchStateChange( + GestureHandler.STATE_CANCELLED, + GestureHandler.STATE_BEGAN + ) + } + otherHandler.isAwaiting = false + } else { + // gesture has failed recognition, we may try activating + tryActivate(otherHandler) + } + } + } + cleanupAwaitingHandlers() + } + if (newState == GestureHandler.STATE_ACTIVE) { + tryActivate(handler) + } else if (prevState == GestureHandler.STATE_ACTIVE || prevState == GestureHandler.STATE_END) { + if (handler.isActive) { + handler.dispatchStateChange(newState, prevState) + } else if (prevState == GestureHandler.STATE_ACTIVE && (newState == GestureHandler.STATE_CANCELLED || newState == GestureHandler.STATE_FAILED)) { + // Handle edge case where handler awaiting for another one tries to activate but finishes + // before the other would not send state change event upon ending. Note that we only want + // to do this if the newState is either CANCELLED or FAILED, if it is END we still want to + // wait for the other handler to finish as in that case synthetic events will be sent by the + // makeActive method. + handler.dispatchStateChange(newState, GestureHandler.STATE_BEGAN) + } + } else if (prevState != GestureHandler.STATE_UNDETERMINED || newState != GestureHandler.STATE_CANCELLED) { + // If handler is changing state from UNDETERMINED to CANCELLED, the state change event shouldn't + // be sent. Handler hasn't yet began so it may not be initialized which results in crashes. + // If it doesn't crash, there may be some weird behavior on JS side, as `onFinalize` will be + // called without calling `onBegin` first. + handler.dispatchStateChange(newState, prevState) + } + handlingChangeSemaphore -= 1 + scheduleFinishedHandlersCleanup() + } + + private fun makeActive(handler: GestureHandler<*>) { + val currentState = handler.state + with(handler) { + isAwaiting = false + isActive = true + shouldResetProgress = true + activationIndex = this@GestureHandlerOrchestrator.activationIndex++ + } + var toCancelCount = 0 + // Cancel all handlers that are required to be cancel upon current handler's activation + for (i in 0 until gestureHandlersCount) { + val otherHandler = gestureHandlers[i]!! + if (shouldHandlerBeCancelledBy(otherHandler, handler)) { + handlersToCancel[toCancelCount++] = otherHandler + } + } + for (i in toCancelCount - 1 downTo 0) { + handlersToCancel[i]!!.cancel() + } + + // Clear all awaiting handlers waiting for the current handler to fail + for (i in awaitingHandlersCount - 1 downTo 0) { + val otherHandler = awaitingHandlers[i]!! + if (shouldHandlerBeCancelledBy(otherHandler, handler)) { + otherHandler.cancel() + otherHandler.isAwaiting = false + } + } + cleanupAwaitingHandlers() + + // Dispatch state change event if handler is no longer in the active state we should also + // trigger END state change and UNDETERMINED state change if necessary + handler.dispatchStateChange(GestureHandler.STATE_ACTIVE, GestureHandler.STATE_BEGAN) + if (currentState != GestureHandler.STATE_ACTIVE) { + handler.dispatchStateChange(GestureHandler.STATE_END, GestureHandler.STATE_ACTIVE) + if (currentState != GestureHandler.STATE_END) { + handler.dispatchStateChange(GestureHandler.STATE_UNDETERMINED, GestureHandler.STATE_END) + } + } + } + + private fun deliverEventToGestureHandlers(event: MotionEvent) { + // Copy handlers to "prepared handlers" array, because the list of active handlers can change + // as a result of state updates + val handlersCount = gestureHandlersCount + + gestureHandlers.copyInto(preparedHandlers, 0, 0, handlersCount) + // We want to deliver events to active handlers first in order of their activation (handlers + // that activated first will first get event delivered). Otherwise we deliver events in the + // order in which handlers has been added ("most direct" children goes first). Therefore we rely + // on Arrays.sort providing a stable sort (as children are registered in order in which they + // should be tested) + preparedHandlers.sortWith(handlersComparator, 0, handlersCount) + for (i in 0 until handlersCount) { + deliverEventToGestureHandler(preparedHandlers[i]!!, event) + } + } + + private fun cancelAll() { + for (i in awaitingHandlersCount - 1 downTo 0) { + awaitingHandlers[i]!!.cancel() + } + // Copy handlers to "prepared handlers" array, because the list of active handlers can change + // as a result of state updates + val handlersCount = gestureHandlersCount + for (i in 0 until handlersCount) { + preparedHandlers[i] = gestureHandlers[i] + } + for (i in handlersCount - 1 downTo 0) { + preparedHandlers[i]!!.cancel() + } + } + + private fun deliverEventToGestureHandler(handler: GestureHandler<*>, sourceEvent: MotionEvent) { + if (!isViewAttachedUnderWrapper(handler.view)) { + handler.cancel() + return + } + if (!handler.wantEvents()) { + return + } + + val action = sourceEvent.actionMasked + val event = transformEventToViewCoords(handler.view, MotionEvent.obtain(sourceEvent)) + + // Touch events are sent before the handler itself has a chance to process them, + // mainly because `onTouchesUp` shoul be send befor gesture finishes. This means that + // the first `onTouchesDown` event is sent before a gesture begins, activation in + // callback for this event causes problems because the handler doesn't have a chance + // to initialize itself with starting values of pointer (in pan this causes translation + // to be equal to the coordinates of the pointer). The simplest solution is to send + // the first `onTouchesDown` event after the handler processes it and changes state + // to `BEGAN`. + if (handler.needsPointerData && handler.state != 0) { + handler.updatePointerData(event) + } + + if (!handler.isAwaiting || action != MotionEvent.ACTION_MOVE) { + val isFirstEvent = handler.state == 0 + handler.handle(event, sourceEvent) + if (handler.isActive) { + // After handler is done waiting for other one to fail its progress should be + // reset, otherwise there may be a visible jump in values sent by the handler. + // When handler is waiting it's already activated but the `isAwaiting` flag + // prevents it from receiving touch stream. When the flag is changed, the + // difference between this event and the last one may be large enough to be + // visible in interactions based on this gesture. This makes it consistent with + // the behavior on iOS. + if (handler.shouldResetProgress) { + handler.shouldResetProgress = false + handler.resetProgress() + } + handler.dispatchHandlerUpdate(event) + } + + if (handler.needsPointerData && isFirstEvent) { + handler.updatePointerData(event) + } + + // if event was of type UP or POINTER_UP we request handler to stop tracking now that + // the event has been dispatched + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) { + val pointerId = event.getPointerId(event.actionIndex) + handler.stopTrackingPointer(pointerId) + } + } + + event.recycle() + } + + /** + * isViewAttachedUnderWrapper checks whether all of parents for view related to handler + * view are attached. Since there might be an issue rarely observed when view + * has been detached and handler's state hasn't been change to canceled, failed or + * ended yet. Probably it's a result of some race condition and stopping delivering + * for this handler and changing its state to failed of end appear to be good enough solution. + */ + private fun isViewAttachedUnderWrapper(view: View?): Boolean { + if (view == null) { + return false + } + if (view === wrapperView) { + return true + } + var parent = view.parent + while (parent != null && parent !== wrapperView) { + parent = parent.parent + } + return parent === wrapperView + } + + /** + * Transforms an event in the coordinates of wrapperView into the coordinate space of the received view. + * + * This modifies and returns the same event as it receives + * + * @param view - view to which coordinate space the event should be transformed + * @param event - event to transform + */ + fun transformEventToViewCoords(view: View?, event: MotionEvent): MotionEvent { + if (view == null) { + return event + } + + val parent = view.parent as? ViewGroup + // Events are passed down to the orchestrator by the wrapperView, so they are already in the + // relevant coordinate space. We want to stop traversing the tree when we reach it. + if (parent != wrapperView) { + transformEventToViewCoords(parent, event) + } + + if (parent != null) { + val localX = event.x + parent.scrollX - view.left + val localY = event.y + parent.scrollY - view.top + event.setLocation(localX, localY) + } + + if (!view.matrix.isIdentity) { + view.matrix.invert(inverseMatrix) + event.transform(inverseMatrix) + } + + return event + } + + /** + * Transforms a point in the coordinates of wrapperView into the coordinate space of the received view. + * + * This modifies and returns the same point as it receives + * + * @param view - view to which coordinate space the point should be transformed + * @param point - point to transform + */ + fun transformPointToViewCoords(view: View?, point: PointF): PointF { + if (view == null) { + return point + } + + val parent = view.parent as? ViewGroup + // Events are passed down to the orchestrator by the wrapperView, so they are already in the + // relevant coordinate space. We want to stop traversing the tree when we reach it. + if (parent != wrapperView) { + transformPointToViewCoords(parent, point) + } + + if (parent != null) { + point.x += parent.scrollX - view.left + point.y += parent.scrollY - view.top + } + + if (!view.matrix.isIdentity) { + view.matrix.invert(inverseMatrix) + tempCoords[0] = point.x + tempCoords[1] = point.y + inverseMatrix.mapPoints(tempCoords) + point.x = tempCoords[0] + point.y = tempCoords[1] + } + + return point + } + + private fun addAwaitingHandler(handler: GestureHandler<*>) { + for (i in 0 until awaitingHandlersCount) { + if (awaitingHandlers[i] === handler) { + return + } + } + check(awaitingHandlersCount < awaitingHandlers.size) { "Too many recognizers" } + awaitingHandlers[awaitingHandlersCount++] = handler + with(handler) { + isAwaiting = true + activationIndex = this@GestureHandlerOrchestrator.activationIndex++ + } + } + + private fun recordHandlerIfNotPresent(handler: GestureHandler<*>, view: View) { + for (i in 0 until gestureHandlersCount) { + if (gestureHandlers[i] === handler) { + return + } + } + check(gestureHandlersCount < gestureHandlers.size) { "Too many recognizers" } + gestureHandlers[gestureHandlersCount++] = handler + handler.isActive = false + handler.isAwaiting = false + handler.activationIndex = Int.MAX_VALUE + handler.prepare(view, this) + } + + private fun isViewOverflowingParent(view: View): Boolean { + val parent = view.parent as? ViewGroup ?: return false + val matrix = view.matrix + val localXY = matrixTransformCoords + localXY[0] = 0f + localXY[1] = 0f + matrix.mapPoints(localXY) + val left = localXY[0] + view.left + val top = localXY[1] + view.top + + return left < 0f || left + view.width > parent.width || top < 0f || top + view.height > parent.height + } + + private fun extractAncestorHandlers(view: View, coords: FloatArray, pointerId: Int): Boolean { + var found = false + var parent = view.parent + + while (parent != null) { + if (parent is ViewGroup) { + val parentViewGroup: ViewGroup = parent + + handlerRegistry.getHandlersForView(parent)?.let { + synchronized(it) { + for (handler in it) { + if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) { + found = true + recordHandlerIfNotPresent(handler, parentViewGroup) + handler.startTrackingPointer(pointerId) + } + } + } + } + } + + parent = parent.parent + } + + return found + } + + private fun recordViewHandlersForPointer(view: View, coords: FloatArray, pointerId: Int): Boolean { + var found = false + handlerRegistry.getHandlersForView(view)?.let { + synchronized(it) { + for (handler in it) { + if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) { + recordHandlerIfNotPresent(handler, view) + handler.startTrackingPointer(pointerId) + found = true + } + } + } + } + + // if the pointer is inside the view but it overflows its parent, handlers attached to the parent + // might not have been extracted (pointer might be in a child, but may be outside parent) + if (coords[0] in 0f..view.width.toFloat() && coords[1] in 0f..view.height.toFloat() && + isViewOverflowingParent(view) && extractAncestorHandlers(view, coords, pointerId) + ) { + found = true + } + + return found + } + + private fun extractGestureHandlers(event: MotionEvent) { + val actionIndex = event.actionIndex + val pointerId = event.getPointerId(actionIndex) + tempCoords[0] = event.getX(actionIndex) + tempCoords[1] = event.getY(actionIndex) + traverseWithPointerEvents(wrapperView, tempCoords, pointerId) + extractGestureHandlers(wrapperView, tempCoords, pointerId) + } + + private fun extractGestureHandlers(viewGroup: ViewGroup, coords: FloatArray, pointerId: Int): Boolean { + val childrenCount = viewGroup.childCount + for (i in childrenCount - 1 downTo 0) { + val child = viewConfigHelper.getChildInDrawingOrderAtIndex(viewGroup, i) + if (canReceiveEvents(child)) { + val childPoint = tempPoint + transformPointToChildViewCoords(coords[0], coords[1], viewGroup, child, childPoint) + val restoreX = coords[0] + val restoreY = coords[1] + coords[0] = childPoint.x + coords[1] = childPoint.y + var found = false + if (!isClipping(child) || isTransformedTouchPointInView(coords[0], coords[1], child)) { + // we only consider the view if touch is inside the view bounds or if the view's children + // can render outside of the view bounds (overflow visible) + found = traverseWithPointerEvents(child, coords, pointerId) + } + coords[0] = restoreX + coords[1] = restoreY + if (found) { + return true + } + } + } + return false + } + + private fun traverseWithPointerEvents(view: View, coords: FloatArray, pointerId: Int): Boolean = + when (viewConfigHelper.getPointerEventsConfigForView(view)) { + PointerEventsConfig.NONE -> { + // This view and its children can't be the target + false + } + PointerEventsConfig.BOX_ONLY -> { + // This view is the target, its children don't matter + ( + recordViewHandlersForPointer(view, coords, pointerId) || + shouldHandlerlessViewBecomeTouchTarget(view, coords) + ) + } + PointerEventsConfig.BOX_NONE -> { + // This view can't be the target, but its children might + when (view) { + is ViewGroup -> { + extractGestureHandlers(view, coords, pointerId).also { found -> + // A child view is handling touch, also extract handlers attached to this view + if (found) { + recordViewHandlersForPointer(view, coords, pointerId) + } + } + } + // When has editable set to `false` getPointerEventsConfigForView returns + // `BOX_NONE` as it's `isEnabled` property is false. In this case we still want to extract + // handlers attached to the text input, as it makes sense that gestures would work on a + // non-editable TextInput. + is EditText -> { + recordViewHandlersForPointer(view, coords, pointerId) + } + else -> false + } + } + PointerEventsConfig.AUTO -> { + // Either this view or one of its children is the target + val found = if (view is ViewGroup) { + extractGestureHandlers(view, coords, pointerId) + } else false + + ( + recordViewHandlersForPointer(view, coords, pointerId) || + found || shouldHandlerlessViewBecomeTouchTarget(view, coords) + ) + } + } + + private fun canReceiveEvents(view: View) = + view.visibility == View.VISIBLE && view.alpha >= minimumAlphaForTraversal + + // if view is not a view group it is clipping, otherwise we check for `getClipChildren` flag to + // be turned on and also confirm with the ViewConfigHelper implementation + private fun isClipping(view: View) = + view !is ViewGroup || viewConfigHelper.isViewClippingChildren(view) + + companion object { + // The limit doesn't necessarily need to exists, it was just simpler to implement it that way + // it is also more allocation-wise efficient to have a fixed limit + private const val SIMULTANEOUS_GESTURE_HANDLER_LIMIT = 20 + + // Be default fully transparent views can receive touch + private const val DEFAULT_MIN_ALPHA_FOR_TRAVERSAL = 0f + private val tempPoint = PointF() + private val matrixTransformCoords = FloatArray(2) + private val inverseMatrix = Matrix() + private val tempCoords = FloatArray(2) + private val handlersComparator = Comparator?> { a, b -> + return@Comparator if (a.isActive && b.isActive || a.isAwaiting && b.isAwaiting) { + // both A and B are either active or awaiting activation, in which case we prefer one that + // has activated (or turned into "awaiting" state) earlier + Integer.signum(b.activationIndex - a.activationIndex) + } else if (a.isActive) { + -1 // only A is active + } else if (b.isActive) { + 1 // only B is active + } else if (a.isAwaiting) { + -1 // only A is awaiting, B is inactive + } else if (b.isAwaiting) { + 1 // only B is awaiting, A is inactive + } else { + 0 // both A and B are inactive, stable order matters + } + } + + private fun shouldHandlerlessViewBecomeTouchTarget(view: View, coords: FloatArray): Boolean { + // The following code is to match the iOS behavior where transparent parts of the views can + // pass touch events through them allowing sibling nodes to handle them. + + // TODO: this is not an ideal solution as we only consider ViewGroups that has no background set + // TODO: ideally we should determine the pixel color under the given coordinates and return + // false if the color is transparent + val isLeafOrTransparent = view !is ViewGroup || view.getBackground() != null + return isLeafOrTransparent && isTransformedTouchPointInView(coords[0], coords[1], view) + } + + private fun transformPointToChildViewCoords( + x: Float, + y: Float, + parent: ViewGroup, + child: View, + outLocalPoint: PointF, + ) { + var localX = x + parent.scrollX - child.left + var localY = y + parent.scrollY - child.top + val matrix = child.matrix + if (!matrix.isIdentity) { + val localXY = matrixTransformCoords + localXY[0] = localX + localXY[1] = localY + matrix.invert(inverseMatrix) + inverseMatrix.mapPoints(localXY) + localX = localXY[0] + localY = localXY[1] + } + outLocalPoint[localX] = localY + } + + private fun isTransformedTouchPointInView(x: Float, y: Float, child: View) = + x in 0f..child.width.toFloat() && y in 0f..child.height.toFloat() + + private fun shouldHandlerWaitForOther(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean { + return handler !== other && ( + handler.shouldWaitForHandlerFailure(other) || + other.shouldRequireToWaitForFailure(handler) + ) + } + + private fun canRunSimultaneously(a: GestureHandler<*>, b: GestureHandler<*>) = + a === b || a.shouldRecognizeSimultaneously(b) || b.shouldRecognizeSimultaneously(a) + + private fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, other: GestureHandler<*>): Boolean { + if (!handler.hasCommonPointers(other)) { + // if two handlers share no common pointer one can never trigger cancel for the other + return false + } + if (canRunSimultaneously(handler, other)) { + // if handlers are allowed to run simultaneously, when first activates second can still remain + // in began state + return false + } + return if (handler !== other && + (handler.isAwaiting || handler.state == GestureHandler.STATE_ACTIVE) + ) { + // in every other case as long as the handler is about to be activated or already in active + // state, we delegate the decision to the implementation of GestureHandler#shouldBeCancelledBy + handler.shouldBeCancelledBy(other) + } else true + } + + private fun isFinished(state: Int) = + state == GestureHandler.STATE_CANCELLED || + state == GestureHandler.STATE_FAILED || + state == GestureHandler.STATE_END + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt new file mode 100644 index 00000000..c92862ea --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerRegistry.kt @@ -0,0 +1,8 @@ +package com.swmansion.gesturehandler.core + +import android.view.View +import java.util.* + +interface GestureHandlerRegistry { + fun getHandlersForView(view: View): ArrayList>? +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt new file mode 100644 index 00000000..5060f6b3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt @@ -0,0 +1,47 @@ +package com.swmansion.gesturehandler.core + +import android.view.MotionEvent + +object GestureUtils { + fun getLastPointerX(event: MotionEvent, averageTouches: Boolean): Float { + val excludeIndex = if (event.actionMasked == MotionEvent.ACTION_POINTER_UP) event.actionIndex else -1 + return if (averageTouches) { + var sum = 0f + var count = 0 + for (i in 0 until event.pointerCount) { + if (i != excludeIndex) { + sum += event.getX(i) + count++ + } + } + sum / count + } else { + var lastPointerIdx = event.pointerCount - 1 + if (lastPointerIdx == excludeIndex) { + lastPointerIdx-- + } + event.getX(lastPointerIdx) + } + } + + fun getLastPointerY(event: MotionEvent, averageTouches: Boolean): Float { + val excludeIndex = if (event.actionMasked == MotionEvent.ACTION_POINTER_UP) event.actionIndex else -1 + return if (averageTouches) { + var sum = 0f + var count = 0 + for (i in 0 until event.pointerCount) { + if (i != excludeIndex) { + sum += event.getY(i) + count++ + } + } + sum / count + } else { + var lastPointerIdx = event.pointerCount - 1 + if (lastPointerIdx == excludeIndex) { + lastPointerIdx -= 1 + } + event.getY(lastPointerIdx) + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt new file mode 100644 index 00000000..23a72545 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/LongPressGestureHandler.kt @@ -0,0 +1,100 @@ +package com.swmansion.gesturehandler.core + +import android.content.Context +import android.os.Handler +import android.os.Looper +import android.os.SystemClock +import android.view.MotionEvent + +class LongPressGestureHandler(context: Context) : GestureHandler() { + var minDurationMs = DEFAULT_MIN_DURATION_MS + val duration: Int + get() = (previousTime - startTime).toInt() + private val defaultMaxDistSq: Float + private var maxDistSq: Float + private var startX = 0f + private var startY = 0f + private var startTime: Long = 0 + private var previousTime: Long = 0 + private var handler: Handler? = null + + init { + setShouldCancelWhenOutside(true) + + val defaultMaxDist = DEFAULT_MAX_DIST_DP * context.resources.displayMetrics.density + defaultMaxDistSq = defaultMaxDist * defaultMaxDist + maxDistSq = defaultMaxDistSq + } + + override fun resetConfig() { + super.resetConfig() + minDurationMs = DEFAULT_MIN_DURATION_MS + maxDistSq = defaultMaxDistSq + } + + fun setMaxDist(maxDist: Float): LongPressGestureHandler { + maxDistSq = maxDist * maxDist + return this + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + if (state == STATE_UNDETERMINED) { + previousTime = SystemClock.uptimeMillis() + startTime = previousTime + begin() + startX = sourceEvent.rawX + startY = sourceEvent.rawY + handler = Handler(Looper.getMainLooper()) + if (minDurationMs > 0) { + handler!!.postDelayed({ activate() }, minDurationMs) + } else if (minDurationMs == 0L) { + activate() + } + } + if (sourceEvent.actionMasked == MotionEvent.ACTION_UP) { + handler?.let { + it.removeCallbacksAndMessages(null) + handler = null + } + if (state == STATE_ACTIVE) { + end() + } else { + fail() + } + } else { + // calculate distance from start + val deltaX = sourceEvent.rawX - startX + val deltaY = sourceEvent.rawY - startY + val distSq = deltaX * deltaX + deltaY * deltaY + if (distSq > maxDistSq) { + if (state == STATE_ACTIVE) { + cancel() + } else { + fail() + } + } + } + } + + override fun onStateChange(newState: Int, previousState: Int) { + handler?.let { + it.removeCallbacksAndMessages(null) + handler = null + } + } + + override fun dispatchStateChange(newState: Int, prevState: Int) { + previousTime = SystemClock.uptimeMillis() + super.dispatchStateChange(newState, prevState) + } + + override fun dispatchHandlerUpdate(event: MotionEvent) { + previousTime = SystemClock.uptimeMillis() + super.dispatchHandlerUpdate(event) + } + + companion object { + private const val DEFAULT_MIN_DURATION_MS: Long = 500 + private const val DEFAULT_MAX_DIST_DP = 10f + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt new file mode 100644 index 00000000..cdca5725 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ManualGestureHandler.kt @@ -0,0 +1,11 @@ +package com.swmansion.gesturehandler.core + +import android.view.MotionEvent + +class ManualGestureHandler : GestureHandler() { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + if (state == STATE_UNDETERMINED) { + begin() + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt new file mode 100644 index 00000000..8d0c862a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt @@ -0,0 +1,211 @@ +package com.swmansion.gesturehandler.core + +import android.os.SystemClock +import android.view.MotionEvent +import android.view.View +import android.view.ViewConfiguration +import android.view.ViewGroup +import com.facebook.react.views.textinput.ReactEditText + +class NativeViewGestureHandler : GestureHandler() { + private var shouldActivateOnStart = false + var disallowInterruption = false + private set + + private var hook: NativeViewGestureHandlerHook = defaultHook + + init { + setShouldCancelWhenOutside(true) + } + + override fun resetConfig() { + super.resetConfig() + shouldActivateOnStart = false + disallowInterruption = false + } + + fun setShouldActivateOnStart(shouldActivateOnStart: Boolean) = apply { + this.shouldActivateOnStart = shouldActivateOnStart + } + + /** + * Set this to `true` when wrapping native components that are supposed to be an exclusive + * target for a touch stream. Like for example switch or slider component which when activated + * aren't supposed to be cancelled by scrollview or other container that may also handle touches. + */ + fun setDisallowInterruption(disallowInterruption: Boolean) = apply { + this.disallowInterruption = disallowInterruption + } + + override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>): Boolean { + // if the gesture is marked by user as simultaneous with other or the hook return true + if (super.shouldRecognizeSimultaneously(handler) || hook.shouldRecognizeSimultaneously(handler)) { + return true + } + + if (handler is NativeViewGestureHandler) { + // Special case when the peer handler is also an instance of NativeViewGestureHandler: + // For the `disallowInterruption` to work correctly we need to check the property when + // accessed as a peer, because simultaneous recognizers can be set on either side of the + // connection. + if (handler.state == STATE_ACTIVE && handler.disallowInterruption) { + // other handler is active and it disallows interruption, we don't want to get into its way + return false + } + } + val canBeInterrupted = !disallowInterruption + val otherState = handler.state + return if (state == STATE_ACTIVE && otherState == STATE_ACTIVE && canBeInterrupted) { + // if both handlers are active and the current handler can be interrupted it we return `false` + // as it means the other handler has turned active and returning `true` would prevent it from + // interrupting the current handler + false + } else state == STATE_ACTIVE && canBeInterrupted && (!hook.shouldCancelRootViewGestureHandlerIfNecessary() || handler.tag > 0) + // otherwise we can only return `true` if already in an active state + } + + override fun shouldBeCancelledBy(handler: GestureHandler<*>): Boolean { + return !disallowInterruption + } + + override fun onPrepare() { + when (val view = view) { + is NativeViewGestureHandlerHook -> this.hook = view + is ReactEditText -> this.hook = EditTextHook(this, view) + } + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + val view = view!! + if (event.actionMasked == MotionEvent.ACTION_UP) { + view.onTouchEvent(event) + if ((state == STATE_UNDETERMINED || state == STATE_BEGAN) && view.isPressed) { + activate() + } + end() + hook.afterGestureEnd(event) + } else if (state == STATE_UNDETERMINED || state == STATE_BEGAN) { + when { + shouldActivateOnStart -> { + tryIntercept(view, event) + view.onTouchEvent(event) + activate() + } + tryIntercept(view, event) -> { + view.onTouchEvent(event) + activate() + } + hook.wantsToHandleEventBeforeActivation() -> { + hook.handleEventBeforeActivation(event) + } + state != STATE_BEGAN -> { + if (hook.canBegin()) { + begin() + } else { + cancel() + } + } + } + } else if (state == STATE_ACTIVE) { + view.onTouchEvent(event) + } + } + + override fun onCancel() { + val time = SystemClock.uptimeMillis() + val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0).apply { + action = MotionEvent.ACTION_CANCEL + } + view!!.onTouchEvent(event) + } + + override fun onReset() { + this.hook = defaultHook + } + + companion object { + private fun tryIntercept(view: View, event: MotionEvent) = + view is ViewGroup && view.onInterceptTouchEvent(event) + + private val defaultHook = object : NativeViewGestureHandlerHook {} + } + + interface NativeViewGestureHandlerHook { + /** + * Called when gesture is in the UNDETERMINED state, shouldActivateOnStart is set to false, + * and both tryIntercept and wantsToHandleEventBeforeActivation returned false. + * + * @return Boolean value signalling whether the handler can transition to the BEGAN state. If false + * the gesture will be cancelled. + */ + fun canBegin() = true + + /** + * Called after the gesture transitions to the END state. + */ + fun afterGestureEnd(event: MotionEvent) = Unit + + /** + * @return Boolean value signalling whether the gesture can be recognized simultaneously with + * other (handler). Returning false doesn't necessarily prevent it from happening. + */ + fun shouldRecognizeSimultaneously(handler: GestureHandler<*>) = false + + /** + * shouldActivateOnStart and tryIntercept have priority over this method + * + * @return Boolean value signalling if the hook wants to handle events passed to the handler + * before it activates (after that the events are passed to the underlying view). + */ + fun wantsToHandleEventBeforeActivation() = false + + /** + * Will be called with events if wantsToHandleEventBeforeActivation returns true. + */ + fun handleEventBeforeActivation(event: MotionEvent) = Unit + + /** + * @return Boolean value indicating whether the RootViewGestureHandler should be cancelled + * by this one. + */ + fun shouldCancelRootViewGestureHandlerIfNecessary() = false + } + + private class EditTextHook( + private val handler: NativeViewGestureHandler, + private val editText: ReactEditText + ) : NativeViewGestureHandlerHook { + private var startX = 0f + private var startY = 0f + private var touchSlopSquared: Int + + init { + val vc = ViewConfiguration.get(editText.context) + touchSlopSquared = vc.scaledTouchSlop * vc.scaledTouchSlop + } + + override fun afterGestureEnd(event: MotionEvent) { + if ((event.x - startX) * (event.x - startX) + (event.y - startY) * (event.y - startY) < touchSlopSquared) { + editText.requestFocusFromJS() + } + } + + // recognize alongside every handler besides RootViewGestureHandler, which is a private inner class + // of RNGestureHandlerRootHelper so no explicit type checks, but its tag is always negative + // also if other handler is NativeViewGestureHandler then don't override the default implementation + override fun shouldRecognizeSimultaneously(handler: GestureHandler<*>) = + handler.tag > 0 && handler !is NativeViewGestureHandler + + override fun wantsToHandleEventBeforeActivation() = true + + override fun handleEventBeforeActivation(event: MotionEvent) { + handler.activate() + editText.onTouchEvent(event) + + startX = event.x + startY = event.y + } + + override fun shouldCancelRootViewGestureHandlerIfNecessary() = true + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt new file mode 100644 index 00000000..2784d99d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/OnTouchEventListener.kt @@ -0,0 +1,9 @@ +package com.swmansion.gesturehandler.core + +import android.view.MotionEvent + +interface OnTouchEventListener { + fun > onHandlerUpdate(handler: T, event: MotionEvent) + fun > onStateChange(handler: T, newState: Int, oldState: Int) + fun > onTouchEvent(handler: T) +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt new file mode 100644 index 00000000..ad74f04e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PanGestureHandler.kt @@ -0,0 +1,322 @@ +package com.swmansion.gesturehandler.core + +import android.content.Context +import android.os.Handler +import android.os.Looper +import android.view.MotionEvent +import android.view.VelocityTracker +import android.view.ViewConfiguration +import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX +import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY + +class PanGestureHandler(context: Context?) : GestureHandler() { + var velocityX = 0f + private set + var velocityY = 0f + private set + val translationX: Float + get() = lastX - startX + offsetX + val translationY: Float + get() = lastY - startY + offsetY + + private val defaultMinDistSq: Float + private var minDistSq = MAX_VALUE_IGNORE + private var activeOffsetXStart = MIN_VALUE_IGNORE + private var activeOffsetXEnd = MAX_VALUE_IGNORE + private var failOffsetXStart = MAX_VALUE_IGNORE + private var failOffsetXEnd = MIN_VALUE_IGNORE + private var activeOffsetYStart = MIN_VALUE_IGNORE + private var activeOffsetYEnd = MAX_VALUE_IGNORE + private var failOffsetYStart = MAX_VALUE_IGNORE + private var failOffsetYEnd = MIN_VALUE_IGNORE + private var minVelocityX = MIN_VALUE_IGNORE + private var minVelocityY = MIN_VALUE_IGNORE + private var minVelocitySq = MIN_VALUE_IGNORE + private var minPointers = DEFAULT_MIN_POINTERS + private var maxPointers = DEFAULT_MAX_POINTERS + private var startX = 0f + private var startY = 0f + private var offsetX = 0f + private var offsetY = 0f + private var lastX = 0f + private var lastY = 0f + private var velocityTracker: VelocityTracker? = null + private var averageTouches = false + private var activateAfterLongPress = DEFAULT_ACTIVATE_AFTER_LONG_PRESS + private val activateDelayed = Runnable { activate() } + private var handler: Handler? = null + + /** + * On Android when there are multiple pointers on the screen pan gestures most often just consider + * the last placed pointer. The behaviour on iOS is quite different where the x and y component + * of the pan pointer is calculated as an average out of all the pointers placed on the screen. + * + * This behaviour can be customized on android by setting averageTouches property of the handler + * object. This could be useful in particular for the usecases when we attach other handlers that + * recognizes multi-finger gestures such as rotation. In that case when we only rely on the last + * placed finger it is easier for the gesture handler to trigger when we do a rotation gesture + * because each finger when treated separately will travel some distance, whereas the average + * position of all the fingers will remain still while doing a rotation gesture. + */ + init { + val vc = ViewConfiguration.get(context!!) + val touchSlop = vc.scaledTouchSlop + defaultMinDistSq = (touchSlop * touchSlop).toFloat() + minDistSq = defaultMinDistSq + } + + override fun resetConfig() { + super.resetConfig() + activeOffsetXStart = MIN_VALUE_IGNORE + activeOffsetXEnd = MAX_VALUE_IGNORE + failOffsetXStart = MAX_VALUE_IGNORE + failOffsetXEnd = MIN_VALUE_IGNORE + activeOffsetYStart = MIN_VALUE_IGNORE + activeOffsetYEnd = MAX_VALUE_IGNORE + failOffsetYStart = MAX_VALUE_IGNORE + failOffsetYEnd = MIN_VALUE_IGNORE + minVelocityX = MIN_VALUE_IGNORE + minVelocityY = MIN_VALUE_IGNORE + minVelocitySq = MIN_VALUE_IGNORE + minDistSq = defaultMinDistSq + minPointers = DEFAULT_MIN_POINTERS + maxPointers = DEFAULT_MAX_POINTERS + activateAfterLongPress = DEFAULT_ACTIVATE_AFTER_LONG_PRESS + averageTouches = false + } + + fun setActiveOffsetXStart(activeOffsetXStart: Float) = apply { + this.activeOffsetXStart = activeOffsetXStart + } + + fun setActiveOffsetXEnd(activeOffsetXEnd: Float) = apply { + this.activeOffsetXEnd = activeOffsetXEnd + } + + fun setFailOffsetXStart(failOffsetXStart: Float) = apply { + this.failOffsetXStart = failOffsetXStart + } + + fun setFailOffsetXEnd(failOffsetXEnd: Float) = apply { + this.failOffsetXEnd = failOffsetXEnd + } + + fun setActiveOffsetYStart(activeOffsetYStart: Float) = apply { + this.activeOffsetYStart = activeOffsetYStart + } + + fun setActiveOffsetYEnd(activeOffsetYEnd: Float) = apply { + this.activeOffsetYEnd = activeOffsetYEnd + } + + fun setFailOffsetYStart(failOffsetYStart: Float) = apply { + this.failOffsetYStart = failOffsetYStart + } + + fun setFailOffsetYEnd(failOffsetYEnd: Float) = apply { + this.failOffsetYEnd = failOffsetYEnd + } + + fun setMinDist(minDist: Float) = apply { + minDistSq = minDist * minDist + } + + fun setMinPointers(minPointers: Int) = apply { + this.minPointers = minPointers + } + + fun setMaxPointers(maxPointers: Int) = apply { + this.maxPointers = maxPointers + } + + fun setAverageTouches(averageTouches: Boolean) = apply { + this.averageTouches = averageTouches + } + + fun setActivateAfterLongPress(time: Long) = apply { + this.activateAfterLongPress = time + } + + /** + * @param minVelocity in pixels per second + */ + fun setMinVelocity(minVelocity: Float) = apply { + minVelocitySq = minVelocity * minVelocity + } + + fun setMinVelocityX(minVelocityX: Float) = apply { + this.minVelocityX = minVelocityX + } + + fun setMinVelocityY(minVelocityY: Float) = apply { + this.minVelocityY = minVelocityY + } + + private fun shouldActivate(): Boolean { + val dx = lastX - startX + offsetX + if (activeOffsetXStart != MIN_VALUE_IGNORE && dx < activeOffsetXStart) { + return true + } + if (activeOffsetXEnd != MAX_VALUE_IGNORE && dx > activeOffsetXEnd) { + return true + } + val dy = lastY - startY + offsetY + if (activeOffsetYStart != MIN_VALUE_IGNORE && dy < activeOffsetYStart) { + return true + } + if (activeOffsetYEnd != MAX_VALUE_IGNORE && dy > activeOffsetYEnd) { + return true + } + val distSq = dx * dx + dy * dy + if (minDistSq != MIN_VALUE_IGNORE && distSq >= minDistSq) { + return true + } + val vx = velocityX + if (minVelocityX != MIN_VALUE_IGNORE && + (minVelocityX < 0 && vx <= minVelocityX || minVelocityX in 0.0f..vx) + ) { + return true + } + val vy = velocityY + if (minVelocityY != MIN_VALUE_IGNORE && + (minVelocityY < 0 && vx <= minVelocityY || minVelocityY in 0.0f..vx) + ) { + return true + } + val velocitySq = vx * vx + vy * vy + return minVelocitySq != MIN_VALUE_IGNORE && velocitySq >= minVelocitySq + } + + private fun shouldFail(): Boolean { + val dx = lastX - startX + offsetX + val dy = lastY - startY + offsetY + + if (activateAfterLongPress > 0 && dx * dx + dy * dy > defaultMinDistSq) { + handler?.removeCallbacksAndMessages(null) + return true + } + if (failOffsetXStart != MAX_VALUE_IGNORE && dx < failOffsetXStart) { + return true + } + if (failOffsetXEnd != MIN_VALUE_IGNORE && dx > failOffsetXEnd) { + return true + } + if (failOffsetYStart != MAX_VALUE_IGNORE && dy < failOffsetYStart) { + return true + } + return failOffsetYEnd != MIN_VALUE_IGNORE && dy > failOffsetYEnd + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + val state = state + val action = sourceEvent.actionMasked + if (action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_POINTER_DOWN) { + // update offset if new pointer gets added or removed + offsetX += lastX - startX + offsetY += lastY - startY + + // reset starting point + lastX = getLastPointerX(sourceEvent, averageTouches) + lastY = getLastPointerY(sourceEvent, averageTouches) + startX = lastX + startY = lastY + } else { + lastX = getLastPointerX(sourceEvent, averageTouches) + lastY = getLastPointerY(sourceEvent, averageTouches) + } + if (state == STATE_UNDETERMINED && sourceEvent.pointerCount >= minPointers) { + resetProgress() + offsetX = 0f + offsetY = 0f + velocityX = 0f + velocityY = 0f + velocityTracker = VelocityTracker.obtain() + addVelocityMovement(velocityTracker, sourceEvent) + begin() + + if (activateAfterLongPress > 0) { + if (handler == null) { + handler = Handler(Looper.getMainLooper()) + } + handler!!.postDelayed(activateDelayed, activateAfterLongPress) + } + } else if (velocityTracker != null) { + addVelocityMovement(velocityTracker, sourceEvent) + velocityTracker!!.computeCurrentVelocity(1000) + velocityX = velocityTracker!!.xVelocity + velocityY = velocityTracker!!.yVelocity + } + if (action == MotionEvent.ACTION_UP) { + if (state == STATE_ACTIVE) { + end() + } else { + fail() + } + } else if (action == MotionEvent.ACTION_POINTER_DOWN && sourceEvent.pointerCount > maxPointers) { + // When new finger is placed down (POINTER_DOWN) we check if MAX_POINTERS is not exceeded + if (state == STATE_ACTIVE) { + cancel() + } else { + fail() + } + } else if (action == MotionEvent.ACTION_POINTER_UP && state == STATE_ACTIVE && sourceEvent.pointerCount < minPointers) { + // When finger is lifted up (POINTER_UP) and the number of pointers falls below MIN_POINTERS + // threshold, we only want to take an action when the handler has already activated. Otherwise + // we can still expect more fingers to be placed on screen and fulfill MIN_POINTERS criteria. + fail() + } else if (state == STATE_BEGAN) { + if (shouldFail()) { + fail() + } else if (shouldActivate()) { + activate() + } + } + } + + override fun activate(force: Boolean) { + // reset starting point if the handler has not yet activated + if (state != STATE_ACTIVE) { + resetProgress() + } + super.activate(force) + } + + override fun onCancel() { + handler?.removeCallbacksAndMessages(null) + } + + override fun onReset() { + handler?.removeCallbacksAndMessages(null) + velocityTracker?.let { + it.recycle() + velocityTracker = null + } + } + + override fun resetProgress() { + startX = lastX + startY = lastY + } + + companion object { + private const val MIN_VALUE_IGNORE = Float.MAX_VALUE + private const val MAX_VALUE_IGNORE = Float.MIN_VALUE + private const val DEFAULT_MIN_POINTERS = 1 + private const val DEFAULT_MAX_POINTERS = 10 + private const val DEFAULT_ACTIVATE_AFTER_LONG_PRESS = 0L + + /** + * This method adds movement to {@class VelocityTracker} first resetting offset of the event so + * that the velocity is calculated based on the absolute position of touch pointers. This is + * because if the underlying view moves along with the finger using relative x/y coords yields + * incorrect results. + */ + private fun addVelocityMovement(tracker: VelocityTracker?, event: MotionEvent) { + val offsetX = event.rawX - event.x + val offsetY = event.rawY - event.y + event.offsetLocation(offsetX, offsetY) + tracker!!.addMovement(event) + event.offsetLocation(-offsetX, -offsetY) + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt new file mode 100644 index 00000000..28e85893 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt @@ -0,0 +1,103 @@ +package com.swmansion.gesturehandler.core + +import android.graphics.PointF +import android.view.MotionEvent +import android.view.ViewConfiguration +import kotlin.math.abs + +class PinchGestureHandler : GestureHandler() { + var scale = 0.0 + private set + var velocity = 0.0 + private set + var focalPointX: Float = Float.NaN + private set + var focalPointY: Float = Float.NaN + private set + + private var scaleGestureDetector: ScaleGestureDetector? = null + private var startingSpan = 0f + private var spanSlop = 0f + private val gestureListener: ScaleGestureDetector.OnScaleGestureListener = object : + ScaleGestureDetector.OnScaleGestureListener { + override fun onScale(detector: ScaleGestureDetector): Boolean { + val prevScaleFactor: Double = scale + scale *= detector.scaleFactor.toDouble() + val delta = detector.timeDelta + if (delta > 0) { + velocity = (scale - prevScaleFactor) / delta + } + if (abs(startingSpan - detector.currentSpan) >= spanSlop && + state == STATE_BEGAN + ) { + activate() + } + return true + } + + init { + setShouldCancelWhenOutside(false) + } + + override fun onScaleBegin(detector: ScaleGestureDetector): Boolean { + startingSpan = detector.currentSpan + return true + } + + override fun onScaleEnd(detector: ScaleGestureDetector) { + // ScaleGestureDetector thinks that when fingers are 27mm away that's a sufficiently good + // reason to trigger this method giving us no other choice but to ignore it completely. + } + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + if (state == STATE_UNDETERMINED) { + val context = view!!.context + resetProgress() + scaleGestureDetector = ScaleGestureDetector(context, gestureListener) + val configuration = ViewConfiguration.get(context) + spanSlop = configuration.scaledTouchSlop.toFloat() + + // set the focal point to the position of the first pointer as NaN causes the event not to arrive + this.focalPointX = event.x + this.focalPointY = event.y + + begin() + } + scaleGestureDetector?.onTouchEvent(sourceEvent) + scaleGestureDetector?.let { + val point = transformPoint(PointF(it.focusX, it.focusY)) + this.focalPointX = point.x + this.focalPointY = point.y + } + var activePointers = sourceEvent.pointerCount + if (sourceEvent.actionMasked == MotionEvent.ACTION_POINTER_UP) { + activePointers -= 1 + } + if (state == STATE_ACTIVE && activePointers < 2) { + end() + } else if (sourceEvent.actionMasked == MotionEvent.ACTION_UP) { + fail() + } + } + + override fun activate(force: Boolean) { + // reset scale if the handler has not yet activated + if (state != STATE_ACTIVE) { + resetProgress() + } + super.activate(force) + } + + override fun onReset() { + scaleGestureDetector = null + focalPointX = Float.NaN + focalPointY = Float.NaN + resetProgress() + } + + override fun resetProgress() { + velocity = 0.0 + scale = 1.0 + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt new file mode 100644 index 00000000..c84c931b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PointerEventsConfig.kt @@ -0,0 +1,23 @@ +package com.swmansion.gesturehandler.core + +enum class PointerEventsConfig { + /** + * Neither the container nor its children receive events. + */ + NONE, + + /** + * Container doesn't get events but all of its children do. + */ + BOX_NONE, + + /** + * Container gets events but none of its children do. + */ + BOX_ONLY, + + /** + * Container and all of its children receive touch events (like pointerEvents is unspecified). + */ + AUTO +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt new file mode 100644 index 00000000..48cdccd6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt @@ -0,0 +1,125 @@ +package com.swmansion.gesturehandler.core + +import android.view.MotionEvent +import kotlin.math.atan2 + +class RotationGestureDetector(private val gestureListener: OnRotationGestureListener?) { + interface OnRotationGestureListener { + fun onRotation(detector: RotationGestureDetector): Boolean + fun onRotationBegin(detector: RotationGestureDetector): Boolean + fun onRotationEnd(detector: RotationGestureDetector) + } + + private var currentTime = 0L + private var previousTime = 0L + private var previousAngle = 0.0 + + /** + * Returns rotation in radians since the previous rotation event. + * + * @return current rotation step in radians. + */ + var rotation = 0.0 + private set + + /** + * Returns X coordinate of the rotation anchor point relative to the view that the provided motion + * event coordinates (usually relative to the view event was sent to). + * + * @return X coordinate of the rotation anchor point + */ + var anchorX = 0f + private set + + /** + * Returns Y coordinate of the rotation anchor point relative to the view that the provided motion + * event coordinates (usually relative to the view event was sent to). + * + * @return Y coordinate of the rotation anchor point + */ + var anchorY = 0f + private set + + /** + * Return the time difference in milliseconds between the previous + * accepted rotation event and the current rotation event. + * + * @return Time difference since the last rotation event in milliseconds. + */ + val timeDelta: Long + get() = currentTime - previousTime + + private var isInProgress = false + private val pointerIds = IntArray(2) + + private fun updateCurrent(event: MotionEvent) { + previousTime = currentTime + currentTime = event.eventTime + val firstPointerIndex = event.findPointerIndex(pointerIds[0]) + val secondPointerIndex = event.findPointerIndex(pointerIds[1]) + val firstPtX = event.getX(firstPointerIndex) + val firstPtY = event.getY(firstPointerIndex) + val secondPtX = event.getX(secondPointerIndex) + val secondPtY = event.getY(secondPointerIndex) + val vectorX = secondPtX - firstPtX + val vectorY = secondPtY - firstPtY + anchorX = (firstPtX + secondPtX) * 0.5f + anchorY = (firstPtY + secondPtY) * 0.5f + + // Angle diff should be positive when rotating in clockwise direction + val angle = -atan2(vectorY.toDouble(), vectorX.toDouble()) + rotation = if (previousAngle.isNaN()) { + 0.0 + } else previousAngle - angle + + previousAngle = angle + if (rotation > Math.PI) { + rotation -= Math.PI + } else if (rotation < -Math.PI) { + rotation += Math.PI + } + if (rotation > Math.PI / 2.0) { + rotation -= Math.PI + } else if (rotation < -Math.PI / 2.0) { + rotation += Math.PI + } + } + + private fun finish() { + if (isInProgress) { + isInProgress = false + gestureListener?.onRotationEnd(this) + } + } + + fun onTouchEvent(event: MotionEvent): Boolean { + when (event.actionMasked) { + MotionEvent.ACTION_DOWN -> { + isInProgress = false + pointerIds[0] = event.getPointerId(event.actionIndex) + pointerIds[1] = MotionEvent.INVALID_POINTER_ID + } + MotionEvent.ACTION_POINTER_DOWN -> if (!isInProgress) { + pointerIds[1] = event.getPointerId(event.actionIndex) + isInProgress = true + previousTime = event.eventTime + previousAngle = Double.NaN + updateCurrent(event) + gestureListener?.onRotationBegin(this) + } + MotionEvent.ACTION_MOVE -> if (isInProgress) { + updateCurrent(event) + gestureListener?.onRotation(this) + } + MotionEvent.ACTION_POINTER_UP -> if (isInProgress) { + val pointerId = event.getPointerId(event.actionIndex) + if (pointerId == pointerIds[0] || pointerId == pointerIds[1]) { + // One of the key pointer has been lifted up, we have to end the gesture + finish() + } + } + MotionEvent.ACTION_UP -> finish() + } + return true + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt new file mode 100644 index 00000000..d3d12f46 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureHandler.kt @@ -0,0 +1,93 @@ +package com.swmansion.gesturehandler.core + +import android.graphics.PointF +import android.view.MotionEvent +import com.swmansion.gesturehandler.core.RotationGestureDetector.OnRotationGestureListener +import kotlin.math.abs + +class RotationGestureHandler : GestureHandler() { + private var rotationGestureDetector: RotationGestureDetector? = null + var rotation = 0.0 + private set + var velocity = 0.0 + private set + var anchorX: Float = Float.NaN + private set + var anchorY: Float = Float.NaN + private set + + init { + setShouldCancelWhenOutside(false) + } + + private val gestureListener: OnRotationGestureListener = object : OnRotationGestureListener { + override fun onRotation(detector: RotationGestureDetector): Boolean { + val prevRotation: Double = rotation + rotation += detector.rotation + val delta = detector.timeDelta + if (delta > 0) { + velocity = (rotation - prevRotation) / delta + } + if (abs(rotation) >= ROTATION_RECOGNITION_THRESHOLD && state == STATE_BEGAN) { + activate() + } + return true + } + + override fun onRotationBegin(detector: RotationGestureDetector) = true + + override fun onRotationEnd(detector: RotationGestureDetector) { + end() + } + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + if (state == STATE_UNDETERMINED) { + resetProgress() + rotationGestureDetector = RotationGestureDetector(gestureListener) + + // set the anchor to the position of the first pointer as NaN causes the event not to arrive + this.anchorX = event.x + this.anchorY = event.y + + begin() + } + rotationGestureDetector?.onTouchEvent(sourceEvent) + rotationGestureDetector?.let { + val point = transformPoint(PointF(it.anchorX, it.anchorY)) + anchorX = point.x + anchorY = point.y + } + if (sourceEvent.actionMasked == MotionEvent.ACTION_UP) { + if (state == STATE_ACTIVE) { + end() + } else { + fail() + } + } + } + + override fun activate(force: Boolean) { + // reset rotation if the handler has not yet activated + if (state != STATE_ACTIVE) { + resetProgress() + } + super.activate(force) + } + + override fun onReset() { + rotationGestureDetector = null + anchorX = Float.NaN + anchorY = Float.NaN + resetProgress() + } + + override fun resetProgress() { + velocity = 0.0 + rotation = 0.0 + } + + companion object { + private const val ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36.0 // 5 deg in radians + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java new file mode 100644 index 00000000..8761b9ea --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ScaleGestureDetector.java @@ -0,0 +1,558 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Copied from https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ScaleGestureDetector.java + * Modified line 189 to set initial min span to 0 instead of copying it from the system configuration + */ + +package com.swmansion.gesturehandler.core; + +import android.content.Context; +import android.os.Build; +import android.os.Handler; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; + +/** + * Detects scaling transformation gestures using the supplied {@link MotionEvent}s. + * The {@link OnScaleGestureListener} callback will notify users when a particular + * gesture event has occurred. + * + * This class should only be used with {@link MotionEvent}s reported via touch. + * + * To use this class: + *
    + *
  • Create an instance of the {@code ScaleGestureDetector} for your + * {@link View} + *
  • In the {@link View#onTouchEvent(MotionEvent)} method ensure you call + * {@link #onTouchEvent(MotionEvent)}. The methods defined in your + * callback will be executed when the events occur. + *
+ */ +public class ScaleGestureDetector { + private static final String TAG = "ScaleGestureDetector"; + + /** + * The listener for receiving notifications when gestures occur. + * If you want to listen for all the different gestures then implement + * this interface. If you only want to listen for a subset it might + * be easier to extend {@link SimpleOnScaleGestureListener}. + * + * An application will receive events in the following order: + *
    + *
  • One {@link OnScaleGestureListener#onScaleBegin(ScaleGestureDetector)} + *
  • Zero or more {@link OnScaleGestureListener#onScale(ScaleGestureDetector)} + *
  • One {@link OnScaleGestureListener#onScaleEnd(ScaleGestureDetector)} + *
+ */ + public interface OnScaleGestureListener { + /** + * Responds to scaling events for a gesture in progress. + * Reported by pointer motion. + * + * @param detector The detector reporting the event - use this to + * retrieve extended info about event state. + * @return Whether or not the detector should consider this event + * as handled. If an event was not handled, the detector + * will continue to accumulate movement until an event is + * handled. This can be useful if an application, for example, + * only wants to update scaling factors if the change is + * greater than 0.01. + */ + public boolean onScale(ScaleGestureDetector detector); + + /** + * Responds to the beginning of a scaling gesture. Reported by + * new pointers going down. + * + * @param detector The detector reporting the event - use this to + * retrieve extended info about event state. + * @return Whether or not the detector should continue recognizing + * this gesture. For example, if a gesture is beginning + * with a focal point outside of a region where it makes + * sense, onScaleBegin() may return false to ignore the + * rest of the gesture. + */ + public boolean onScaleBegin(ScaleGestureDetector detector); + + /** + * Responds to the end of a scale gesture. Reported by existing + * pointers going up. + * + * Once a scale has ended, {@link ScaleGestureDetector#getFocusX()} + * and {@link ScaleGestureDetector#getFocusY()} will return focal point + * of the pointers remaining on the screen. + * + * @param detector The detector reporting the event - use this to + * retrieve extended info about event state. + */ + public void onScaleEnd(ScaleGestureDetector detector); + } + + /** + * A convenience class to extend when you only want to listen for a subset + * of scaling-related events. This implements all methods in + * {@link OnScaleGestureListener} but does nothing. + * {@link OnScaleGestureListener#onScale(ScaleGestureDetector)} returns + * {@code false} so that a subclass can retrieve the accumulated scale + * factor in an overridden onScaleEnd. + * {@link OnScaleGestureListener#onScaleBegin(ScaleGestureDetector)} returns + * {@code true}. + */ + public static class SimpleOnScaleGestureListener implements OnScaleGestureListener { + + public boolean onScale(ScaleGestureDetector detector) { + return false; + } + + public boolean onScaleBegin(ScaleGestureDetector detector) { + return true; + } + + public void onScaleEnd(ScaleGestureDetector detector) { + // Intentionally empty + } + } + + private final Context mContext; + private final OnScaleGestureListener mListener; + + private float mFocusX; + private float mFocusY; + + private boolean mQuickScaleEnabled; + private boolean mStylusScaleEnabled; + + private float mCurrSpan; + private float mPrevSpan; + private float mInitialSpan; + private float mCurrSpanX; + private float mCurrSpanY; + private float mPrevSpanX; + private float mPrevSpanY; + private long mCurrTime; + private long mPrevTime; + private boolean mInProgress; + private int mSpanSlop; + private int mMinSpan; + + private final Handler mHandler; + + private float mAnchoredScaleStartX; + private float mAnchoredScaleStartY; + private int mAnchoredScaleMode = ANCHORED_SCALE_MODE_NONE; + + private static final long TOUCH_STABILIZE_TIME = 128; // ms + private static final float SCALE_FACTOR = .5f; + private static final int ANCHORED_SCALE_MODE_NONE = 0; + private static final int ANCHORED_SCALE_MODE_DOUBLE_TAP = 1; + private static final int ANCHORED_SCALE_MODE_STYLUS = 2; + + + private GestureDetector mGestureDetector; + + private boolean mEventBeforeOrAboveStartingGestureEvent; + + /** + * Creates a ScaleGestureDetector with the supplied listener. + * You may only use this constructor from a {@link android.os.Looper Looper} thread. + * + * @param context the application's context + * @param listener the listener invoked for all the callbacks, this must + * not be null. + * + * @throws NullPointerException if {@code listener} is null. + */ + public ScaleGestureDetector(Context context, OnScaleGestureListener listener) { + this(context, listener, null); + } + + /** + * Creates a ScaleGestureDetector with the supplied listener. + * @see android.os.Handler#Handler() + * + * @param context the application's context + * @param listener the listener invoked for all the callbacks, this must + * not be null. + * @param handler the handler to use for running deferred listener events. + * + * @throws NullPointerException if {@code listener} is null. + */ + public ScaleGestureDetector(Context context, OnScaleGestureListener listener, + Handler handler) { + mContext = context; + mListener = listener; + final ViewConfiguration viewConfiguration = ViewConfiguration.get(context); + mSpanSlop = viewConfiguration.getScaledTouchSlop() * 2; + mMinSpan = 0; // set to zero, to allow for scaling when distance between fingers is small + mHandler = handler; + // Quick scale is enabled by default after JB_MR2 + final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion; + if (targetSdkVersion > Build.VERSION_CODES.JELLY_BEAN_MR2) { + setQuickScaleEnabled(true); + } + // Stylus scale is enabled by default after LOLLIPOP_MR1 + if (targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1) { + setStylusScaleEnabled(true); + } + } + + /** + * Accepts MotionEvents and dispatches events to a {@link OnScaleGestureListener} + * when appropriate. + * + *

Applications should pass a complete and consistent event stream to this method. + * A complete and consistent event stream involves all MotionEvents from the initial + * ACTION_DOWN to the final ACTION_UP or ACTION_CANCEL.

+ * + * @param event The event to process + * @return true if the event was processed and the detector wants to receive the + * rest of the MotionEvents in this event stream. + */ + public boolean onTouchEvent(MotionEvent event) { + mCurrTime = event.getEventTime(); + + final int action = event.getActionMasked(); + + // Forward the event to check for double tap gesture + if (mQuickScaleEnabled) { + mGestureDetector.onTouchEvent(event); + } + + final int count = event.getPointerCount(); + final boolean isStylusButtonDown = + (event.getButtonState() & MotionEvent.BUTTON_STYLUS_PRIMARY) != 0; + + final boolean anchoredScaleCancelled = + mAnchoredScaleMode == ANCHORED_SCALE_MODE_STYLUS && !isStylusButtonDown; + final boolean streamComplete = action == MotionEvent.ACTION_UP || + action == MotionEvent.ACTION_CANCEL || anchoredScaleCancelled; + + if (action == MotionEvent.ACTION_DOWN || streamComplete) { + // Reset any scale in progress with the listener. + // If it's an ACTION_DOWN we're beginning a new event stream. + // This means the app probably didn't give us all the events. Shame on it. + if (mInProgress) { + mListener.onScaleEnd(this); + mInProgress = false; + mInitialSpan = 0; + mAnchoredScaleMode = ANCHORED_SCALE_MODE_NONE; + } else if (inAnchoredScaleMode() && streamComplete) { + mInProgress = false; + mInitialSpan = 0; + mAnchoredScaleMode = ANCHORED_SCALE_MODE_NONE; + } + + if (streamComplete) { + return true; + } + } + + if (!mInProgress && mStylusScaleEnabled && !inAnchoredScaleMode() + && !streamComplete && isStylusButtonDown) { + // Start of a button scale gesture + mAnchoredScaleStartX = event.getX(); + mAnchoredScaleStartY = event.getY(); + mAnchoredScaleMode = ANCHORED_SCALE_MODE_STYLUS; + mInitialSpan = 0; + } + + final boolean configChanged = action == MotionEvent.ACTION_DOWN || + action == MotionEvent.ACTION_POINTER_UP || + action == MotionEvent.ACTION_POINTER_DOWN || anchoredScaleCancelled; + + final boolean pointerUp = action == MotionEvent.ACTION_POINTER_UP; + final int skipIndex = pointerUp ? event.getActionIndex() : -1; + + // Determine focal point + float sumX = 0, sumY = 0; + final int div = pointerUp ? count - 1 : count; + final float focusX; + final float focusY; + if (inAnchoredScaleMode()) { + // In anchored scale mode, the focal pt is always where the double tap + // or button down gesture started + focusX = mAnchoredScaleStartX; + focusY = mAnchoredScaleStartY; + if (event.getY() < focusY) { + mEventBeforeOrAboveStartingGestureEvent = true; + } else { + mEventBeforeOrAboveStartingGestureEvent = false; + } + } else { + for (int i = 0; i < count; i++) { + if (skipIndex == i) continue; + sumX += event.getX(i); + sumY += event.getY(i); + } + + focusX = sumX / div; + focusY = sumY / div; + } + + // Determine average deviation from focal point + float devSumX = 0, devSumY = 0; + for (int i = 0; i < count; i++) { + if (skipIndex == i) continue; + + // Convert the resulting diameter into a radius. + devSumX += Math.abs(event.getX(i) - focusX); + devSumY += Math.abs(event.getY(i) - focusY); + } + final float devX = devSumX / div; + final float devY = devSumY / div; + + // Span is the average distance between touch points through the focal point; + // i.e. the diameter of the circle with a radius of the average deviation from + // the focal point. + final float spanX = devX * 2; + final float spanY = devY * 2; + final float span; + if (inAnchoredScaleMode()) { + span = spanY; + } else { + span = (float) Math.hypot(spanX, spanY); + } + + // Dispatch begin/end events as needed. + // If the configuration changes, notify the app to reset its current state by beginning + // a fresh scale event stream. + final boolean wasInProgress = mInProgress; + mFocusX = focusX; + mFocusY = focusY; + if (!inAnchoredScaleMode() && mInProgress && (span < mMinSpan || configChanged)) { + mListener.onScaleEnd(this); + mInProgress = false; + mInitialSpan = span; + } + if (configChanged) { + mPrevSpanX = mCurrSpanX = spanX; + mPrevSpanY = mCurrSpanY = spanY; + mInitialSpan = mPrevSpan = mCurrSpan = span; + } + + final int minSpan = inAnchoredScaleMode() ? mSpanSlop : mMinSpan; + if (!mInProgress && span >= minSpan && + (wasInProgress || Math.abs(span - mInitialSpan) > mSpanSlop)) { + mPrevSpanX = mCurrSpanX = spanX; + mPrevSpanY = mCurrSpanY = spanY; + mPrevSpan = mCurrSpan = span; + mPrevTime = mCurrTime; + mInProgress = mListener.onScaleBegin(this); + } + + // Handle motion; focal point and span/scale factor are changing. + if (action == MotionEvent.ACTION_MOVE) { + mCurrSpanX = spanX; + mCurrSpanY = spanY; + mCurrSpan = span; + + boolean updatePrev = true; + + if (mInProgress) { + updatePrev = mListener.onScale(this); + } + + if (updatePrev) { + mPrevSpanX = mCurrSpanX; + mPrevSpanY = mCurrSpanY; + mPrevSpan = mCurrSpan; + mPrevTime = mCurrTime; + } + } + + return true; + } + + private boolean inAnchoredScaleMode() { + return mAnchoredScaleMode != ANCHORED_SCALE_MODE_NONE; + } + + /** + * Set whether the associated {@link OnScaleGestureListener} should receive onScale callbacks + * when the user performs a doubleTap followed by a swipe. Note that this is enabled by default + * if the app targets API 19 and newer. + * @param scales true to enable quick scaling, false to disable + */ + public void setQuickScaleEnabled(boolean scales) { + mQuickScaleEnabled = scales; + if (mQuickScaleEnabled && mGestureDetector == null) { + GestureDetector.SimpleOnGestureListener gestureListener = + new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onDoubleTap(MotionEvent e) { + // Double tap: start watching for a swipe + mAnchoredScaleStartX = e.getX(); + mAnchoredScaleStartY = e.getY(); + mAnchoredScaleMode = ANCHORED_SCALE_MODE_DOUBLE_TAP; + return true; + } + }; + mGestureDetector = new GestureDetector(mContext, gestureListener, mHandler); + } + } + + /** + * Return whether the quick scale gesture, in which the user performs a double tap followed by a + * swipe, should perform scaling. {@see #setQuickScaleEnabled(boolean)}. + */ + public boolean isQuickScaleEnabled() { + return mQuickScaleEnabled; + } + + /** + * Sets whether the associates {@link OnScaleGestureListener} should receive + * onScale callbacks when the user uses a stylus and presses the button. + * Note that this is enabled by default if the app targets API 23 and newer. + * + * @param scales true to enable stylus scaling, false to disable. + */ + public void setStylusScaleEnabled(boolean scales) { + mStylusScaleEnabled = scales; + } + + /** + * Return whether the stylus scale gesture, in which the user uses a stylus and presses the + * button, should perform scaling. {@see #setStylusScaleEnabled(boolean)} + */ + public boolean isStylusScaleEnabled() { + return mStylusScaleEnabled; + } + + /** + * Returns {@code true} if a scale gesture is in progress. + */ + public boolean isInProgress() { + return mInProgress; + } + + /** + * Get the X coordinate of the current gesture's focal point. + * If a gesture is in progress, the focal point is between + * each of the pointers forming the gesture. + * + * If {@link #isInProgress()} would return false, the result of this + * function is undefined. + * + * @return X coordinate of the focal point in pixels. + */ + public float getFocusX() { + return mFocusX; + } + + /** + * Get the Y coordinate of the current gesture's focal point. + * If a gesture is in progress, the focal point is between + * each of the pointers forming the gesture. + * + * If {@link #isInProgress()} would return false, the result of this + * function is undefined. + * + * @return Y coordinate of the focal point in pixels. + */ + public float getFocusY() { + return mFocusY; + } + + /** + * Return the average distance between each of the pointers forming the + * gesture in progress through the focal point. + * + * @return Distance between pointers in pixels. + */ + public float getCurrentSpan() { + return mCurrSpan; + } + + /** + * Return the average X distance between each of the pointers forming the + * gesture in progress through the focal point. + * + * @return Distance between pointers in pixels. + */ + public float getCurrentSpanX() { + return mCurrSpanX; + } + + /** + * Return the average Y distance between each of the pointers forming the + * gesture in progress through the focal point. + * + * @return Distance between pointers in pixels. + */ + public float getCurrentSpanY() { + return mCurrSpanY; + } + + /** + * Return the previous average distance between each of the pointers forming the + * gesture in progress through the focal point. + * + * @return Previous distance between pointers in pixels. + */ + public float getPreviousSpan() { + return mPrevSpan; + } + + /** + * Return the previous average X distance between each of the pointers forming the + * gesture in progress through the focal point. + * + * @return Previous distance between pointers in pixels. + */ + public float getPreviousSpanX() { + return mPrevSpanX; + } + + /** + * Return the previous average Y distance between each of the pointers forming the + * gesture in progress through the focal point. + * + * @return Previous distance between pointers in pixels. + */ + public float getPreviousSpanY() { + return mPrevSpanY; + } + + /** + * Return the scaling factor from the previous scale event to the current + * event. This value is defined as + * ({@link #getCurrentSpan()} / {@link #getPreviousSpan()}). + * + * @return The current scaling factor. + */ + public float getScaleFactor() { + if (inAnchoredScaleMode()) { + // Drag is moving up; the further away from the gesture + // start, the smaller the span should be, the closer, + // the larger the span, and therefore the larger the scale + final boolean scaleUp = + (mEventBeforeOrAboveStartingGestureEvent && (mCurrSpan < mPrevSpan)) || + (!mEventBeforeOrAboveStartingGestureEvent && (mCurrSpan > mPrevSpan)); + final float spanDiff = (Math.abs(1 - (mCurrSpan / mPrevSpan)) * SCALE_FACTOR); + return mPrevSpan <= mSpanSlop ? 1 : scaleUp ? (1 + spanDiff) : (1 - spanDiff); + } + return mPrevSpan > 0 ? mCurrSpan / mPrevSpan : 1; + } + + /** + * Return the time difference in milliseconds between the previous + * accepted scaling event and the current scaling event. + * + * @return Time difference since the last scaling event in milliseconds. + */ + public long getTimeDelta() { + return mCurrTime - mPrevTime; + } + + /** + * Return the event time of the current event being processed. + * + * @return Current event time in milliseconds. + */ + public long getEventTime() { + return mCurrTime; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt new file mode 100644 index 00000000..cb8adc77 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/TapGestureHandler.kt @@ -0,0 +1,168 @@ +package com.swmansion.gesturehandler.core + +import android.os.Handler +import android.os.Looper +import android.view.MotionEvent +import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerX +import com.swmansion.gesturehandler.core.GestureUtils.getLastPointerY +import kotlin.math.abs + +class TapGestureHandler : GestureHandler() { + private var maxDeltaX = MAX_VALUE_IGNORE + private var maxDeltaY = MAX_VALUE_IGNORE + private var maxDistSq = MAX_VALUE_IGNORE + private var maxDurationMs = DEFAULT_MAX_DURATION_MS + private var maxDelayMs = DEFAULT_MAX_DELAY_MS + private var numberOfTaps = DEFAULT_NUMBER_OF_TAPS + private var minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS + private var currentMaxNumberOfPointers = 1 + private var startX = 0f + private var startY = 0f + private var offsetX = 0f + private var offsetY = 0f + private var lastX = 0f + private var lastY = 0f + private var handler: Handler? = null + private var tapsSoFar = 0 + private val failDelayed = Runnable { fail() } + + init { + setShouldCancelWhenOutside(true) + } + + override fun resetConfig() { + super.resetConfig() + maxDeltaX = MAX_VALUE_IGNORE + maxDeltaY = MAX_VALUE_IGNORE + maxDistSq = MAX_VALUE_IGNORE + maxDurationMs = DEFAULT_MAX_DURATION_MS + maxDelayMs = DEFAULT_MAX_DELAY_MS + numberOfTaps = DEFAULT_NUMBER_OF_TAPS + minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS + } + + fun setNumberOfTaps(numberOfTaps: Int) = apply { + this.numberOfTaps = numberOfTaps + } + + fun setMaxDelayMs(maxDelayMs: Long) = apply { + this.maxDelayMs = maxDelayMs + } + + fun setMaxDurationMs(maxDurationMs: Long) = apply { + this.maxDurationMs = maxDurationMs + } + + fun setMaxDx(deltaX: Float) = apply { + maxDeltaX = deltaX + } + + fun setMaxDy(deltaY: Float) = apply { + maxDeltaY = deltaY + } + + fun setMaxDist(maxDist: Float) = apply { + maxDistSq = maxDist * maxDist + } + + fun setMinNumberOfPointers(minNumberOfPointers: Int) = apply { + this.minNumberOfPointers = minNumberOfPointers + } + + private fun startTap() { + if (handler == null) { + handler = Handler(Looper.getMainLooper()) // TODO: lazy init (handle else branch correctly) + } else { + handler!!.removeCallbacksAndMessages(null) + } + handler!!.postDelayed(failDelayed, maxDurationMs) + } + + private fun endTap() { + if (handler == null) { + handler = Handler(Looper.getMainLooper()) + } else { + handler!!.removeCallbacksAndMessages(null) + } + if (++tapsSoFar == numberOfTaps && currentMaxNumberOfPointers >= minNumberOfPointers) { + activate() + } else { + handler!!.postDelayed(failDelayed, maxDelayMs) + } + } + + private fun shouldFail(): Boolean { + val dx = lastX - startX + offsetX + if (maxDeltaX != MAX_VALUE_IGNORE && abs(dx) > maxDeltaX) { + return true + } + val dy = lastY - startY + offsetY + if (maxDeltaY != MAX_VALUE_IGNORE && abs(dy) > maxDeltaY) { + return true + } + val dist = dy * dy + dx * dx + return maxDistSq != MAX_VALUE_IGNORE && dist > maxDistSq + } + + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + val state = state + val action = sourceEvent.actionMasked + if (state == STATE_UNDETERMINED) { + offsetX = 0f + offsetY = 0f + startX = getLastPointerX(sourceEvent, true) + startY = getLastPointerY(sourceEvent, true) + } + if (action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_POINTER_DOWN) { + offsetX += lastX - startX + offsetY += lastY - startY + lastX = getLastPointerX(sourceEvent, true) + lastY = getLastPointerY(sourceEvent, true) + startX = lastX + startY = lastY + } else { + lastX = getLastPointerX(sourceEvent, true) + lastY = getLastPointerY(sourceEvent, true) + } + if (currentMaxNumberOfPointers < sourceEvent.pointerCount) { + currentMaxNumberOfPointers = sourceEvent.pointerCount + } + if (shouldFail()) { + fail() + } else if (state == STATE_UNDETERMINED) { + if (action == MotionEvent.ACTION_DOWN) { + begin() + } + startTap() + } else if (state == STATE_BEGAN) { + if (action == MotionEvent.ACTION_UP) { + endTap() + } else if (action == MotionEvent.ACTION_DOWN) { + startTap() + } + } + } + + override fun activate(force: Boolean) { + super.activate(force) + end() + } + + override fun onCancel() { + handler?.removeCallbacksAndMessages(null) + } + + override fun onReset() { + tapsSoFar = 0 + currentMaxNumberOfPointers = 0 + handler?.removeCallbacksAndMessages(null) + } + + companion object { + private const val MAX_VALUE_IGNORE = Float.MIN_VALUE + private const val DEFAULT_MAX_DURATION_MS: Long = 500 + private const val DEFAULT_MAX_DELAY_MS: Long = 200 + private const val DEFAULT_NUMBER_OF_TAPS = 1 + private const val DEFAULT_MIN_NUMBER_OF_POINTERS = 1 + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt new file mode 100644 index 00000000..c8069f3e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/ViewConfigurationHelper.kt @@ -0,0 +1,10 @@ +package com.swmansion.gesturehandler.core + +import android.view.View +import android.view.ViewGroup + +interface ViewConfigurationHelper { + fun getPointerEventsConfigForView(view: View): PointerEventsConfig + fun getChildInDrawingOrderAtIndex(parent: ViewGroup, index: Int): View + fun isViewClippingChildren(view: ViewGroup): Boolean +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt new file mode 100644 index 00000000..5f00002d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt @@ -0,0 +1,11 @@ +package com.swmansion.gesturehandler.react + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.modules.core.DeviceEventManagerModule +import com.facebook.react.uimanager.UIManagerModule + +val ReactContext.deviceEventEmitter: DeviceEventManagerModule.RCTDeviceEventEmitter + get() = this.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java) + +val ReactContext.UIManager: UIManagerModule + get() = this.getNativeModule(UIManagerModule::class.java)!! diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt new file mode 100644 index 00000000..db5001b5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt @@ -0,0 +1,386 @@ +package com.swmansion.gesturehandler.react + +import android.annotation.SuppressLint +import android.annotation.TargetApi +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.Color +import android.graphics.drawable.Drawable +import android.graphics.drawable.LayerDrawable +import android.graphics.drawable.PaintDrawable +import android.graphics.drawable.RippleDrawable +import android.graphics.drawable.ShapeDrawable +import android.graphics.drawable.shapes.RectShape +import android.os.Build +import android.util.TypedValue +import android.view.MotionEvent +import android.view.View +import android.view.View.OnClickListener +import android.view.ViewGroup +import androidx.core.view.children +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.uimanager.PixelUtil +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.ViewGroupManager +import com.facebook.react.uimanager.ViewManagerDelegate +import com.facebook.react.uimanager.ViewProps +import com.facebook.react.uimanager.annotations.ReactProp +import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerDelegate +import com.facebook.react.viewmanagers.RNGestureHandlerButtonManagerInterface +import com.swmansion.gesturehandler.core.NativeViewGestureHandler +import com.swmansion.gesturehandler.react.RNGestureHandlerButtonViewManager.ButtonViewGroup + +@ReactModule(name = RNGestureHandlerButtonViewManager.REACT_CLASS) +class RNGestureHandlerButtonViewManager : ViewGroupManager(), RNGestureHandlerButtonManagerInterface { + private val mDelegate: ViewManagerDelegate + + init { + mDelegate = RNGestureHandlerButtonManagerDelegate(this) + } + + override fun getName() = REACT_CLASS + + public override fun createViewInstance(context: ThemedReactContext) = ButtonViewGroup(context) + + @TargetApi(Build.VERSION_CODES.M) + @ReactProp(name = "foreground") + override fun setForeground(view: ButtonViewGroup, useDrawableOnForeground: Boolean) { + view.useDrawableOnForeground = useDrawableOnForeground + } + + @ReactProp(name = "borderless") + override fun setBorderless(view: ButtonViewGroup, useBorderlessDrawable: Boolean) { + view.useBorderlessDrawable = useBorderlessDrawable + } + + @ReactProp(name = "enabled") + override fun setEnabled(view: ButtonViewGroup, enabled: Boolean) { + view.isEnabled = enabled + } + + @ReactProp(name = ViewProps.BORDER_RADIUS) + override fun setBorderRadius(view: ButtonViewGroup, borderRadius: Float) { + view.borderRadius = borderRadius + } + + @ReactProp(name = "rippleColor") + override fun setRippleColor(view: ButtonViewGroup, rippleColor: Int?) { + view.rippleColor = rippleColor + } + + @ReactProp(name = "rippleRadius") + override fun setRippleRadius(view: ButtonViewGroup, rippleRadius: Int) { + view.rippleRadius = rippleRadius + } + + @ReactProp(name = "exclusive") + override fun setExclusive(view: ButtonViewGroup, exclusive: Boolean) { + view.exclusive = exclusive + } + + @ReactProp(name = "touchSoundDisabled") + override fun setTouchSoundDisabled(view: ButtonViewGroup, touchSoundDisabled: Boolean) { + view.isSoundEffectsEnabled = !touchSoundDisabled + } + + override fun onAfterUpdateTransaction(view: ButtonViewGroup) { + view.updateBackground() + } + + override fun getDelegate(): ViewManagerDelegate? { + return mDelegate + } + + class ButtonViewGroup(context: Context?) : + ViewGroup(context), + NativeViewGestureHandler.NativeViewGestureHandlerHook { + // Using object because of handling null representing no value set. + var rippleColor: Int? = null + set(color) = withBackgroundUpdate { + field = color + } + + var rippleRadius: Int? = null + set(radius) = withBackgroundUpdate { + field = radius + } + var useDrawableOnForeground = false + set(useForeground) = withBackgroundUpdate { + field = useForeground + } + var useBorderlessDrawable = false + var borderRadius = 0f + set(radius) = withBackgroundUpdate { + field = radius * resources.displayMetrics.density + } + var exclusive = true + + private var _backgroundColor = Color.TRANSPARENT + private var needBackgroundUpdate = false + private var lastEventTime = -1L + private var lastAction = -1 + + var isTouched = false + + init { + // we attach empty click listener to trigger tap sounds (see View#performClick()) + setOnClickListener(dummyClickListener) + isClickable = true + isFocusable = true + needBackgroundUpdate = true + } + + private inline fun withBackgroundUpdate(block: () -> Unit) { + block() + needBackgroundUpdate = true + } + + override fun setBackgroundColor(color: Int) = withBackgroundUpdate { + _backgroundColor = color + } + + override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { + if (super.onInterceptTouchEvent(ev)) { + return true + } + // We call `onTouchEvent` and wait until button changes state to `pressed`, if it's pressed + // we return true so that the gesture handler can activate. + onTouchEvent(ev) + return isPressed + } + + /** + * Buttons in RN are wrapped in NativeViewGestureHandler which manages + * calling onTouchEvent after activation of the handler. Problem is, in order to verify that + * underlying button implementation is interested in receiving touches we have to call onTouchEvent + * and check if button is pressed. + * + * This leads to invoking onTouchEvent twice which isn't idempotent in View - it calls OnClickListener + * and plays sound effect if OnClickListener was set. + * + * To mitigate this behavior we use lastEventTime and lastAction variables to check that we already handled + * the event in [onInterceptTouchEvent]. We assume here that different events + * will have different event times or actions. + * Events with same event time can occur on some devices for different actions. + * (e.g. move and up in one gesture; move and cancel) + * + * Reference: + * [com.swmansion.gesturehandler.NativeViewGestureHandler.onHandle] */ + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent): Boolean { + if (event.action == MotionEvent.ACTION_CANCEL) { + tryFreeingResponder() + } + + val eventTime = event.eventTime + val action = event.action + // always true when lastEventTime or lastAction have default value (-1) + if (lastEventTime != eventTime || lastAction != action) { + lastEventTime = eventTime + lastAction = action + return super.onTouchEvent(event) + } + return false + } + + fun updateBackground() { + if (!needBackgroundUpdate) { + return + } + needBackgroundUpdate = false + + if (_backgroundColor == Color.TRANSPARENT) { + // reset background + background = null + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + // reset foreground + foreground = null + } + + val selectable = createSelectableDrawable() + + if (borderRadius != 0f) { + // Radius-connected lines below ought to be considered + // as a temporary solution. It do not allow to set + // different radius on each corner. However, I suppose it's fairly + // fine for button-related use cases. + // Therefore it might be used as long as: + // 1. ReactViewManager is not a generic class with a possibility to handle another ViewGroup + // 2. There's no way to force native behavior of ReactViewGroup's superclass's onTouchEvent + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && selectable is RippleDrawable) { + val mask = PaintDrawable(Color.WHITE) + mask.setCornerRadius(borderRadius) + selectable.setDrawableByLayerId(android.R.id.mask, mask) + } + } + + if (useDrawableOnForeground && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + foreground = selectable + if (_backgroundColor != Color.TRANSPARENT) { + setBackgroundColor(_backgroundColor) + } + } else if (_backgroundColor == Color.TRANSPARENT && rippleColor == null) { + background = selectable + } else { + val colorDrawable = PaintDrawable(_backgroundColor) + + if (borderRadius != 0f) { + colorDrawable.setCornerRadius(borderRadius) + } + + val layerDrawable = LayerDrawable(arrayOf(colorDrawable, selectable)) + background = layerDrawable + } + } + + private fun createSelectableDrawable(): Drawable { + // TODO: remove once support for RN 0.63 is dropped, since 0.64 minSdkVersion is 21 + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + context.theme.resolveAttribute(android.R.attr.selectableItemBackground, resolveOutValue, true) + @Suppress("Deprecation") + return resources.getDrawable(resolveOutValue.resourceId) + } + + val states = arrayOf(intArrayOf(android.R.attr.state_enabled)) + val rippleRadius = rippleRadius + val colorStateList = if (rippleColor != null) { + val colors = intArrayOf(rippleColor!!) + ColorStateList(states, colors) + } else { + // if rippleColor is null, reapply the default color + context.theme.resolveAttribute(android.R.attr.colorControlHighlight, resolveOutValue, true) + val colors = intArrayOf(resolveOutValue.data) + ColorStateList(states, colors) + } + + val drawable = RippleDrawable( + colorStateList, + null, + if (useBorderlessDrawable) null else ShapeDrawable(RectShape()) + ) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && rippleRadius != null) { + drawable.radius = PixelUtil.toPixelFromDIP(rippleRadius.toFloat()).toInt() + } + + return drawable + } + + override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { + // No-op + } + + override fun drawableHotspotChanged(x: Float, y: Float) { + if (touchResponder == null || touchResponder === this) { + super.drawableHotspotChanged(x, y) + } + } + + override fun canBegin(): Boolean { + val isResponder = tryGrabbingResponder() + if (isResponder) { + isTouched = true + } + return isResponder + } + + override fun afterGestureEnd(event: MotionEvent) { + tryFreeingResponder() + isTouched = false + } + + private fun tryFreeingResponder() { + if (touchResponder === this) { + touchResponder = null + soundResponder = this + } + } + + private fun tryGrabbingResponder(): Boolean { + if (isChildTouched()) { + return false + } + + if (touchResponder == null) { + touchResponder = this + return true + } + return if (exclusive) { + touchResponder === this + } else { + !(touchResponder?.exclusive ?: false) + } + } + + private fun isChildTouched(children: Sequence = this.children): Boolean { + for (child in children) { + if (child is ButtonViewGroup && (child.isTouched || child.isPressed)) { + return true + } else if (child is ViewGroup) { + if (isChildTouched(child.children)) { + return true + } + } + } + + return false + } + + override fun performClick(): Boolean { + // don't preform click when a child button is pressed (mainly to prevent sound effect of + // a parent button from playing) + return if (!isChildTouched() && soundResponder == this) { + tryFreeingResponder() + soundResponder = null + super.performClick() + } else { + false + } + } + + override fun setPressed(pressed: Boolean) { + // there is a possibility of this method being called before NativeViewGestureHandler has + // opportunity to call canStart, in that case we need to grab responder in case the gesture + // will activate + // when canStart is called eventually, tryGrabbingResponder will return true if the button + // already is a responder + if (pressed) { + if (tryGrabbingResponder()) { + soundResponder = this + } + } + + // button can be pressed alongside other button if both are non-exclusive and it doesn't have + // any pressed children (to prevent pressing the parent when children is pressed). + val canBePressedAlongsideOther = !exclusive && touchResponder?.exclusive != true && !isChildTouched() + + if (!pressed || touchResponder === this || canBePressedAlongsideOther) { + // we set pressed state only for current responder or any non-exclusive button when responder + // is null or non-exclusive, assuming it doesn't have pressed children + isTouched = pressed + super.setPressed(pressed) + } + if (!pressed && touchResponder === this) { + // if the responder is no longer pressed we release button responder + isTouched = false + } + } + + override fun dispatchDrawableHotspotChanged(x: Float, y: Float) { + // No-op + // by default Viewgroup would pass hotspot change events + } + + companion object { + var resolveOutValue = TypedValue() + var touchResponder: ButtonViewGroup? = null + var soundResponder: ButtonViewGroup? = null + var dummyClickListener = OnClickListener { } + } + } + + companion object { + const val REACT_CLASS = "RNGestureHandlerButton" + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt new file mode 100644 index 00000000..beefe28a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt @@ -0,0 +1,15 @@ +package com.swmansion.gesturehandler.react + +import android.content.Context +import android.util.AttributeSet +import com.facebook.react.ReactRootView + +@Deprecated(message = "Use component instead. Check gesture handler installation instructions in documentation for more information.") +class RNGestureHandlerEnabledRootView : ReactRootView { + constructor(context: Context?) : super(context) {} + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {} + + init { + throw UnsupportedOperationException("Your application is configured to use RNGestureHandlerEnabledRootView which is no longer supported. You can see how to migrate to here: https://docs.swmansion.com/react-native-gesture-handler/docs/guides/migrating-off-rnghenabledroot") + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt new file mode 100644 index 00000000..c2d944cc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt @@ -0,0 +1,77 @@ +// 1. RCTEventEmitter was deprecated in favor of RCTModernEventEmitter interface +// 2. Event#init() with only viewTag was deprecated in favor of two arg c-tor +// 3. Event#receiveEvent() with 3 args was deprecated in favor of 4 args version +// ref: https://github.com/facebook/react-native/commit/2fbbdbb2ce897e8da3f471b08b93f167d566db1d +@file:Suppress("DEPRECATION") + +package com.swmansion.gesturehandler.react + +import androidx.core.util.Pools +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.WritableMap +import com.facebook.react.uimanager.events.Event +import com.facebook.react.uimanager.events.RCTEventEmitter +import com.swmansion.gesturehandler.core.GestureHandler + +class RNGestureHandlerEvent private constructor() : Event() { + private var extraData: WritableMap? = null + private var coalescingKey: Short = 0 + + // On the new architecture, native animated expects event names prefixed with `top` instead of `on`, + // since we know when the native animated node is the target of the event we can use the different + // event name where appropriate. + // TODO: This is a workaround not as solution, but doing this properly would require a total overhaul of + // how GH sends events (which needs to be done, but maybe wait until the RN's apis stop changing) + private var useTopPrefixedName: Boolean = false + + private fun > init( + handler: T, + dataExtractor: RNGestureHandlerEventDataExtractor?, + useNativeAnimatedName: Boolean + ) { + super.init(handler.view!!.id) + extraData = createEventData(handler, dataExtractor) + coalescingKey = handler.eventCoalescingKey + this.useTopPrefixedName = useNativeAnimatedName + } + + override fun onDispose() { + extraData = null + EVENTS_POOL.release(this) + } + + override fun getEventName() = if (useTopPrefixedName) NATIVE_ANIMATED_EVENT_NAME else EVENT_NAME + + override fun canCoalesce() = true + + override fun getCoalescingKey() = coalescingKey + + override fun dispatch(rctEventEmitter: RCTEventEmitter) { + rctEventEmitter.receiveEvent(viewTag, EVENT_NAME, extraData) + } + + companion object { + const val EVENT_NAME = "onGestureHandlerEvent" + const val NATIVE_ANIMATED_EVENT_NAME = "topGestureHandlerEvent" + private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic + private val EVENTS_POOL = Pools.SynchronizedPool(TOUCH_EVENTS_POOL_SIZE) + + fun > obtain( + handler: T, + dataExtractor: RNGestureHandlerEventDataExtractor?, + useTopPrefixedName: Boolean = false + ): RNGestureHandlerEvent = + (EVENTS_POOL.acquire() ?: RNGestureHandlerEvent()).apply { + init(handler, dataExtractor, useTopPrefixedName) + } + + fun > createEventData( + handler: T, + dataExtractor: RNGestureHandlerEventDataExtractor? + ): WritableMap = Arguments.createMap().apply { + dataExtractor?.extractEventData(handler, this) + putInt("handlerTag", handler.tag) + putInt("state", handler.state) + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt new file mode 100644 index 00000000..58e72491 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt @@ -0,0 +1,8 @@ +package com.swmansion.gesturehandler.react + +import com.facebook.react.bridge.WritableMap +import com.swmansion.gesturehandler.core.GestureHandler + +interface RNGestureHandlerEventDataExtractor> { + fun extractEventData(handler: T, eventData: WritableMap) +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt new file mode 100644 index 00000000..2af01ee7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt @@ -0,0 +1,67 @@ +package com.swmansion.gesturehandler.react + +import android.util.SparseArray +import com.facebook.react.bridge.ReadableMap +import com.swmansion.gesturehandler.core.GestureHandler +import com.swmansion.gesturehandler.core.GestureHandlerInteractionController +import com.swmansion.gesturehandler.core.NativeViewGestureHandler + +class RNGestureHandlerInteractionManager : GestureHandlerInteractionController { + private val waitForRelations = SparseArray() + private val simultaneousRelations = SparseArray() + fun dropRelationsForHandlerWithTag(handlerTag: Int) { + waitForRelations.remove(handlerTag) + simultaneousRelations.remove(handlerTag) + } + + private fun convertHandlerTagsArray(config: ReadableMap, key: String): IntArray { + val array = config.getArray(key)!! + return IntArray(array.size()).also { + for (i in it.indices) { + it[i] = array.getInt(i) + } + } + } + + fun configureInteractions(handler: GestureHandler<*>, config: ReadableMap) { + handler.setInteractionController(this) + if (config.hasKey(KEY_WAIT_FOR)) { + val tags = convertHandlerTagsArray(config, KEY_WAIT_FOR) + waitForRelations.put(handler.tag, tags) + } + if (config.hasKey(KEY_SIMULTANEOUS_HANDLERS)) { + val tags = convertHandlerTagsArray(config, KEY_SIMULTANEOUS_HANDLERS) + simultaneousRelations.put(handler.tag, tags) + } + } + + override fun shouldWaitForHandlerFailure(handler: GestureHandler<*>, otherHandler: GestureHandler<*>) = + waitForRelations[handler.tag]?.any { tag -> tag == otherHandler.tag } ?: false + + override fun shouldRequireHandlerToWaitForFailure( + handler: GestureHandler<*>, + otherHandler: GestureHandler<*>, + ) = false + + override fun shouldHandlerBeCancelledBy(handler: GestureHandler<*>, otherHandler: GestureHandler<*>): Boolean { + if (otherHandler is NativeViewGestureHandler) { + return otherHandler.disallowInterruption + } + + return false + } + override fun shouldRecognizeSimultaneously( + handler: GestureHandler<*>, + otherHandler: GestureHandler<*>, + ) = simultaneousRelations[handler.tag]?.any { tag -> tag == otherHandler.tag } ?: false + + fun reset() { + waitForRelations.clear() + simultaneousRelations.clear() + } + + companion object { + private const val KEY_WAIT_FOR = "waitFor" + private const val KEY_SIMULTANEOUS_HANDLERS = "simultaneousHandlers" + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt new file mode 100644 index 00000000..98208b57 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt @@ -0,0 +1,735 @@ +package com.swmansion.gesturehandler.react + +import android.content.Context +import android.util.Log +import android.view.MotionEvent +import com.facebook.react.ReactRootView +import com.facebook.react.bridge.JSApplicationIllegalArgumentException +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.facebook.react.bridge.ReadableMap +import com.facebook.react.bridge.ReadableType +import com.facebook.react.bridge.WritableMap +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.uimanager.PixelUtil +import com.facebook.react.uimanager.events.Event +import com.facebook.soloader.SoLoader +import com.swmansion.common.GestureHandlerStateManager +import com.swmansion.gesturehandler.BuildConfig +import com.swmansion.gesturehandler.ReanimatedEventDispatcher +import com.swmansion.gesturehandler.core.FlingGestureHandler +import com.swmansion.gesturehandler.core.GestureHandler +import com.swmansion.gesturehandler.core.LongPressGestureHandler +import com.swmansion.gesturehandler.core.ManualGestureHandler +import com.swmansion.gesturehandler.core.NativeViewGestureHandler +import com.swmansion.gesturehandler.core.OnTouchEventListener +import com.swmansion.gesturehandler.core.PanGestureHandler +import com.swmansion.gesturehandler.core.PinchGestureHandler +import com.swmansion.gesturehandler.core.RotationGestureHandler +import com.swmansion.gesturehandler.core.TapGestureHandler +import com.swmansion.gesturehandler.dispatchEvent + +// NativeModule.onCatalystInstanceDestroy() was deprecated in favor of NativeModule.invalidate() +// ref: https://github.com/facebook/react-native/commit/18c8417290823e67e211bde241ae9dde27b72f17 + +// UIManagerModule.resolveRootTagFromReactTag() was deprecated and will be removed in the next RN release +// ref: https://github.com/facebook/react-native/commit/acbf9e18ea666b07c1224a324602a41d0a66985e +@Suppress("DEPRECATION") +@ReactModule(name = RNGestureHandlerModule.MODULE_NAME) +class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : + ReactContextBaseJavaModule(reactContext), GestureHandlerStateManager { + private abstract class HandlerFactory> : RNGestureHandlerEventDataExtractor { + abstract val type: Class + abstract val name: String + abstract fun create(context: Context?): T + open fun configure(handler: T, config: ReadableMap) { + handler.resetConfig() + if (config.hasKey(KEY_SHOULD_CANCEL_WHEN_OUTSIDE)) { + handler.setShouldCancelWhenOutside(config.getBoolean(KEY_SHOULD_CANCEL_WHEN_OUTSIDE)) + } + if (config.hasKey(KEY_ENABLED)) { + handler.setEnabled(config.getBoolean(KEY_ENABLED)) + } + if (config.hasKey(KEY_HIT_SLOP)) { + handleHitSlopProperty(handler, config) + } + if (config.hasKey(KEY_NEEDS_POINTER_DATA)) { + handler.needsPointerData = config.getBoolean(KEY_NEEDS_POINTER_DATA) + } + if (config.hasKey(KEY_MANUAL_ACTIVATION)) { + handler.setManualActivation(config.getBoolean(KEY_MANUAL_ACTIVATION)) + } + } + + override fun extractEventData(handler: T, eventData: WritableMap) { + eventData.putDouble("numberOfPointers", handler.numberOfPointers.toDouble()) + } + } + + private class NativeViewGestureHandlerFactory : HandlerFactory() { + override val type = NativeViewGestureHandler::class.java + override val name = "NativeViewGestureHandler" + + override fun create(context: Context?): NativeViewGestureHandler { + return NativeViewGestureHandler() + } + + override fun configure(handler: NativeViewGestureHandler, config: ReadableMap) { + super.configure(handler, config) + if (config.hasKey(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START)) { + handler.setShouldActivateOnStart( + config.getBoolean(KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START) + ) + } + if (config.hasKey(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) { + handler.setDisallowInterruption(config.getBoolean(KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION)) + } + } + + override fun extractEventData(handler: NativeViewGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + eventData.putBoolean("pointerInside", handler.isWithinBounds) + } + } + + private class TapGestureHandlerFactory : HandlerFactory() { + override val type = TapGestureHandler::class.java + override val name = "TapGestureHandler" + + override fun create(context: Context?): TapGestureHandler { + return TapGestureHandler() + } + + override fun configure(handler: TapGestureHandler, config: ReadableMap) { + super.configure(handler, config) + if (config.hasKey(KEY_TAP_NUMBER_OF_TAPS)) { + handler.setNumberOfTaps(config.getInt(KEY_TAP_NUMBER_OF_TAPS)) + } + if (config.hasKey(KEY_TAP_MAX_DURATION_MS)) { + handler.setMaxDurationMs(config.getInt(KEY_TAP_MAX_DURATION_MS).toLong()) + } + if (config.hasKey(KEY_TAP_MAX_DELAY_MS)) { + handler.setMaxDelayMs(config.getInt(KEY_TAP_MAX_DELAY_MS).toLong()) + } + if (config.hasKey(KEY_TAP_MAX_DELTA_X)) { + handler.setMaxDx(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DELTA_X))) + } + if (config.hasKey(KEY_TAP_MAX_DELTA_Y)) { + handler.setMaxDy(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DELTA_Y))) + } + if (config.hasKey(KEY_TAP_MAX_DIST)) { + handler.setMaxDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_TAP_MAX_DIST))) + } + if (config.hasKey(KEY_TAP_MIN_POINTERS)) { + handler.setMinNumberOfPointers(config.getInt(KEY_TAP_MIN_POINTERS)) + } + } + + override fun extractEventData(handler: TapGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + with(eventData) { + putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble()) + putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble()) + putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowX).toDouble()) + putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowY).toDouble()) + } + } + } + + private class LongPressGestureHandlerFactory : HandlerFactory() { + override val type = LongPressGestureHandler::class.java + override val name = "LongPressGestureHandler" + + override fun create(context: Context?): LongPressGestureHandler { + return LongPressGestureHandler((context)!!) + } + + override fun configure(handler: LongPressGestureHandler, config: ReadableMap) { + super.configure(handler, config) + if (config.hasKey(KEY_LONG_PRESS_MIN_DURATION_MS)) { + handler.minDurationMs = config.getInt(KEY_LONG_PRESS_MIN_DURATION_MS).toLong() + } + if (config.hasKey(KEY_LONG_PRESS_MAX_DIST)) { + handler.setMaxDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_LONG_PRESS_MAX_DIST))) + } + } + + override fun extractEventData(handler: LongPressGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + with(eventData) { + putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble()) + putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble()) + putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowX).toDouble()) + putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowY).toDouble()) + putInt("duration", handler.duration) + } + } + } + + private class PanGestureHandlerFactory : HandlerFactory() { + override val type = PanGestureHandler::class.java + override val name = "PanGestureHandler" + + override fun create(context: Context?): PanGestureHandler { + return PanGestureHandler(context) + } + + override fun configure(handler: PanGestureHandler, config: ReadableMap) { + super.configure(handler, config) + var hasCustomActivationCriteria = false + if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_X_START)) { + handler.setActiveOffsetXStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_X_START))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_X_END)) { + handler.setActiveOffsetXEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_X_END))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_X_START)) { + handler.setFailOffsetXStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_X_START))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_X_END)) { + handler.setFailOffsetXEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_X_END))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_Y_START)) { + handler.setActiveOffsetYStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_Y_START))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_ACTIVE_OFFSET_Y_END)) { + handler.setActiveOffsetYEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_ACTIVE_OFFSET_Y_END))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_Y_START)) { + handler.setFailOffsetYStart(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_Y_START))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_FAIL_OFFSET_RANGE_Y_END)) { + handler.setFailOffsetYEnd(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_FAIL_OFFSET_RANGE_Y_END))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_MIN_VELOCITY)) { + // This value is actually in DPs/ms, but we can use the same function as for converting + // from DPs to pixels as the unit we're converting is in the numerator + handler.setMinVelocity(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_MIN_VELOCITY_X)) { + handler.setMinVelocityX(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY_X))) + hasCustomActivationCriteria = true + } + if (config.hasKey(KEY_PAN_MIN_VELOCITY_Y)) { + handler.setMinVelocityY(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_VELOCITY_Y))) + hasCustomActivationCriteria = true + } + + // PanGestureHandler sets minDist by default, if there are custom criteria specified we want + // to reset that setting and use provided criteria instead. + if (config.hasKey(KEY_PAN_MIN_DIST)) { + handler.setMinDist(PixelUtil.toPixelFromDIP(config.getDouble(KEY_PAN_MIN_DIST))) + } else if (hasCustomActivationCriteria) { + handler.setMinDist(Float.MAX_VALUE) + } + if (config.hasKey(KEY_PAN_MIN_POINTERS)) { + handler.setMinPointers(config.getInt(KEY_PAN_MIN_POINTERS)) + } + if (config.hasKey(KEY_PAN_MAX_POINTERS)) { + handler.setMaxPointers(config.getInt(KEY_PAN_MAX_POINTERS)) + } + if (config.hasKey(KEY_PAN_AVG_TOUCHES)) { + handler.setAverageTouches(config.getBoolean(KEY_PAN_AVG_TOUCHES)) + } + if (config.hasKey(KEY_PAN_ACTIVATE_AFTER_LONG_PRESS)) { + handler.setActivateAfterLongPress(config.getInt(KEY_PAN_ACTIVATE_AFTER_LONG_PRESS).toLong()) + } + } + + override fun extractEventData(handler: PanGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + with(eventData) { + putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble()) + putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble()) + putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowX).toDouble()) + putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowY).toDouble()) + putDouble("translationX", PixelUtil.toDIPFromPixel(handler.translationX).toDouble()) + putDouble("translationY", PixelUtil.toDIPFromPixel(handler.translationY).toDouble()) + putDouble("velocityX", PixelUtil.toDIPFromPixel(handler.velocityX).toDouble()) + putDouble("velocityY", PixelUtil.toDIPFromPixel(handler.velocityY).toDouble()) + } + } + } + + private class PinchGestureHandlerFactory : HandlerFactory() { + override val type = PinchGestureHandler::class.java + override val name = "PinchGestureHandler" + + override fun create(context: Context?): PinchGestureHandler { + return PinchGestureHandler() + } + + override fun extractEventData(handler: PinchGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + with(eventData) { + putDouble("scale", handler.scale) + putDouble("focalX", PixelUtil.toDIPFromPixel(handler.focalPointX).toDouble()) + putDouble("focalY", PixelUtil.toDIPFromPixel(handler.focalPointY).toDouble()) + putDouble("velocity", handler.velocity) + } + } + } + + private class FlingGestureHandlerFactory : HandlerFactory() { + override val type = FlingGestureHandler::class.java + override val name = "FlingGestureHandler" + + override fun create(context: Context?): FlingGestureHandler { + return FlingGestureHandler() + } + + override fun configure(handler: FlingGestureHandler, config: ReadableMap) { + super.configure(handler, config) + if (config.hasKey(KEY_NUMBER_OF_POINTERS)) { + handler.numberOfPointersRequired = config.getInt(KEY_NUMBER_OF_POINTERS) + } + if (config.hasKey(KEY_DIRECTION)) { + handler.direction = config.getInt(KEY_DIRECTION) + } + } + + override fun extractEventData(handler: FlingGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + with(eventData) { + putDouble("x", PixelUtil.toDIPFromPixel(handler.lastRelativePositionX).toDouble()) + putDouble("y", PixelUtil.toDIPFromPixel(handler.lastRelativePositionY).toDouble()) + putDouble("absoluteX", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowX).toDouble()) + putDouble("absoluteY", PixelUtil.toDIPFromPixel(handler.lastPositionInWindowY).toDouble()) + } + } + } + + private class RotationGestureHandlerFactory : HandlerFactory() { + override val type = RotationGestureHandler::class.java + override val name = "RotationGestureHandler" + + override fun create(context: Context?): RotationGestureHandler { + return RotationGestureHandler() + } + + override fun extractEventData(handler: RotationGestureHandler, eventData: WritableMap) { + super.extractEventData(handler, eventData) + with(eventData) { + putDouble("rotation", handler.rotation) + putDouble("anchorX", PixelUtil.toDIPFromPixel(handler.anchorX).toDouble()) + putDouble("anchorY", PixelUtil.toDIPFromPixel(handler.anchorY).toDouble()) + putDouble("velocity", handler.velocity) + } + } + } + + private class ManualGestureHandlerFactory : HandlerFactory() { + override val type = ManualGestureHandler::class.java + override val name = "ManualGestureHandler" + + override fun create(context: Context?): ManualGestureHandler { + return ManualGestureHandler() + } + } + + private val eventListener = object : OnTouchEventListener { + override fun > onHandlerUpdate(handler: T, event: MotionEvent) { + this@RNGestureHandlerModule.onHandlerUpdate(handler) + } + + override fun > onStateChange(handler: T, newState: Int, oldState: Int) { + this@RNGestureHandlerModule.onStateChange(handler, newState, oldState) + } + + override fun > onTouchEvent(handler: T) { + this@RNGestureHandlerModule.onTouchEvent(handler) + } + } + private val handlerFactories = arrayOf>( + NativeViewGestureHandlerFactory(), + TapGestureHandlerFactory(), + LongPressGestureHandlerFactory(), + PanGestureHandlerFactory(), + PinchGestureHandlerFactory(), + RotationGestureHandlerFactory(), + FlingGestureHandlerFactory(), + ManualGestureHandlerFactory(), + ) + val registry: RNGestureHandlerRegistry = RNGestureHandlerRegistry() + private val interactionManager = RNGestureHandlerInteractionManager() + private val roots: MutableList = ArrayList() + private val reanimatedEventDispatcher = ReanimatedEventDispatcher() + override fun getName() = MODULE_NAME + + @ReactMethod + @Suppress("UNCHECKED_CAST") + fun > createGestureHandler( + handlerName: String, + handlerTag: Int, + config: ReadableMap, + ) { + for (handlerFactory in handlerFactories as Array>) { + if (handlerFactory.name == handlerName) { + val handler = handlerFactory.create(reactApplicationContext).apply { + tag = handlerTag + setOnTouchEventListener(eventListener) + } + registry.registerHandler(handler) + interactionManager.configureInteractions(handler, config) + handlerFactory.configure(handler, config) + return + } + } + throw JSApplicationIllegalArgumentException("Invalid handler name $handlerName") + } + + @ReactMethod + fun attachGestureHandler(handlerTag: Int, viewTag: Int, actionType: Int) { + // We don't have to handle view flattening in any special way since handlers are stored as + // a map: viewTag -> [handler]. If the view with attached handlers was to be flattened + // then that viewTag simply wouldn't be visited when traversing the view hierarchy in the + // Orchestrator effectively ignoring all handlers attached to flattened views. + if (!registry.attachHandlerToView(handlerTag, viewTag, actionType)) { + throw JSApplicationIllegalArgumentException("Handler with tag $handlerTag does not exists") + } + } + + @ReactMethod + @Suppress("UNCHECKED_CAST") + fun > updateGestureHandler(handlerTag: Int, config: ReadableMap) { + val handler = registry.getHandler(handlerTag) as T? + if (handler != null) { + val factory = findFactoryForHandler(handler) + if (factory != null) { + interactionManager.dropRelationsForHandlerWithTag(handlerTag) + interactionManager.configureInteractions(handler, config) + factory.configure(handler, config) + } + } + } + + @ReactMethod + fun dropGestureHandler(handlerTag: Int) { + interactionManager.dropRelationsForHandlerWithTag(handlerTag) + registry.dropHandler(handlerTag) + } + + @ReactMethod + fun handleSetJSResponder(viewTag: Int, blockNativeResponder: Boolean) { + val rootView = findRootHelperForViewAncestor(viewTag) + rootView?.handleSetJSResponder(viewTag, blockNativeResponder) + } + + @ReactMethod + fun handleClearJSResponder() { + } + + override fun setGestureHandlerState(handlerTag: Int, newState: Int) { + registry.getHandler(handlerTag)?.let { handler -> + when (newState) { + GestureHandler.STATE_ACTIVE -> handler.activate(force = true) + GestureHandler.STATE_BEGAN -> handler.begin() + GestureHandler.STATE_END -> handler.end() + GestureHandler.STATE_FAILED -> handler.fail() + GestureHandler.STATE_CANCELLED -> handler.cancel() + } + } + } + + @ReactMethod(isBlockingSynchronousMethod = true) + fun install(): Boolean { + return try { + SoLoader.loadLibrary("gesturehandler") + val jsContext = reactApplicationContext.javaScriptContextHolder + decorateRuntime(jsContext.get()) + true + } catch (exception: Exception) { + Log.w("[RNGestureHandler]", "Could not install JSI bindings.") + false + } + } + + private external fun decorateRuntime(jsiPtr: Long) + + override fun getConstants(): Map { + return mapOf( + "State" to mapOf( + "UNDETERMINED" to GestureHandler.STATE_UNDETERMINED, + "BEGAN" to GestureHandler.STATE_BEGAN, + "ACTIVE" to GestureHandler.STATE_ACTIVE, + "CANCELLED" to GestureHandler.STATE_CANCELLED, + "FAILED" to GestureHandler.STATE_FAILED, + "END" to GestureHandler.STATE_END + ), + "Direction" to mapOf( + "RIGHT" to GestureHandler.DIRECTION_RIGHT, + "LEFT" to GestureHandler.DIRECTION_LEFT, + "UP" to GestureHandler.DIRECTION_UP, + "DOWN" to GestureHandler.DIRECTION_DOWN + ) + ) + } + + override fun onCatalystInstanceDestroy() { + registry.dropAllHandlers() + interactionManager.reset() + synchronized(roots) { + while (roots.isNotEmpty()) { + val sizeBefore: Int = roots.size + val root: RNGestureHandlerRootHelper = roots[0] + root.tearDown() + if (roots.size >= sizeBefore) { + throw IllegalStateException("Expected root helper to get unregistered while tearing down") + } + } + } + super.onCatalystInstanceDestroy() + } + + fun registerRootHelper(root: RNGestureHandlerRootHelper) { + synchronized(roots) { + if (root in roots) { + throw IllegalStateException("Root helper$root already registered") + } + roots.add(root) + } + } + + fun unregisterRootHelper(root: RNGestureHandlerRootHelper) { + synchronized(roots) { roots.remove(root) } + } + + private fun findRootHelperForViewAncestor(viewTag: Int): RNGestureHandlerRootHelper? { + // TODO: remove resolveRootTagFromReactTag as it's deprecated and unavailable on FabricUIManager + val uiManager = reactApplicationContext.UIManager + val rootViewTag = uiManager.resolveRootTagFromReactTag(viewTag) + if (rootViewTag < 1) { + return null + } + synchronized(roots) { + return roots.firstOrNull { + it.rootView is ReactRootView && it.rootView.rootViewTag == rootViewTag + } + } + } + + @Suppress("UNCHECKED_CAST") + private fun > findFactoryForHandler(handler: GestureHandler): HandlerFactory? = + handlerFactories.firstOrNull { it.type == handler.javaClass } as HandlerFactory? + + private fun > onHandlerUpdate(handler: T) { + // triggers onUpdate and onChange callbacks on the JS side + + if (handler.tag < 0) { + // root containers use negative tags, we don't need to dispatch events for them to the JS + return + } + if (handler.state == GestureHandler.STATE_ACTIVE) { + val handlerFactory = findFactoryForHandler(handler) + + if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) { + // Reanimated worklet + val event = RNGestureHandlerEvent.obtain(handler, handlerFactory) + sendEventForReanimated(event) + } else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT) { + // Animated with useNativeDriver: true + val event = RNGestureHandlerEvent.obtain( + handler, + handlerFactory, + useTopPrefixedName = BuildConfig.REACT_NATIVE_MINOR_VERSION >= 71 + ) + sendEventForNativeAnimatedEvent(event) + } else if (handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API) { + // JS function, Animated.event with useNativeDriver: false using old API + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + val data = RNGestureHandlerEvent.createEventData(handler, handlerFactory) + sendEventForDeviceEvent(RNGestureHandlerEvent.EVENT_NAME, data) + } else { + val event = RNGestureHandlerEvent.obtain(handler, handlerFactory) + sendEventForDirectEvent(event) + } + } else if (handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_NEW_API) { + // JS function, Animated.event with useNativeDriver: false using new API + val data = RNGestureHandlerEvent.createEventData(handler, handlerFactory) + sendEventForDeviceEvent(RNGestureHandlerEvent.EVENT_NAME, data) + } + } + } + + private fun > onStateChange(handler: T, newState: Int, oldState: Int) { + // triggers onBegin, onStart, onEnd, onFinalize callbacks on the JS side + + if (handler.tag < 0) { + // root containers use negative tags, we don't need to dispatch events for them to the JS + return + } + val handlerFactory = findFactoryForHandler(handler) + + if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) { + // Reanimated worklet + val event = RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory) + sendEventForReanimated(event) + } else if (handler.actionType == GestureHandler.ACTION_TYPE_NATIVE_ANIMATED_EVENT || + handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API + ) { + // JS function or Animated.event with useNativeDriver: false with old API + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + val data = RNGestureHandlerStateChangeEvent.createEventData(handler, handlerFactory, newState, oldState) + sendEventForDeviceEvent(RNGestureHandlerStateChangeEvent.EVENT_NAME, data) + } else { + val event = RNGestureHandlerStateChangeEvent.obtain(handler, newState, oldState, handlerFactory) + sendEventForDirectEvent(event) + } + } else if (handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_NEW_API) { + // JS function or Animated.event with useNativeDriver: false with new API + val data = RNGestureHandlerStateChangeEvent.createEventData(handler, handlerFactory, newState, oldState) + sendEventForDeviceEvent(RNGestureHandlerStateChangeEvent.EVENT_NAME, data) + } + } + + private fun > onTouchEvent(handler: T) { + // triggers onTouchesDown, onTouchesMove, onTouchesUp, onTouchesCancelled callbacks on the JS side + + if (handler.tag < 0) { + // root containers use negative tags, we don't need to dispatch events for them to the JS + return + } + if (handler.state == GestureHandler.STATE_BEGAN || handler.state == GestureHandler.STATE_ACTIVE || + handler.state == GestureHandler.STATE_UNDETERMINED || handler.view != null + ) { + if (handler.actionType == GestureHandler.ACTION_TYPE_REANIMATED_WORKLET) { + // Reanimated worklet + val event = RNGestureHandlerTouchEvent.obtain(handler) + sendEventForReanimated(event) + } else if (handler.actionType == GestureHandler.ACTION_TYPE_JS_FUNCTION_NEW_API) { + // JS function, Animated.event with useNativeDriver: false with new API + val data = RNGestureHandlerTouchEvent.createEventData(handler) + sendEventForDeviceEvent(RNGestureHandlerEvent.EVENT_NAME, data) + } + } + } + + private fun >sendEventForReanimated(event: T) { + // Delivers the event to Reanimated. + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // Send event directly to Reanimated + reanimatedEventDispatcher.sendEvent(event, reactApplicationContext) + } else { + // In the old architecture, Reanimated subscribes for specific direct events. + sendEventForDirectEvent(event) + } + } + + private fun sendEventForNativeAnimatedEvent(event: RNGestureHandlerEvent) { + // Delivers the event to NativeAnimatedModule. + // TODO: send event directly to NativeAnimated[Turbo]Module + // ReactContext.dispatchEvent is an extension function, depending on the architecture it will + // dispatch event using UIManagerModule or FabricUIManager. + reactApplicationContext.dispatchEvent(event) + } + + private fun >sendEventForDirectEvent(event: T) { + // Delivers the event to JS as a direct event. This method is called only on Paper. + reactApplicationContext.dispatchEvent(event) + } + + private fun sendEventForDeviceEvent(eventName: String, data: WritableMap) { + // Delivers the event to JS as a device event. + reactApplicationContext.deviceEventEmitter.emit(eventName, data) + } + + companion object { + const val MODULE_NAME = "RNGestureHandlerModule" + private const val KEY_SHOULD_CANCEL_WHEN_OUTSIDE = "shouldCancelWhenOutside" + private const val KEY_ENABLED = "enabled" + private const val KEY_NEEDS_POINTER_DATA = "needsPointerData" + private const val KEY_MANUAL_ACTIVATION = "manualActivation" + private const val KEY_HIT_SLOP = "hitSlop" + private const val KEY_HIT_SLOP_LEFT = "left" + private const val KEY_HIT_SLOP_TOP = "top" + private const val KEY_HIT_SLOP_RIGHT = "right" + private const val KEY_HIT_SLOP_BOTTOM = "bottom" + private const val KEY_HIT_SLOP_VERTICAL = "vertical" + private const val KEY_HIT_SLOP_HORIZONTAL = "horizontal" + private const val KEY_HIT_SLOP_WIDTH = "width" + private const val KEY_HIT_SLOP_HEIGHT = "height" + private const val KEY_NATIVE_VIEW_SHOULD_ACTIVATE_ON_START = "shouldActivateOnStart" + private const val KEY_NATIVE_VIEW_DISALLOW_INTERRUPTION = "disallowInterruption" + private const val KEY_TAP_NUMBER_OF_TAPS = "numberOfTaps" + private const val KEY_TAP_MAX_DURATION_MS = "maxDurationMs" + private const val KEY_TAP_MAX_DELAY_MS = "maxDelayMs" + private const val KEY_TAP_MAX_DELTA_X = "maxDeltaX" + private const val KEY_TAP_MAX_DELTA_Y = "maxDeltaY" + private const val KEY_TAP_MAX_DIST = "maxDist" + private const val KEY_TAP_MIN_POINTERS = "minPointers" + private const val KEY_LONG_PRESS_MIN_DURATION_MS = "minDurationMs" + private const val KEY_LONG_PRESS_MAX_DIST = "maxDist" + private const val KEY_PAN_ACTIVE_OFFSET_X_START = "activeOffsetXStart" + private const val KEY_PAN_ACTIVE_OFFSET_X_END = "activeOffsetXEnd" + private const val KEY_PAN_FAIL_OFFSET_RANGE_X_START = "failOffsetXStart" + private const val KEY_PAN_FAIL_OFFSET_RANGE_X_END = "failOffsetXEnd" + private const val KEY_PAN_ACTIVE_OFFSET_Y_START = "activeOffsetYStart" + private const val KEY_PAN_ACTIVE_OFFSET_Y_END = "activeOffsetYEnd" + private const val KEY_PAN_FAIL_OFFSET_RANGE_Y_START = "failOffsetYStart" + private const val KEY_PAN_FAIL_OFFSET_RANGE_Y_END = "failOffsetYEnd" + private const val KEY_PAN_MIN_DIST = "minDist" + private const val KEY_PAN_MIN_VELOCITY = "minVelocity" + private const val KEY_PAN_MIN_VELOCITY_X = "minVelocityX" + private const val KEY_PAN_MIN_VELOCITY_Y = "minVelocityY" + private const val KEY_PAN_MIN_POINTERS = "minPointers" + private const val KEY_PAN_MAX_POINTERS = "maxPointers" + private const val KEY_PAN_AVG_TOUCHES = "avgTouches" + private const val KEY_PAN_ACTIVATE_AFTER_LONG_PRESS = "activateAfterLongPress" + private const val KEY_NUMBER_OF_POINTERS = "numberOfPointers" + private const val KEY_DIRECTION = "direction" + + private fun handleHitSlopProperty(handler: GestureHandler<*>, config: ReadableMap) { + if (config.getType(KEY_HIT_SLOP) == ReadableType.Number) { + val hitSlop = PixelUtil.toPixelFromDIP(config.getDouble(KEY_HIT_SLOP)) + handler.setHitSlop(hitSlop, hitSlop, hitSlop, hitSlop, GestureHandler.HIT_SLOP_NONE, GestureHandler.HIT_SLOP_NONE) + } else { + val hitSlop = config.getMap(KEY_HIT_SLOP)!! + var left = GestureHandler.HIT_SLOP_NONE + var top = GestureHandler.HIT_SLOP_NONE + var right = GestureHandler.HIT_SLOP_NONE + var bottom = GestureHandler.HIT_SLOP_NONE + var width = GestureHandler.HIT_SLOP_NONE + var height = GestureHandler.HIT_SLOP_NONE + if (hitSlop.hasKey(KEY_HIT_SLOP_HORIZONTAL)) { + val horizontalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HORIZONTAL)) + right = horizontalPad + left = right + } + if (hitSlop.hasKey(KEY_HIT_SLOP_VERTICAL)) { + val verticalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_VERTICAL)) + bottom = verticalPad + top = bottom + } + if (hitSlop.hasKey(KEY_HIT_SLOP_LEFT)) { + left = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_LEFT)) + } + if (hitSlop.hasKey(KEY_HIT_SLOP_TOP)) { + top = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_TOP)) + } + if (hitSlop.hasKey(KEY_HIT_SLOP_RIGHT)) { + right = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_RIGHT)) + } + if (hitSlop.hasKey(KEY_HIT_SLOP_BOTTOM)) { + bottom = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_BOTTOM)) + } + if (hitSlop.hasKey(KEY_HIT_SLOP_WIDTH)) { + width = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_WIDTH)) + } + if (hitSlop.hasKey(KEY_HIT_SLOP_HEIGHT)) { + height = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HEIGHT)) + } + handler.setHitSlop(left, top, right, bottom, width, height) + } + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt new file mode 100644 index 00000000..45bb7613 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt @@ -0,0 +1,100 @@ +package com.swmansion.gesturehandler.react + +import android.util.SparseArray +import android.view.View +import com.facebook.react.bridge.UiThreadUtil +import com.swmansion.gesturehandler.core.GestureHandler +import com.swmansion.gesturehandler.core.GestureHandlerRegistry +import java.util.* + +class RNGestureHandlerRegistry : GestureHandlerRegistry { + private val handlers = SparseArray>() + private val attachedTo = SparseArray() + private val handlersForView = SparseArray>>() + + @Synchronized + fun registerHandler(handler: GestureHandler<*>) { + handlers.put(handler.tag, handler) + } + + @Synchronized + fun getHandler(handlerTag: Int): GestureHandler<*>? { + return handlers[handlerTag] + } + + @Synchronized + fun attachHandlerToView(handlerTag: Int, viewTag: Int, actionType: Int): Boolean { + val handler = handlers[handlerTag] + return handler?.let { + detachHandler(handler) + handler.actionType = actionType + registerHandlerForViewWithTag(viewTag, handler) + true + } ?: false + } + + @Synchronized + private fun registerHandlerForViewWithTag(viewTag: Int, handler: GestureHandler<*>) { + check(attachedTo[handler.tag] == null) { "Handler $handler already attached" } + attachedTo.put(handler.tag, viewTag) + var listToAdd = handlersForView[viewTag] + if (listToAdd == null) { + listToAdd = ArrayList(1) + listToAdd.add(handler) + handlersForView.put(viewTag, listToAdd) + } else { + synchronized(listToAdd) { + listToAdd.add(handler) + } + } + } + + @Synchronized + private fun detachHandler(handler: GestureHandler<*>) { + val attachedToView = attachedTo[handler.tag] + if (attachedToView != null) { + attachedTo.remove(handler.tag) + val attachedHandlers = handlersForView[attachedToView] + if (attachedHandlers != null) { + synchronized(attachedHandlers) { + attachedHandlers.remove(handler) + } + + if (attachedHandlers.size == 0) { + handlersForView.remove(attachedToView) + } + } + } + if (handler.view != null) { + // Handler is in "prepared" state which means it is registered in the orchestrator and can + // receive touch events. This means that before we remove it from the registry we need to + // "cancel" it so that orchestrator does no longer keep a reference to it. + UiThreadUtil.runOnUiThread { handler.cancel() } + } + } + + @Synchronized + fun dropHandler(handlerTag: Int) { + handlers[handlerTag]?.let { + detachHandler(it) + handlers.remove(handlerTag) + } + } + + @Synchronized + fun dropAllHandlers() { + handlers.clear() + attachedTo.clear() + handlersForView.clear() + } + + @Synchronized + fun getHandlersForViewWithTag(viewTag: Int): ArrayList>? { + return handlersForView[viewTag] + } + + @Synchronized + override fun getHandlersForView(view: View): ArrayList>? { + return getHandlersForViewWithTag(view.id) + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt new file mode 100644 index 00000000..b2f229c7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt @@ -0,0 +1,134 @@ +package com.swmansion.gesturehandler.react + +import android.os.SystemClock +import android.util.Log +import android.view.MotionEvent +import android.view.ViewGroup +import android.view.ViewParent +import com.facebook.react.bridge.ReactContext +import com.facebook.react.bridge.UiThreadUtil +import com.facebook.react.common.ReactConstants +import com.facebook.react.uimanager.RootView +import com.swmansion.gesturehandler.core.GestureHandler +import com.swmansion.gesturehandler.core.GestureHandlerOrchestrator + +class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: ViewGroup) { + private val orchestrator: GestureHandlerOrchestrator? + private val jsGestureHandler: GestureHandler<*>? + val rootView: ViewGroup + private var shouldIntercept = false + private var passingTouch = false + + init { + UiThreadUtil.assertOnUiThread() + val wrappedViewTag = wrappedView.id + check(wrappedViewTag >= 1) { "Expect view tag to be set for $wrappedView" } + val module = context.getNativeModule(RNGestureHandlerModule::class.java)!! + val registry = module.registry + rootView = findRootViewTag(wrappedView) + Log.i( + ReactConstants.TAG, + "[GESTURE HANDLER] Initialize gesture handler for root view $rootView" + ) + orchestrator = GestureHandlerOrchestrator( + wrappedView, registry, RNViewConfigurationHelper() + ).apply { + minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH + } + jsGestureHandler = RootViewGestureHandler().apply { tag = -wrappedViewTag } + with(registry) { + registerHandler(jsGestureHandler) + attachHandlerToView(jsGestureHandler.tag, wrappedViewTag, GestureHandler.ACTION_TYPE_JS_FUNCTION_OLD_API) + } + module.registerRootHelper(this) + } + + fun tearDown() { + Log.i( + ReactConstants.TAG, + "[GESTURE HANDLER] Tearing down gesture handler registered for root view $rootView" + ) + val module = context.getNativeModule(RNGestureHandlerModule::class.java)!! + with(module) { + registry.dropHandler(jsGestureHandler!!.tag) + unregisterRootHelper(this@RNGestureHandlerRootHelper) + } + } + + private inner class RootViewGestureHandler : GestureHandler() { + override fun onHandle(event: MotionEvent, sourceEvent: MotionEvent) { + val currentState = state + if (currentState == STATE_UNDETERMINED) { + begin() + shouldIntercept = false + } + if (event.actionMasked == MotionEvent.ACTION_UP) { + end() + } + } + + override fun onCancel() { + shouldIntercept = true + val time = SystemClock.uptimeMillis() + val event = MotionEvent.obtain(time, time, MotionEvent.ACTION_CANCEL, 0f, 0f, 0).apply { + action = MotionEvent.ACTION_CANCEL + } + if (rootView is RootView) { + rootView.onChildStartedNativeGesture(event) + } + } + } + + fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) { + // If this method gets called it means that some native view is attempting to grab lock for + // touch event delivery. In that case we cancel all gesture recognizers + if (orchestrator != null && !passingTouch) { + // if we are in the process of delivering touch events via GH orchestrator, we don't want to + // treat it as a native gesture capturing the lock + tryCancelAllHandlers() + } + } + + fun dispatchTouchEvent(ev: MotionEvent): Boolean { + // We mark `mPassingTouch` before we get into `mOrchestrator.onTouchEvent` so that we can tell + // if `requestDisallow` has been called as a result of a normal gesture handling process or + // as a result of one of the gesture handlers activating + passingTouch = true + orchestrator!!.onTouchEvent(ev) + passingTouch = false + return shouldIntercept + } + + private fun tryCancelAllHandlers() { + // In order to cancel handlers we activate handler that is hooked to the root view + jsGestureHandler?.apply { + if (state == GestureHandler.STATE_BEGAN) { + // Try activate main JS handler + activate() + end() + } + } + } + + /*package*/ + fun handleSetJSResponder(viewTag: Int, blockNativeResponder: Boolean) { + if (blockNativeResponder) { + UiThreadUtil.runOnUiThread { tryCancelAllHandlers() } + } + } + + companion object { + private const val MIN_ALPHA_FOR_TOUCH = 0.1f + private fun findRootViewTag(viewGroup: ViewGroup): ViewGroup { + UiThreadUtil.assertOnUiThread() + var parent: ViewParent? = viewGroup + while (parent != null && parent !is RootView) { + parent = parent.parent + } + checkNotNull(parent) { + "View $viewGroup has not been mounted under ReactRootView" + } + return parent as ViewGroup + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt new file mode 100644 index 00000000..5bed5489 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt @@ -0,0 +1,5 @@ +package com.swmansion.gesturehandler.react + +interface RNGestureHandlerRootInterface { + val rootHelper: RNGestureHandlerRootHelper? +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt new file mode 100644 index 00000000..953d3f3d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt @@ -0,0 +1,68 @@ +package com.swmansion.gesturehandler.react + +import android.content.Context +import android.util.Log +import android.view.MotionEvent +import android.view.ViewGroup +import com.facebook.react.bridge.ReactContext +import com.facebook.react.bridge.UiThreadUtil +import com.facebook.react.common.ReactConstants +import com.facebook.react.uimanager.RootView +import com.facebook.react.views.view.ReactViewGroup + +class RNGestureHandlerRootView(context: Context?) : ReactViewGroup(context) { + private var _enabled = false + private var rootHelper: RNGestureHandlerRootHelper? = null // TODO: resettable lateinit + override fun onAttachedToWindow() { + super.onAttachedToWindow() + _enabled = !hasGestureHandlerEnabledRootView(this) + if (!_enabled) { + Log.i( + ReactConstants.TAG, + "[GESTURE HANDLER] Gesture handler is already enabled for a parent view" + ) + } + if (_enabled && rootHelper == null) { + rootHelper = RNGestureHandlerRootHelper(context as ReactContext, this) + } + } + + fun tearDown() { + rootHelper?.tearDown() + } + + override fun dispatchTouchEvent(ev: MotionEvent) = + if (_enabled && rootHelper!!.dispatchTouchEvent(ev)) { + true + } else super.dispatchTouchEvent(ev) + + override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) { + if (_enabled) { + rootHelper!!.requestDisallowInterceptTouchEvent(disallowIntercept) + } + super.requestDisallowInterceptTouchEvent(disallowIntercept) + } + + companion object { + private fun hasGestureHandlerEnabledRootView(viewGroup: ViewGroup): Boolean { + UiThreadUtil.assertOnUiThread() + + var parent = viewGroup.parent + while (parent != null) { + // our own deprecated root view + @Suppress("DEPRECATION") + if (parent is RNGestureHandlerEnabledRootView || parent is RNGestureHandlerRootView) { + return true + } + // Checks other roots views but it's mainly for ReactModalHostView.DialogRootViewGroup + // since modals are outside RN hierachy and we have to initialize GH's root view for it + // Note that RNGestureHandlerEnabledRootView implements RootView - that's why this check has to be below + if (parent is RootView) { + return false + } + parent = parent.parent + } + return false + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt new file mode 100644 index 00000000..6adf7289 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt @@ -0,0 +1,51 @@ +package com.swmansion.gesturehandler.react + +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.ViewGroupManager +import com.facebook.react.uimanager.ViewManagerDelegate +import com.facebook.react.viewmanagers.RNGestureHandlerRootViewManagerDelegate +import com.facebook.react.viewmanagers.RNGestureHandlerRootViewManagerInterface + +/** + * React native's view manager used for creating instances of []RNGestureHandlerRootView}. It + * is being used by projects using react-native-navigation where for each screen new root view need + * to be provided. + */ +@ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS) +class RNGestureHandlerRootViewManager : + ViewGroupManager(), + RNGestureHandlerRootViewManagerInterface { + private val mDelegate: ViewManagerDelegate + + init { + mDelegate = RNGestureHandlerRootViewManagerDelegate(this) + } + + override fun getDelegate(): ViewManagerDelegate { + return mDelegate + } + + override fun getName() = REACT_CLASS + + override fun createViewInstance(reactContext: ThemedReactContext) = RNGestureHandlerRootView(reactContext) + + override fun onDropViewInstance(view: RNGestureHandlerRootView) { + view.tearDown() + } + + /** + * The following event configuration is necessary even if you are not using + * GestureHandlerRootView component directly. + */ + override fun getExportedCustomDirectEventTypeConstants(): Map> = mutableMapOf( + RNGestureHandlerEvent.EVENT_NAME to + mutableMapOf("registrationName" to RNGestureHandlerEvent.EVENT_NAME), + RNGestureHandlerStateChangeEvent.EVENT_NAME to + mutableMapOf("registrationName" to RNGestureHandlerStateChangeEvent.EVENT_NAME) + ) + + companion object { + const val REACT_CLASS = "RNGestureHandlerRootView" + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt new file mode 100644 index 00000000..b44dd422 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt @@ -0,0 +1,72 @@ +// 1. RCTEventEmitter was deprecated in favor of RCTModernEventEmitter interface +// 2. Event#init() with only viewTag was deprecated in favor of two arg c-tor +// 3. Event#receiveEvent() with 3 args was deprecated in favor of 4 args version +// ref: https://github.com/facebook/react-native/commit/2fbbdbb2ce897e8da3f471b08b93f167d566db1d +@file:Suppress("DEPRECATION") + +package com.swmansion.gesturehandler.react + +import androidx.core.util.Pools +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.WritableMap +import com.facebook.react.uimanager.events.Event +import com.facebook.react.uimanager.events.RCTEventEmitter +import com.swmansion.gesturehandler.core.GestureHandler + +class RNGestureHandlerStateChangeEvent private constructor() : Event() { + private var extraData: WritableMap? = null + private fun > init( + handler: T, + newState: Int, + oldState: Int, + dataExtractor: RNGestureHandlerEventDataExtractor?, + ) { + super.init(handler.view!!.id) + extraData = createEventData(handler, dataExtractor, newState, oldState) + } + + override fun onDispose() { + extraData = null + EVENTS_POOL.release(this) + } + + override fun getEventName() = EVENT_NAME + + // TODO: coalescing + override fun canCoalesce() = false + + // TODO: coalescing + override fun getCoalescingKey(): Short = 0 + + override fun dispatch(rctEventEmitter: RCTEventEmitter) { + rctEventEmitter.receiveEvent(viewTag, EVENT_NAME, extraData) + } + + companion object { + const val EVENT_NAME = "onGestureHandlerStateChange" + private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic + private val EVENTS_POOL = Pools.SynchronizedPool(TOUCH_EVENTS_POOL_SIZE) + + fun > obtain( + handler: T, + newState: Int, + oldState: Int, + dataExtractor: RNGestureHandlerEventDataExtractor?, + ): RNGestureHandlerStateChangeEvent = + (EVENTS_POOL.acquire() ?: RNGestureHandlerStateChangeEvent()).apply { + init(handler, newState, oldState, dataExtractor) + } + + fun > createEventData( + handler: T, + dataExtractor: RNGestureHandlerEventDataExtractor?, + newState: Int, + oldState: Int, + ): WritableMap = Arguments.createMap().apply { + dataExtractor?.extractEventData(handler, this) + putInt("handlerTag", handler.tag) + putInt("state", newState) + putInt("oldState", oldState) + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt new file mode 100644 index 00000000..63626bad --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt @@ -0,0 +1,69 @@ +package com.swmansion.gesturehandler.react + +import androidx.core.util.Pools +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.WritableMap +import com.facebook.react.uimanager.events.Event +import com.facebook.react.uimanager.events.RCTEventEmitter +import com.swmansion.gesturehandler.core.GestureHandler + +class RNGestureHandlerTouchEvent private constructor() : Event() { + private var extraData: WritableMap? = null + private var coalescingKey: Short = 0 + private fun > init(handler: T) { + super.init(handler.view!!.id) + extraData = createEventData(handler) + coalescingKey = handler.eventCoalescingKey + } + + override fun onDispose() { + extraData = null + EVENTS_POOL.release(this) + } + + override fun getEventName() = EVENT_NAME + + override fun canCoalesce() = true + + override fun getCoalescingKey() = coalescingKey + + override fun dispatch(rctEventEmitter: RCTEventEmitter) { + rctEventEmitter.receiveEvent(viewTag, EVENT_NAME, extraData) + } + + companion object { + const val EVENT_UNDETERMINED = 0 + const val EVENT_TOUCH_DOWN = 1 + const val EVENT_TOUCH_MOVE = 2 + const val EVENT_TOUCH_UP = 3 + const val EVENT_TOUCH_CANCELLED = 4 + + const val EVENT_NAME = "onGestureHandlerEvent" + private const val TOUCH_EVENTS_POOL_SIZE = 7 // magic + private val EVENTS_POOL = Pools.SynchronizedPool(TOUCH_EVENTS_POOL_SIZE) + + fun > obtain(handler: T): RNGestureHandlerTouchEvent = + (EVENTS_POOL.acquire() ?: RNGestureHandlerTouchEvent()).apply { + init(handler) + } + + fun > createEventData(handler: T,): WritableMap = Arguments.createMap().apply { + putInt("handlerTag", handler.tag) + putInt("state", handler.state) + putInt("numberOfTouches", handler.trackedPointersCount) + putInt("eventType", handler.touchEventType) + + handler.consumeChangedTouchesPayload()?.let { + putArray("changedTouches", it) + } + + handler.consumeAllTouchesPayload()?.let { + putArray("allTouches", it) + } + + if (handler.isAwaiting && handler.state == GestureHandler.STATE_ACTIVE) { + putInt("state", GestureHandler.STATE_BEGAN) + } + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt new file mode 100644 index 00000000..2ef71c0e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt @@ -0,0 +1,51 @@ +package com.swmansion.gesturehandler.react + +import android.view.View +import android.view.ViewGroup +import com.facebook.react.uimanager.PointerEvents +import com.facebook.react.uimanager.ReactPointerEventsView +import com.facebook.react.views.view.ReactViewGroup +import com.swmansion.gesturehandler.core.PointerEventsConfig +import com.swmansion.gesturehandler.core.ViewConfigurationHelper + +class RNViewConfigurationHelper : ViewConfigurationHelper { + override fun getPointerEventsConfigForView(view: View): PointerEventsConfig { + val pointerEvents: PointerEvents = + if (view is ReactPointerEventsView) { + (view as ReactPointerEventsView).pointerEvents + } else PointerEvents.AUTO + + // Views that are disabled should never be the target of pointer events. However, their children + // can be because some views (SwipeRefreshLayout) use enabled but still have children that can + // be valid targets. + if (!view.isEnabled) { + if (pointerEvents == PointerEvents.AUTO) { + return PointerEventsConfig.BOX_NONE + } else if (pointerEvents == PointerEvents.BOX_ONLY) { + return PointerEventsConfig.NONE + } + } + + return when (pointerEvents) { + PointerEvents.BOX_ONLY -> PointerEventsConfig.BOX_ONLY + PointerEvents.BOX_NONE -> PointerEventsConfig.BOX_NONE + PointerEvents.NONE -> PointerEventsConfig.NONE + PointerEvents.AUTO -> PointerEventsConfig.AUTO + } + } + + override fun getChildInDrawingOrderAtIndex(parent: ViewGroup, index: Int): View { + return if (parent is ReactViewGroup) { + parent.getChildAt(parent.getZIndexMappedChildIndex(index)) + } else parent.getChildAt(index) + } + + override fun isViewClippingChildren(view: ViewGroup): Boolean { + if (view.clipChildren) { + return true + } + return if (view is ReactViewGroup) { + "hidden" == view.overflow + } else false + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt new file mode 100644 index 00000000..ffb82e98 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/CMakeLists.txt @@ -0,0 +1,25 @@ +project(GestureHandler) +cmake_minimum_required(VERSION 3.9.0) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_CXX_STANDARD 17) + +set(REACT_ANDROID_DIR "${REACT_NATIVE_DIR}/ReactAndroid") + +include(${REACT_ANDROID_DIR}/cmake-utils/folly-flags.cmake) +add_compile_options(${folly_FLAGS}) + +add_library(gesturehandler + SHARED + cpp-adapter.cpp +) + +find_package(ReactAndroid REQUIRED CONFIG) + +target_link_libraries( + gesturehandler + ReactAndroid::react_render_core + ReactAndroid::react_render_uimanager + ReactAndroid::jsi + ReactAndroid::react_nativemodule_core +) diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp new file mode 100644 index 00000000..6b1d4178 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/main/jni/cpp-adapter.cpp @@ -0,0 +1,44 @@ +#include +#include + +#include + +using namespace facebook; +using namespace react; + +void decorateRuntime(jsi::Runtime &runtime) { + auto isFormsStackingContext = jsi::Function::createFromHostFunction( + runtime, + jsi::PropNameID::forAscii(runtime, "isFormsStackingContext"), + 1, + [](jsi::Runtime &runtime, + const jsi::Value &thisValue, + const jsi::Value *arguments, + size_t count) -> jsi::Value { + if (!arguments[0].isObject()) { + return jsi::Value::null(); + } + + auto shadowNode = arguments[0] + .asObject(runtime) + .getHostObject(runtime) + ->shadowNode; + bool isFormsStackingContext = shadowNode->getTraits().check( + ShadowNodeTraits::FormsStackingContext); + + return jsi::Value(isFormsStackingContext); + }); + runtime.global().setProperty( + runtime, "isFormsStackingContext", std::move(isFormsStackingContext)); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_swmansion_gesturehandler_react_RNGestureHandlerModule_decorateRuntime( + JNIEnv *env, + jobject clazz, + jlong jsiPtr) { + jsi::Runtime *runtime = reinterpret_cast(jsiPtr); + if (runtime) { + decorateRuntime(*runtime); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java new file mode 100644 index 00000000..0214d3db --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java @@ -0,0 +1,50 @@ +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GeneratePropsJavaDelegate.js + */ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ColorPropConverter; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNGestureHandlerButtonManagerDelegate & RNGestureHandlerButtonManagerInterface> extends BaseViewManagerDelegate { + public RNGestureHandlerButtonManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case "exclusive": + mViewManager.setExclusive(view, value == null ? true : (boolean) value); + break; + case "foreground": + mViewManager.setForeground(view, value == null ? false : (boolean) value); + break; + case "borderless": + mViewManager.setBorderless(view, value == null ? false : (boolean) value); + break; + case "enabled": + mViewManager.setEnabled(view, value == null ? true : (boolean) value); + break; + case "rippleColor": + mViewManager.setRippleColor(view, ColorPropConverter.getColor(value, view.getContext())); + break; + case "rippleRadius": + mViewManager.setRippleRadius(view, value == null ? 0 : ((Double) value).intValue()); + break; + case "touchSoundDisabled": + mViewManager.setTouchSoundDisabled(view, value == null ? false : (boolean) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java new file mode 100644 index 00000000..1c5aa129 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java @@ -0,0 +1,23 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; + +public interface RNGestureHandlerButtonManagerInterface { + void setExclusive(T view, boolean value); + void setForeground(T view, boolean value); + void setBorderless(T view, boolean value); + void setEnabled(T view, boolean value); + void setRippleColor(T view, @Nullable Integer value); + void setRippleRadius(T view, int value); + void setTouchSoundDisabled(T view, boolean value); +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java new file mode 100644 index 00000000..d7d72225 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java @@ -0,0 +1,25 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNGestureHandlerRootViewManagerDelegate & RNGestureHandlerRootViewManagerInterface> extends BaseViewManagerDelegate { + public RNGestureHandlerRootViewManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + super.setProperty(view, propName, value); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java new file mode 100644 index 00000000..d82d5a04 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java @@ -0,0 +1,16 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; + +public interface RNGestureHandlerRootViewManagerInterface { + // No props +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt new file mode 100644 index 00000000..78618387 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt @@ -0,0 +1,13 @@ +package com.swmansion.gesturehandler + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.UIManagerModule +import com.facebook.react.uimanager.events.Event + +fun ReactContext.dispatchEvent(event: Event<*>) { + try { + this.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher.dispatchEvent(event) + } catch (e: NullPointerException) { + throw Exception("Couldn't get an instance of UIManagerModule. Gesture Handler is unable to send an event.", e) + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.h new file mode 100644 index 00000000..b10d7788 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNFlingGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.m new file mode 100644 index 00000000..7ec268b1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNFlingHandler.m @@ -0,0 +1,152 @@ +#import "RNFlingHandler.h" + +@interface RNBetterSwipeGestureRecognizer : UISwipeGestureRecognizer + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNBetterSwipeGestureRecognizer { + __weak RNGestureHandler *_gestureHandler; + CGPoint _lastPoint; // location of the most recently updated touch, relative to the view + bool _hasBegan; // whether the `BEGAN` event has been sent +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + _lastPoint = CGPointZero; + _hasBegan = NO; + } + return self; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + _lastPoint = [[[touches allObjects] objectAtIndex:0] locationInView:_gestureHandler.recognizer.view]; + [_gestureHandler reset]; + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; + + // self.numberOfTouches doesn't work for this because in case than one finger is required, + // when holding one finger on the screen and tapping with the second one, numberOfTouches is equal + // to 2 only for the first tap but 1 for all the following ones + if (!_hasBegan) { + [self triggerAction]; + _hasBegan = YES; + } +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + _lastPoint = [[[touches allObjects] objectAtIndex:0] locationInView:_gestureHandler.recognizer.view]; + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + _lastPoint = [[[touches allObjects] objectAtIndex:0] locationInView:_gestureHandler.recognizer.view]; + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + _lastPoint = [[[touches allObjects] objectAtIndex:0] locationInView:_gestureHandler.recognizer.view]; + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)triggerAction +{ + [_gestureHandler handleGesture:self]; +} + +- (void)reset +{ + [self triggerAction]; + [_gestureHandler.pointerTracker reset]; + _hasBegan = NO; + [super reset]; +} + +- (CGPoint)getLastLocation +{ + // I think keeping the location of only one touch is enough since it would be used to determine the direction + // of the movement, and if it's wrong the recognizer fails anyway. + // In case the location of all touches is required, touch events are the way to go + return _lastPoint; +} + +@end + +@implementation RNFlingGestureHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNBetterSwipeGestureRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} +- (void)resetConfig +{ + [super resetConfig]; + UISwipeGestureRecognizer *recognizer = (UISwipeGestureRecognizer *)_recognizer; + recognizer.direction = UISwipeGestureRecognizerDirectionRight; +#if !TARGET_OS_TV + recognizer.numberOfTouchesRequired = 1; +#endif +} + +- (void)configure:(NSDictionary *)config +{ + [super configure:config]; + UISwipeGestureRecognizer *recognizer = (UISwipeGestureRecognizer *)_recognizer; + + id prop = config[@"direction"]; + if (prop != nil) { + recognizer.direction = [RCTConvert NSInteger:prop]; + } + +#if !TARGET_OS_TV + prop = config[@"numberOfPointers"]; + if (prop != nil) { + recognizer.numberOfTouchesRequired = [RCTConvert NSInteger:prop]; + } +#endif +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer +{ + RNGestureHandlerState savedState = _lastState; + BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer]; + _lastState = savedState; + + return shouldBegin; +} + +- (RNGestureHandlerEventExtraData *)eventExtraData:(id)_recognizer +{ + // For some weird reason [recognizer locationInView:recognizer.view.window] returns (0, 0). + // To calculate the correct absolute position, first calculate the absolute position of the + // view inside the root view controller (https://stackoverflow.com/a/7448573) and then + // add the relative touch position to it. + + RNBetterSwipeGestureRecognizer *recognizer = (RNBetterSwipeGestureRecognizer *)_recognizer; + + CGPoint viewAbsolutePosition = + [recognizer.view convertPoint:recognizer.view.bounds.origin + toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; + CGPoint locationInView = [recognizer getLastLocation]; + + return [RNGestureHandlerEventExtraData + forPosition:locationInView + withAbsolutePosition:CGPointMake( + viewAbsolutePosition.x + locationInView.x, viewAbsolutePosition.y + locationInView.y) + withNumberOfTouches:recognizer.numberOfTouches]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.h new file mode 100644 index 00000000..b71fb78d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNForceTouchHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.m new file mode 100644 index 00000000..a48b0af1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNForceTouchHandler.m @@ -0,0 +1,175 @@ +#import "RNForceTouchHandler.h" + +#import + +#import + +@interface RNForceTouchGestureRecognizer : UIGestureRecognizer + +@property (nonatomic) CGFloat maxForce; +@property (nonatomic) CGFloat minForce; +@property (nonatomic) CGFloat force; +@property (nonatomic) BOOL feedbackOnActivation; + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNForceTouchGestureRecognizer { + __weak RNGestureHandler *_gestureHandler; + UITouch *_firstTouch; +} + +static const CGFloat defaultForce = 0; +static const CGFloat defaultMinForce = 0.2; +static const CGFloat defaultMaxForce = NAN; +static const BOOL defaultFeedbackOnActivation = NO; + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + _force = defaultForce; + _minForce = defaultMinForce; + _maxForce = defaultMaxForce; + _feedbackOnActivation = defaultFeedbackOnActivation; + } + return self; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (_firstTouch) { + // ignore rest of fingers + return; + } + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; + + _firstTouch = [touches anyObject]; + [self handleForceWithTouches:touches]; + self.state = UIGestureRecognizerStatePossible; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (![touches containsObject:_firstTouch]) { + // Considered only the very first touch + return; + } + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; + + [self handleForceWithTouches:touches]; + + if ([self shouldFail]) { + self.state = UIGestureRecognizerStateFailed; + return; + } + + if (self.state == UIGestureRecognizerStatePossible && [self shouldActivate]) { + [self performFeedbackIfRequired]; + self.state = UIGestureRecognizerStateBegan; + } +} + +- (BOOL)shouldActivate +{ + return (_force >= _minForce); +} + +- (BOOL)shouldFail +{ + return TEST_MAX_IF_NOT_NAN(_force, _maxForce); +} + +- (void)performFeedbackIfRequired +{ +#if !TARGET_OS_TV + if (_feedbackOnActivation) { + if (@available(iOS 10.0, *)) { + [[[UIImpactFeedbackGenerator alloc] initWithStyle:(UIImpactFeedbackStyleMedium)] impactOccurred]; + } + } +#endif +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (![touches containsObject:_firstTouch]) { + // Considered only the very first touch + return; + } + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; + if (self.state == UIGestureRecognizerStateBegan || self.state == UIGestureRecognizerStateChanged) { + self.state = UIGestureRecognizerStateEnded; + } else { + self.state = UIGestureRecognizerStateFailed; + } +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)handleForceWithTouches:(NSSet *)touches +{ + _force = _firstTouch.force / _firstTouch.maximumPossibleForce; +} + +- (void)reset +{ + [_gestureHandler.pointerTracker reset]; + [super reset]; + _force = 0; + _firstTouch = NULL; +} + +@end + +@implementation RNForceTouchHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNForceTouchGestureRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} + +- (void)resetConfig +{ + [super resetConfig]; + RNForceTouchGestureRecognizer *recognizer = (RNForceTouchGestureRecognizer *)_recognizer; + + recognizer.feedbackOnActivation = defaultFeedbackOnActivation; + recognizer.maxForce = defaultMaxForce; + recognizer.minForce = defaultMinForce; +} + +- (void)configure:(NSDictionary *)config +{ + [super configure:config]; + RNForceTouchGestureRecognizer *recognizer = (RNForceTouchGestureRecognizer *)_recognizer; + + APPLY_FLOAT_PROP(maxForce); + APPLY_FLOAT_PROP(minForce); + + id prop = config[@"feedbackOnActivation"]; + if (prop != nil) { + recognizer.feedbackOnActivation = [RCTConvert BOOL:prop]; + } +} + +- (RNGestureHandlerEventExtraData *)eventExtraData:(RNForceTouchGestureRecognizer *)recognizer +{ + return [RNGestureHandlerEventExtraData forForce:recognizer.force + forPosition:[recognizer locationInView:recognizer.view] + withAbsolutePosition:[recognizer locationInView:recognizer.view.window] + withNumberOfTouches:recognizer.numberOfTouches]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.h new file mode 100644 index 00000000..db0ddce8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.h @@ -0,0 +1,12 @@ +// +// RNLongPressHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNLongPressGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.m new file mode 100644 index 00000000..2c148c18 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNLongPressHandler.m @@ -0,0 +1,183 @@ +// +// RNLongPressHandler.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNLongPressHandler.h" + +#import + +#import + +#import + +@interface RNBetterLongPressGestureRecognizer : UILongPressGestureRecognizer { + uint64_t startTime; + uint64_t previousTime; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; +- (void)handleGesture:(UIGestureRecognizer *)recognizer; +- (NSUInteger)getDuration; + +@end + +@implementation RNBetterLongPressGestureRecognizer { + __weak RNGestureHandler *_gestureHandler; + CGPoint _initPosition; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + } + return self; +} + +- (void)handleGesture:(UIGestureRecognizer *)recognizer +{ + previousTime = mach_absolute_time(); + [_gestureHandler handleGesture:recognizer]; +} + +- (void)triggerAction +{ + [self handleGesture:self]; +} + +- (CGPoint)translationInView +{ + CGPoint currentPosition = [self locationInView:self.view]; + return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y); +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; + + _initPosition = [self locationInView:self.view]; + startTime = mach_absolute_time(); + [_gestureHandler reset]; + [self triggerAction]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; + + CGPoint trans = [self translationInView]; + if ((_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) || + (TEST_MAX_IF_NOT_NAN( + fabs(trans.y * trans.y + trans.x + trans.x), self.allowableMovement * self.allowableMovement))) { + self.enabled = NO; + self.enabled = YES; + } +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)reset +{ + if (self.state == UIGestureRecognizerStateFailed) { + [self triggerAction]; + } + + [_gestureHandler.pointerTracker reset]; + + [super reset]; +} + +- (NSUInteger)getDuration +{ + static mach_timebase_info_data_t sTimebaseInfo; + + if (sTimebaseInfo.denom == 0) { + mach_timebase_info(&sTimebaseInfo); + } + + return (NSUInteger)(((previousTime - startTime) * sTimebaseInfo.numer / (sTimebaseInfo.denom * 1000000))); +} + +@end + +@implementation RNLongPressGestureHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNBetterLongPressGestureRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} + +- (void)resetConfig +{ + [super resetConfig]; + UILongPressGestureRecognizer *recognizer = (UILongPressGestureRecognizer *)_recognizer; + + recognizer.minimumPressDuration = 0.5; + recognizer.allowableMovement = 10; +} + +- (void)configure:(NSDictionary *)config +{ + [super configure:config]; + UILongPressGestureRecognizer *recognizer = (UILongPressGestureRecognizer *)_recognizer; + + id prop = config[@"minDurationMs"]; + if (prop != nil) { + recognizer.minimumPressDuration = [RCTConvert CGFloat:prop] / 1000.0; + } + + prop = config[@"maxDist"]; + if (prop != nil) { + recognizer.allowableMovement = [RCTConvert CGFloat:prop]; + } +} + +- (RNGestureHandlerState)state +{ + // For long press recognizer we treat "Began" state as "active" + // as it changes its state to "Began" as soon as the the minimum + // hold duration timeout is reached, whereas state "Changed" is + // only set after "Began" phase if there is some movement. + if (_recognizer.state == UIGestureRecognizerStateBegan) { + return RNGestureHandlerStateActive; + } + return [super state]; +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer +{ + // same as TapGH, this needs to be unified when all handlers are updated + RNGestureHandlerState savedState = _lastState; + BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer]; + _lastState = savedState; + + return shouldBegin; +} + +- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer +{ + return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:recognizer.view] + withAbsolutePosition:[recognizer locationInView:recognizer.view.window] + withNumberOfTouches:recognizer.numberOfTouches + withDuration:[(RNBetterLongPressGestureRecognizer *)recognizer getDuration]]; +} +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.h new file mode 100644 index 00000000..be25e080 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.h @@ -0,0 +1,4 @@ +#import "RNGestureHandler.h" + +@interface RNManualGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.m new file mode 100644 index 00000000..60f0f7c9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNManualHandler.m @@ -0,0 +1,88 @@ +#import "RNManualHandler.h" + +@interface RNManualRecognizer : UIGestureRecognizer + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNManualRecognizer { + __weak RNGestureHandler *_gestureHandler; + BOOL _shouldSendBeginEvent; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + _shouldSendBeginEvent = YES; + } + return self; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; + + if (_shouldSendBeginEvent) { + [_gestureHandler handleGesture:self]; + _shouldSendBeginEvent = NO; + } +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; + + if ([self shouldFail]) { + self.state = (self.state == UIGestureRecognizerStatePossible) ? UIGestureRecognizerStateFailed + : UIGestureRecognizerStateCancelled; + + [self reset]; + } +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)reset +{ + [_gestureHandler.pointerTracker reset]; + [super reset]; + + _shouldSendBeginEvent = YES; +} + +- (BOOL)shouldFail +{ + if (_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) { + return YES; + } else { + return NO; + } +} + +@end + +@implementation RNManualGestureHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNManualRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.h new file mode 100644 index 00000000..cd7996e8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.h @@ -0,0 +1,15 @@ +// +// RNNativeViewHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNDummyGestureRecognizer : UIGestureRecognizer +@end + +@interface RNNativeViewGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.mm b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.mm new file mode 100644 index 00000000..1b9b938f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNNativeViewHandler.mm @@ -0,0 +1,193 @@ +// +// RNNativeViewHandler.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNNativeViewHandler.h" + +#import + +#import +#import + +#ifdef RN_FABRIC_ENABLED +#import +#else +#import +#endif // RN_FABRIC_ENABLED + +#pragma mark RNDummyGestureRecognizer + +@implementation RNDummyGestureRecognizer { + __weak RNGestureHandler *_gestureHandler; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + } + return self; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; + self.state = UIGestureRecognizerStateFailed; + [self reset]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; + self.state = UIGestureRecognizerStateCancelled; + [self reset]; +} + +- (void)reset +{ + [_gestureHandler.pointerTracker reset]; + [super reset]; +} + +@end + +#pragma mark RNNativeViewgestureHandler + +@implementation RNNativeViewGestureHandler { + BOOL _shouldActivateOnStart; + BOOL _disallowInterruption; +} + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNDummyGestureRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} + +- (void)configure:(NSDictionary *)config +{ + [super configure:config]; + _shouldActivateOnStart = [RCTConvert BOOL:config[@"shouldActivateOnStart"]]; + _disallowInterruption = [RCTConvert BOOL:config[@"disallowInterruption"]]; +} + +- (void)bindToView:(UIView *)view +{ + // For UIControl based views (UIButton, UISwitch) we provide special handling that would allow + // for properties like `disallowInterruption` to work. + if ([view isKindOfClass:[UIControl class]]) { + UIControl *control = (UIControl *)view; + [control addTarget:self action:@selector(handleTouchDown:forEvent:) forControlEvents:UIControlEventTouchDown]; + [control addTarget:self + action:@selector(handleTouchUpOutside:forEvent:) + forControlEvents:UIControlEventTouchUpOutside]; + [control addTarget:self + action:@selector(handleTouchUpInside:forEvent:) + forControlEvents:UIControlEventTouchUpInside]; + [control addTarget:self action:@selector(handleDragExit:forEvent:) forControlEvents:UIControlEventTouchDragExit]; + [control addTarget:self action:@selector(handleDragEnter:forEvent:) forControlEvents:UIControlEventTouchDragEnter]; + [control addTarget:self action:@selector(handleTouchCancel:forEvent:) forControlEvents:UIControlEventTouchCancel]; + } else { + [super bindToView:view]; + } + + // We can restore default scrollview behaviour to delay touches to scrollview's children + // because gesture handler system can handle cancellation of scroll recognizer when JS responder + // is set +#ifdef RN_FABRIC_ENABLED + if ([view isKindOfClass:[RCTScrollViewComponentView class]]) { + UIScrollView *scrollView = ((RCTScrollViewComponentView *)view).scrollView; + scrollView.delaysContentTouches = YES; + } +#else + if ([view isKindOfClass:[RCTScrollView class]]) { + // This part of the code is coupled with RN implementation of ScrollView native wrapper and + // we expect for RCTScrollView component to contain a subclass of UIScrollview as the only + // subview + UIScrollView *scrollView = [view.subviews objectAtIndex:0]; + scrollView.delaysContentTouches = YES; + } +#endif // RN_FABRIC_ENABLED +} + +- (void)handleTouchDown:(UIView *)sender forEvent:(UIEvent *)event +{ + [self reset]; + + if (_disallowInterruption) { + // When `disallowInterruption` is set we cancel all gesture handlers when this UIControl + // gets DOWN event + for (UITouch *touch in [event allTouches]) { + for (UIGestureRecognizer *recogn in [touch gestureRecognizers]) { + recogn.enabled = NO; + recogn.enabled = YES; + } + } + } + + [self sendEventsInState:RNGestureHandlerStateActive + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]]; +} + +- (void)handleTouchUpOutside:(UIView *)sender forEvent:(UIEvent *)event +{ + [self sendEventsInState:RNGestureHandlerStateEnd + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]]; +} + +- (void)handleTouchUpInside:(UIView *)sender forEvent:(UIEvent *)event +{ + [self sendEventsInState:RNGestureHandlerStateEnd + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]]; +} + +- (void)handleDragExit:(UIView *)sender forEvent:(UIEvent *)event +{ + // Pointer is moved outside of the view bounds, we cancel button when `shouldCancelWhenOutside` is set + if (self.shouldCancelWhenOutside) { + UIControl *control = (UIControl *)sender; + [control cancelTrackingWithEvent:event]; + [self sendEventsInState:RNGestureHandlerStateEnd + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]]; + } else { + [self sendEventsInState:RNGestureHandlerStateActive + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]]; + } +} + +- (void)handleDragEnter:(UIView *)sender forEvent:(UIEvent *)event +{ + [self sendEventsInState:RNGestureHandlerStateActive + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:YES]]; +} + +- (void)handleTouchCancel:(UIView *)sender forEvent:(UIEvent *)event +{ + [self sendEventsInState:RNGestureHandlerStateCancelled + forViewWithTag:sender.reactTag + withExtraData:[RNGestureHandlerEventExtraData forPointerInside:NO]]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.h new file mode 100644 index 00000000..dae819a1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.h @@ -0,0 +1,12 @@ +// +// RNPanHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNPanGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.m new file mode 100644 index 00000000..07bdf0a5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPanHandler.m @@ -0,0 +1,331 @@ +// +// RNPanHandler.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNPanHandler.h" + +#import + +@interface RNBetterPanGestureRecognizer : UIPanGestureRecognizer + +@property (nonatomic) CGFloat minDistSq; +@property (nonatomic) CGFloat minVelocityX; +@property (nonatomic) CGFloat minVelocityY; +@property (nonatomic) CGFloat minVelocitySq; +@property (nonatomic) CGFloat activeOffsetXStart; +@property (nonatomic) CGFloat activeOffsetXEnd; +@property (nonatomic) CGFloat failOffsetXStart; +@property (nonatomic) CGFloat failOffsetXEnd; +@property (nonatomic) CGFloat activeOffsetYStart; +@property (nonatomic) CGFloat activeOffsetYEnd; +@property (nonatomic) CGFloat failOffsetYStart; +@property (nonatomic) CGFloat failOffsetYEnd; +@property (nonatomic) CGFloat activateAfterLongPress; + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNBetterPanGestureRecognizer { + __weak RNGestureHandler *_gestureHandler; + NSUInteger _realMinimumNumberOfTouches; + BOOL _hasCustomActivationCriteria; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + _minDistSq = NAN; + _minVelocityX = NAN; + _minVelocityY = NAN; + _minVelocitySq = NAN; + _activeOffsetXStart = NAN; + _activeOffsetXEnd = NAN; + _failOffsetXStart = NAN; + _failOffsetXEnd = NAN; + _activeOffsetYStart = NAN; + _activeOffsetYEnd = NAN; + _failOffsetYStart = NAN; + _failOffsetYEnd = NAN; + _activateAfterLongPress = NAN; + _hasCustomActivationCriteria = NO; +#if !TARGET_OS_TV + _realMinimumNumberOfTouches = self.minimumNumberOfTouches; +#endif + } + return self; +} + +- (void)triggerAction +{ + [_gestureHandler handleGesture:self]; +} + +- (void)setMinimumNumberOfTouches:(NSUInteger)minimumNumberOfTouches +{ + _realMinimumNumberOfTouches = minimumNumberOfTouches; +} + +- (void)activateAfterLongPress +{ + self.state = UIGestureRecognizerStateBegan; + // Send event in ACTIVE state because UIGestureRecognizerStateBegan is mapped to RNGestureHandlerStateBegan + [_gestureHandler handleGesture:self inState:RNGestureHandlerStateActive]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + if ([self numberOfTouches] == 0) { + [_gestureHandler reset]; + } +#if !TARGET_OS_TV + if (_hasCustomActivationCriteria) { + // We use "minimumNumberOfTouches" property to prevent pan handler from recognizing + // the gesture too early before we are sure that all criteria (e.g. minimum distance + // etc. are met) + super.minimumNumberOfTouches = 20; + } else { + super.minimumNumberOfTouches = _realMinimumNumberOfTouches; + } +#endif + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; + [self triggerAction]; + + if (!isnan(_activateAfterLongPress)) { + [self performSelector:@selector(activateAfterLongPress) withObject:nil afterDelay:_activateAfterLongPress]; + } +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; + + if (self.state == UIGestureRecognizerStatePossible && [self shouldFailUnderCustomCriteria]) { + self.state = UIGestureRecognizerStateFailed; + return; + } + if ((self.state == UIGestureRecognizerStatePossible || self.state == UIGestureRecognizerStateChanged)) { + if (_gestureHandler.shouldCancelWhenOutside && ![_gestureHandler containsPointInView]) { + // If the previous recognizer state is UIGestureRecognizerStateChanged + // then UIGestureRecognizer's sate machine will only transition to + // UIGestureRecognizerStateCancelled even if you set the state to + // UIGestureRecognizerStateFailed here. Making the behavior explicit. + self.state = (self.state == UIGestureRecognizerStatePossible) ? UIGestureRecognizerStateFailed + : UIGestureRecognizerStateCancelled; + [self reset]; + return; + } + } + if (_hasCustomActivationCriteria && self.state == UIGestureRecognizerStatePossible && + [self shouldActivateUnderCustomCriteria]) { +#if !TARGET_OS_TV + super.minimumNumberOfTouches = _realMinimumNumberOfTouches; + if ([self numberOfTouches] >= _realMinimumNumberOfTouches) { + self.state = UIGestureRecognizerStateBegan; + [self setTranslation:CGPointMake(0, 0) inView:self.view]; + } +#endif + } +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)reset +{ + [self triggerAction]; + [_gestureHandler.pointerTracker reset]; + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(activateAfterLongPress) object:nil]; + self.enabled = YES; + [super reset]; +} + +- (void)updateHasCustomActivationCriteria +{ + _hasCustomActivationCriteria = !isnan(_minDistSq) || !isnan(_minVelocityX) || !isnan(_minVelocityY) || + !isnan(_minVelocitySq) || !isnan(_activeOffsetXStart) || !isnan(_activeOffsetXEnd) || + !isnan(_activeOffsetYStart) || !isnan(_activeOffsetYEnd); +} + +- (BOOL)shouldFailUnderCustomCriteria +{ + CGPoint trans = [self translationInView:self.view.window]; + // Apple docs say that 10 units is the default allowable movement for UILongPressGestureRecognizer + if (!isnan(_activateAfterLongPress) && trans.x * trans.x + trans.y * trans.y > 100) { + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(activateAfterLongPress) object:nil]; + return YES; + } + + if (!isnan(_failOffsetXStart) && trans.x < _failOffsetXStart) { + return YES; + } + if (!isnan(_failOffsetXEnd) && trans.x > _failOffsetXEnd) { + return YES; + } + if (!isnan(_failOffsetYStart) && trans.y < _failOffsetYStart) { + return YES; + } + if (!isnan(_failOffsetYEnd) && trans.y > _failOffsetYEnd) { + return YES; + } + return NO; +} + +- (BOOL)shouldActivateUnderCustomCriteria +{ + CGPoint trans = [self translationInView:self.view.window]; + if (!isnan(_activeOffsetXStart) && trans.x < _activeOffsetXStart) { + return YES; + } + if (!isnan(_activeOffsetXEnd) && trans.x > _activeOffsetXEnd) { + return YES; + } + if (!isnan(_activeOffsetYStart) && trans.y < _activeOffsetYStart) { + return YES; + } + if (!isnan(_activeOffsetYEnd) && trans.y > _activeOffsetYEnd) { + return YES; + } + + if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(trans), _minDistSq)) { + return YES; + } + + CGPoint velocity = [self velocityInView:self.view]; + if (TEST_MIN_IF_NOT_NAN(velocity.x, _minVelocityX)) { + return YES; + } + if (TEST_MIN_IF_NOT_NAN(velocity.y, _minVelocityY)) { + return YES; + } + if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), _minVelocitySq)) { + return YES; + } + + return NO; +} + +@end + +@implementation RNPanGestureHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNBetterPanGestureRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} + +- (void)resetConfig +{ + [super resetConfig]; + RNBetterPanGestureRecognizer *recognizer = (RNBetterPanGestureRecognizer *)_recognizer; + recognizer.minVelocityX = NAN; + recognizer.minVelocityY = NAN; + recognizer.activeOffsetXStart = NAN; + recognizer.activeOffsetXEnd = NAN; + recognizer.failOffsetXStart = NAN; + recognizer.failOffsetXEnd = NAN; + recognizer.activeOffsetYStart = NAN; + recognizer.activeOffsetYEnd = NAN; + recognizer.failOffsetYStart = NAN; + recognizer.failOffsetYStart = NAN; + recognizer.failOffsetYEnd = NAN; +#if !TARGET_OS_TV && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130400 + if (@available(iOS 13.4, *)) { + recognizer.allowedScrollTypesMask = 0; + } +#endif +#if !TARGET_OS_TV + recognizer.minimumNumberOfTouches = 1; + recognizer.maximumNumberOfTouches = NSUIntegerMax; +#endif + recognizer.minDistSq = NAN; + recognizer.minVelocitySq = NAN; + recognizer.activateAfterLongPress = NAN; +} + +- (void)configure:(NSDictionary *)config +{ + [super configure:config]; + RNBetterPanGestureRecognizer *recognizer = (RNBetterPanGestureRecognizer *)_recognizer; + + APPLY_FLOAT_PROP(minVelocityX); + APPLY_FLOAT_PROP(minVelocityY); + APPLY_FLOAT_PROP(activeOffsetXStart); + APPLY_FLOAT_PROP(activeOffsetXEnd); + APPLY_FLOAT_PROP(failOffsetXStart); + APPLY_FLOAT_PROP(failOffsetXEnd); + APPLY_FLOAT_PROP(activeOffsetYStart); + APPLY_FLOAT_PROP(activeOffsetYEnd); + APPLY_FLOAT_PROP(failOffsetYStart); + APPLY_FLOAT_PROP(failOffsetYEnd); + +#if !TARGET_OS_TV && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130400 + if (@available(iOS 13.4, *)) { + bool enableTrackpadTwoFingerGesture = [RCTConvert BOOL:config[@"enableTrackpadTwoFingerGesture"]]; + if (enableTrackpadTwoFingerGesture) { + recognizer.allowedScrollTypesMask = UIScrollTypeMaskAll; + } + } + + APPLY_NAMED_INT_PROP(minimumNumberOfTouches, @"minPointers"); + APPLY_NAMED_INT_PROP(maximumNumberOfTouches, @"maxPointers"); +#endif + + id prop = config[@"minDist"]; + if (prop != nil) { + CGFloat dist = [RCTConvert CGFloat:prop]; + recognizer.minDistSq = dist * dist; + } + + prop = config[@"minVelocity"]; + if (prop != nil) { + CGFloat velocity = [RCTConvert CGFloat:prop]; + recognizer.minVelocitySq = velocity * velocity; + } + + prop = config[@"activateAfterLongPress"]; + if (prop != nil) { + recognizer.activateAfterLongPress = [RCTConvert CGFloat:prop] / 1000.0; + recognizer.minDistSq = MAX(100, recognizer.minDistSq); + } + [recognizer updateHasCustomActivationCriteria]; +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer +{ + RNGestureHandlerState savedState = _lastState; + BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer]; + _lastState = savedState; + + return shouldBegin; +} + +- (RNGestureHandlerEventExtraData *)eventExtraData:(UIPanGestureRecognizer *)recognizer +{ + return [RNGestureHandlerEventExtraData forPan:[recognizer locationInView:recognizer.view] + withAbsolutePosition:[recognizer locationInView:recognizer.view.window] + withTranslation:[recognizer translationInView:recognizer.view.window] + withVelocity:[recognizer velocityInView:recognizer.view.window] + withNumberOfTouches:recognizer.numberOfTouches]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.h new file mode 100644 index 00000000..afca5308 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.h @@ -0,0 +1,12 @@ +// +// RNPinchHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNPinchGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.m new file mode 100644 index 00000000..47f3ea63 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNPinchHandler.m @@ -0,0 +1,95 @@ + + +// +// RNPinchHandler.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNPinchHandler.h" + +#if !TARGET_OS_TV +@interface RNBetterPinchRecognizer : UIPinchGestureRecognizer + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNBetterPinchRecognizer { + __weak RNGestureHandler *_gestureHandler; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + } + return self; +} + +- (void)handleGesture:(UIGestureRecognizer *)recognizer +{ + if (self.state == UIGestureRecognizerStateBegan) { + self.scale = 1; + } + [_gestureHandler handleGesture:recognizer]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)reset +{ + [_gestureHandler.pointerTracker reset]; + [super reset]; +} + +@end +#endif + +@implementation RNPinchGestureHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { +#if !TARGET_OS_TV + _recognizer = [[RNBetterPinchRecognizer alloc] initWithGestureHandler:self]; +#endif + } + return self; +} + +#if !TARGET_OS_TV +- (RNGestureHandlerEventExtraData *)eventExtraData:(UIPinchGestureRecognizer *)recognizer +{ + return [RNGestureHandlerEventExtraData forPinch:recognizer.scale + withFocalPoint:[recognizer locationInView:recognizer.view] + withVelocity:recognizer.velocity + withNumberOfTouches:recognizer.numberOfTouches]; +} +#endif + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.h new file mode 100644 index 00000000..ca8b0ef2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.h @@ -0,0 +1,12 @@ +// +// RNRotationHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNRotationGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.m new file mode 100644 index 00000000..b81f98c1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNRotationHandler.m @@ -0,0 +1,93 @@ +// +// RNRotationHandler.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNRotationHandler.h" + +#if !TARGET_OS_TV +@interface RNBetterRotationRecognizer : UIRotationGestureRecognizer + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNBetterRotationRecognizer { + __weak RNGestureHandler *_gestureHandler; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + } + return self; +} + +- (void)handleGesture:(UIGestureRecognizer *)recognizer +{ + if (self.state == UIGestureRecognizerStateBegan) { + self.rotation = 0; + } + [_gestureHandler handleGesture:recognizer]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; +} + +- (void)reset +{ + [_gestureHandler.pointerTracker reset]; + [super reset]; +} + +@end +#endif + +@implementation RNRotationGestureHandler + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { +#if !TARGET_OS_TV + _recognizer = [[RNBetterRotationRecognizer alloc] initWithGestureHandler:self]; +#endif + } + return self; +} + +#if !TARGET_OS_TV +- (RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer +{ + return [RNGestureHandlerEventExtraData forRotation:recognizer.rotation + withAnchorPoint:[recognizer locationInView:recognizer.view] + withVelocity:recognizer.velocity + withNumberOfTouches:recognizer.numberOfTouches]; +} +#endif + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.h new file mode 100644 index 00000000..53f53d17 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.h @@ -0,0 +1,12 @@ +// +// RNTapHandler.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNTapGestureHandler : RNGestureHandler +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.m new file mode 100644 index 00000000..04fa9552 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/Handlers/RNTapHandler.m @@ -0,0 +1,265 @@ +// +// RNTapHandler.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNTapHandler.h" + +#import + +#import + +// RNBetterTapGestureRecognizer extends UIGestureRecognizer instead of UITapGestureRecognizer +// because the latter does not allow for parameters like maxDelay, maxDuration, minPointers, +// maxDelta to be configured. Using our custom implementation of tap recognizer we are able +// to support these. + +@interface RNBetterTapGestureRecognizer : UIGestureRecognizer + +@property (nonatomic) NSUInteger numberOfTaps; +@property (nonatomic) NSTimeInterval maxDelay; +@property (nonatomic) NSTimeInterval maxDuration; +@property (nonatomic) CGFloat maxDistSq; +@property (nonatomic) CGFloat maxDeltaX; +@property (nonatomic) CGFloat maxDeltaY; +@property (nonatomic) NSInteger minPointers; + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +@end + +@implementation RNBetterTapGestureRecognizer { + __weak RNGestureHandler *_gestureHandler; + NSUInteger _tapsSoFar; + CGPoint _initPosition; + NSInteger _maxNumberOfTouches; +} + +static const NSUInteger defaultNumberOfTaps = 1; +static const NSInteger defaultMinPointers = 1; +static const CGFloat defaultMaxDelay = 0.2; +static const NSTimeInterval defaultMaxDuration = 0.5; + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:gestureHandler action:@selector(handleGesture:)])) { + _gestureHandler = gestureHandler; + _tapsSoFar = 0; + _numberOfTaps = defaultNumberOfTaps; + _minPointers = defaultMinPointers; + _maxDelay = defaultMaxDelay; + _maxDuration = defaultMaxDuration; + _maxDeltaX = NAN; + _maxDeltaY = NAN; + _maxDistSq = NAN; + } + return self; +} + +- (void)triggerAction +{ + [_gestureHandler handleGesture:self]; +} + +- (void)cancel +{ + self.enabled = NO; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesBegan:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event]; + + if (_tapsSoFar == 0) { + // this recognizer sends UNDETERMINED -> BEGAN state change event before gestureRecognizerShouldBegin + // is called (it resets the gesture handler), making it send whatever the last known state as oldState + // in the event. If we reset it here it correctly sends UNDETERMINED as oldState. + [_gestureHandler reset]; + _initPosition = [self locationInView:self.view.window]; + } + _tapsSoFar++; + if (_tapsSoFar) { + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cancel) object:nil]; + } + NSInteger numberOfTouches = [touches count]; + if (numberOfTouches > _maxNumberOfTouches) { + _maxNumberOfTouches = numberOfTouches; + } + if (!isnan(_maxDuration)) { + [self performSelector:@selector(cancel) withObject:nil afterDelay:_maxDuration]; + } + self.state = UIGestureRecognizerStatePossible; + [self triggerAction]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event]; + + NSInteger numberOfTouches = [touches count]; + if (numberOfTouches > _maxNumberOfTouches) { + _maxNumberOfTouches = numberOfTouches; + } + + if (self.state != UIGestureRecognizerStatePossible) { + return; + } + + if ([self shouldFailUnderCustomCriteria]) { + self.state = UIGestureRecognizerStateFailed; + [self triggerAction]; + [self reset]; + return; + } + + self.state = UIGestureRecognizerStatePossible; + [self triggerAction]; +} + +- (CGPoint)translationInView +{ + CGPoint currentPosition = [self locationInView:self.view.window]; + return CGPointMake(currentPosition.x - _initPosition.x, currentPosition.y - _initPosition.y); +} + +- (BOOL)shouldFailUnderCustomCriteria +{ + if (_gestureHandler.shouldCancelWhenOutside) { + if (![_gestureHandler containsPointInView]) { + return YES; + } + } + + CGPoint trans = [self translationInView]; + if (TEST_MAX_IF_NOT_NAN(fabs(trans.x), _maxDeltaX)) { + return YES; + } + if (TEST_MAX_IF_NOT_NAN(fabs(trans.y), _maxDeltaY)) { + return YES; + } + if (TEST_MAX_IF_NOT_NAN(fabs(trans.y * trans.y + trans.x * trans.x), _maxDistSq)) { + return YES; + } + return NO; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event]; + + if (_numberOfTaps == _tapsSoFar && _maxNumberOfTouches >= _minPointers) { + self.state = UIGestureRecognizerStateEnded; + [self reset]; + } else { + [self performSelector:@selector(cancel) withObject:nil afterDelay:_maxDelay]; + } +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event]; + + self.state = UIGestureRecognizerStateCancelled; + [self reset]; +} + +- (void)reset +{ + if (self.state == UIGestureRecognizerStateFailed) { + [self triggerAction]; + } + [_gestureHandler.pointerTracker reset]; + + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cancel) object:nil]; + _tapsSoFar = 0; + _maxNumberOfTouches = 0; + self.enabled = YES; + [super reset]; +} + +@end + +@implementation RNTapGestureHandler { + RNGestureHandlerEventExtraData *_lastData; +} + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super initWithTag:tag])) { + _recognizer = [[RNBetterTapGestureRecognizer alloc] initWithGestureHandler:self]; + } + return self; +} + +- (void)resetConfig +{ + [super resetConfig]; + RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer; + + recognizer.numberOfTaps = defaultNumberOfTaps; + recognizer.minPointers = defaultMinPointers; + recognizer.maxDeltaX = NAN; + recognizer.maxDeltaY = NAN; + recognizer.maxDelay = defaultMaxDelay; + recognizer.maxDuration = defaultMaxDuration; + recognizer.maxDistSq = NAN; +} + +- (void)configure:(NSDictionary *)config +{ + [super configure:config]; + RNBetterTapGestureRecognizer *recognizer = (RNBetterTapGestureRecognizer *)_recognizer; + + APPLY_INT_PROP(numberOfTaps); + APPLY_INT_PROP(minPointers); + APPLY_FLOAT_PROP(maxDeltaX); + APPLY_FLOAT_PROP(maxDeltaY); + + id prop = config[@"maxDelayMs"]; + if (prop != nil) { + recognizer.maxDelay = [RCTConvert CGFloat:prop] / 1000.0; + } + + prop = config[@"maxDurationMs"]; + if (prop != nil) { + recognizer.maxDuration = [RCTConvert CGFloat:prop] / 1000.0; + } + + prop = config[@"maxDist"]; + if (prop != nil) { + CGFloat dist = [RCTConvert CGFloat:prop]; + recognizer.maxDistSq = dist * dist; + } +} + +- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer +{ + if (recognizer.state == UIGestureRecognizerStateEnded) { + return _lastData; + } + + _lastData = [super eventExtraData:recognizer]; + return _lastData; +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer +{ + // UNDETERMINED -> BEGAN state change event is sent before this method is called, + // in RNGestureHandler it resets _lastSatate variable, making is seem like handler + // went from UNDETERMINED to BEGAN and then from UNDETERMINED to ACTIVE. + // This way we preserve _lastState between events and keep correct state flow. + RNGestureHandlerState savedState = _lastState; + BOOL shouldBegin = [super gestureRecognizerShouldBegin:gestureRecognizer]; + _lastState = savedState; + + return shouldBegin; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGHTouchEventType.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGHTouchEventType.h new file mode 100644 index 00000000..65febeb3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGHTouchEventType.h @@ -0,0 +1,9 @@ +#import + +typedef NS_ENUM(NSInteger, RNGHTouchEventType) { + RNGHTouchEventTypeUndetermined = 0, + RNGHTouchEventTypePointerDown, + RNGHTouchEventTypePointerMove, + RNGHTouchEventTypePointerUp, + RNGHTouchEventTypeCancelled, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.h new file mode 100644 index 00000000..698f0d06 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.h @@ -0,0 +1,90 @@ +#import "RNGestureHandlerActionType.h" +#import "RNGestureHandlerDirection.h" +#import "RNGestureHandlerEvents.h" +#import "RNGestureHandlerPointerTracker.h" +#import "RNGestureHandlerState.h" + +#import +#import +#import + +#define VEC_LEN_SQ(pt) (pt.x * pt.x + pt.y * pt.y) +#define TEST_MIN_IF_NOT_NAN(value, limit) \ + (!isnan(limit) && ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit))) + +#define TEST_MAX_IF_NOT_NAN(value, max) (!isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max))) + +#define APPLY_PROP(recognizer, config, type, prop, propName) \ + do { \ + id value = config[propName]; \ + if (value != nil) { \ + recognizer.prop = [RCTConvert type:value]; \ + } \ + } while (0) + +#define APPLY_FLOAT_PROP(prop) \ + do { \ + APPLY_PROP(recognizer, config, CGFloat, prop, @ #prop); \ + } while (0) +#define APPLY_INT_PROP(prop) \ + do { \ + APPLY_PROP(recognizer, config, NSInteger, prop, @ #prop); \ + } while (0) +#define APPLY_NAMED_INT_PROP(prop, propName) \ + do { \ + APPLY_PROP(recognizer, config, NSInteger, prop, propName); \ + } while (0) + +@protocol RNGestureHandlerEventEmitter + +- (void)sendEvent:(nonnull RNGestureHandlerStateChange *)event withActionType:(RNGestureHandlerActionType)actionType; + +@end + +@protocol RNRootViewGestureRecognizerDelegate + +- (void)gestureRecognizer:(nullable UIGestureRecognizer *)gestureRecognizer + didActivateInViewWithTouchHandler:(nullable UIView *)viewWithTouchHandler; + +@end + +@interface RNGestureHandler : NSObject { + @protected + UIGestureRecognizer *_recognizer; + @protected + RNGestureHandlerState _lastState; +} + ++ (nullable RNGestureHandler *)findGestureHandlerByRecognizer:(nonnull UIGestureRecognizer *)recognizer; + +- (nonnull instancetype)initWithTag:(nonnull NSNumber *)tag; + +@property (nonatomic, readonly, nonnull) NSNumber *tag; +@property (nonatomic, weak, nullable) id emitter; +@property (nonatomic, readonly, nullable) UIGestureRecognizer *recognizer; +@property (nonatomic, readonly, nullable) RNGestureHandlerPointerTracker *pointerTracker; +@property (nonatomic) BOOL enabled; +@property (nonatomic) RNGestureHandlerActionType actionType; +@property (nonatomic) BOOL shouldCancelWhenOutside; +@property (nonatomic) BOOL needsPointerData; +@property (nonatomic) BOOL manualActivation; + +- (void)bindToView:(nonnull UIView *)view; +- (void)unbindFromView; +- (void)resetConfig NS_REQUIRES_SUPER; +- (void)configure:(nullable NSDictionary *)config NS_REQUIRES_SUPER; +- (void)handleGesture:(nonnull id)recognizer; +- (void)handleGesture:(nonnull id)recognizer inState:(RNGestureHandlerState)state; +- (BOOL)containsPointInView; +- (RNGestureHandlerState)state; +- (nullable RNGestureHandlerEventExtraData *)eventExtraData:(nonnull id)recognizer; + +- (void)stopActivationBlocker; +- (void)reset; +- (void)sendEventsInState:(RNGestureHandlerState)state + forViewWithTag:(nonnull NSNumber *)reactTag + withExtraData:(nonnull RNGestureHandlerEventExtraData *)extraData; +- (void)sendEvent:(nonnull RNGestureHandlerStateChange *)event; +- (void)sendTouchEventInState:(RNGestureHandlerState)state forViewWithTag:(nonnull NSNumber *)reactTag; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.m new file mode 100644 index 00000000..ac9c7c69 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.m @@ -0,0 +1,482 @@ +#import "RNGestureHandler.h" +#import "RNManualActivationRecognizer.h" + +#import "Handlers/RNNativeViewHandler.h" + +#import + +#import + +@interface UIGestureRecognizer (GestureHandler) +@property (nonatomic, readonly) RNGestureHandler *gestureHandler; +@end + +@implementation UIGestureRecognizer (GestureHandler) + +- (RNGestureHandler *)gestureHandler +{ + id delegate = self.delegate; + if ([delegate isKindOfClass:[RNGestureHandler class]]) { + return (RNGestureHandler *)delegate; + } + return nil; +} + +@end + +typedef struct RNGHHitSlop { + CGFloat top, left, bottom, right, width, height; +} RNGHHitSlop; + +static RNGHHitSlop RNGHHitSlopEmpty = {NAN, NAN, NAN, NAN, NAN, NAN}; + +#define RNGH_HIT_SLOP_GET(key) (prop[key] == nil ? NAN : [prop[key] doubleValue]) +#define RNGH_HIT_SLOP_IS_SET(hitSlop) \ + (!isnan(hitSlop.left) || !isnan(hitSlop.right) || !isnan(hitSlop.top) || !isnan(hitSlop.bottom)) +#define RNGH_HIT_SLOP_INSET(key) (isnan(hitSlop.key) ? 0. : hitSlop.key) + +CGRect RNGHHitSlopInsetRect(CGRect rect, RNGHHitSlop hitSlop) +{ + rect.origin.x -= RNGH_HIT_SLOP_INSET(left); + rect.origin.y -= RNGH_HIT_SLOP_INSET(top); + + if (!isnan(hitSlop.width)) { + if (!isnan(hitSlop.right)) { + rect.origin.x = rect.size.width - hitSlop.width + RNGH_HIT_SLOP_INSET(right); + } + rect.size.width = hitSlop.width; + } else { + rect.size.width += (RNGH_HIT_SLOP_INSET(left) + RNGH_HIT_SLOP_INSET(right)); + } + if (!isnan(hitSlop.height)) { + if (!isnan(hitSlop.bottom)) { + rect.origin.y = rect.size.height - hitSlop.height + RNGH_HIT_SLOP_INSET(bottom); + } + rect.size.height = hitSlop.height; + } else { + rect.size.height += (RNGH_HIT_SLOP_INSET(top) + RNGH_HIT_SLOP_INSET(bottom)); + } + return rect; +} + +static NSHashTable *allGestureHandlers; + +@implementation RNGestureHandler { + RNGestureHandlerPointerTracker *_pointerTracker; + RNGestureHandlerState _state; + RNManualActivationRecognizer *_manualActivationRecognizer; + NSArray *_handlersToWaitFor; + NSArray *_simultaneousHandlers; + RNGHHitSlop _hitSlop; + uint16_t _eventCoalescingKey; +} + +- (instancetype)initWithTag:(NSNumber *)tag +{ + if ((self = [super init])) { + _pointerTracker = [[RNGestureHandlerPointerTracker alloc] initWithGestureHandler:self]; + _tag = tag; + _lastState = RNGestureHandlerStateUndetermined; + _hitSlop = RNGHHitSlopEmpty; + _state = RNGestureHandlerStateBegan; + _manualActivationRecognizer = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + allGestureHandlers = [NSHashTable weakObjectsHashTable]; + }); + + [allGestureHandlers addObject:self]; + } + return self; +} + +- (void)resetConfig +{ + self.enabled = YES; + self.manualActivation = NO; + _shouldCancelWhenOutside = NO; + _handlersToWaitFor = nil; + _simultaneousHandlers = nil; + _hitSlop = RNGHHitSlopEmpty; + _needsPointerData = NO; + + _recognizer.cancelsTouchesInView = YES; +} + +- (void)configure:(NSDictionary *)config +{ + [self resetConfig]; + _handlersToWaitFor = [RCTConvert NSNumberArray:config[@"waitFor"]]; + _simultaneousHandlers = [RCTConvert NSNumberArray:config[@"simultaneousHandlers"]]; + + id prop = config[@"enabled"]; + if (prop != nil) { + self.enabled = [RCTConvert BOOL:prop]; + } + + prop = config[@"shouldCancelWhenOutside"]; + if (prop != nil) { + _shouldCancelWhenOutside = [RCTConvert BOOL:prop]; + } + + prop = config[@"cancelsTouchesInView"]; + if (prop != nil) { + _recognizer.cancelsTouchesInView = [RCTConvert BOOL:prop]; + } + + prop = config[@"needsPointerData"]; + if (prop != nil) { + _needsPointerData = [RCTConvert BOOL:prop]; + } + + prop = config[@"manualActivation"]; + if (prop != nil) { + self.manualActivation = [RCTConvert BOOL:prop]; + } + + prop = config[@"hitSlop"]; + if ([prop isKindOfClass:[NSNumber class]]) { + _hitSlop.left = _hitSlop.right = _hitSlop.top = _hitSlop.bottom = [prop doubleValue]; + } else if (prop != nil) { + _hitSlop.left = _hitSlop.right = RNGH_HIT_SLOP_GET(@"horizontal"); + _hitSlop.top = _hitSlop.bottom = RNGH_HIT_SLOP_GET(@"vertical"); + _hitSlop.left = RNGH_HIT_SLOP_GET(@"left"); + _hitSlop.right = RNGH_HIT_SLOP_GET(@"right"); + _hitSlop.top = RNGH_HIT_SLOP_GET(@"top"); + _hitSlop.bottom = RNGH_HIT_SLOP_GET(@"bottom"); + _hitSlop.width = RNGH_HIT_SLOP_GET(@"width"); + _hitSlop.height = RNGH_HIT_SLOP_GET(@"height"); + if (isnan(_hitSlop.left) && isnan(_hitSlop.right) && !isnan(_hitSlop.width)) { + RCTLogError(@"When width is set one of left or right pads need to be defined"); + } + if (!isnan(_hitSlop.width) && !isnan(_hitSlop.left) && !isnan(_hitSlop.right)) { + RCTLogError(@"Cannot have all of left, right and width defined"); + } + if (isnan(_hitSlop.top) && isnan(_hitSlop.bottom) && !isnan(_hitSlop.height)) { + RCTLogError(@"When height is set one of top or bottom pads need to be defined"); + } + if (!isnan(_hitSlop.height) && !isnan(_hitSlop.top) && !isnan(_hitSlop.bottom)) { + RCTLogError(@"Cannot have all of top, bottom and height defined"); + } + } +} + +- (void)setEnabled:(BOOL)enabled +{ + _enabled = enabled; + self.recognizer.enabled = enabled; +} + +- (void)bindToView:(UIView *)view +{ + view.userInteractionEnabled = YES; + self.recognizer.delegate = self; + [view addGestureRecognizer:self.recognizer]; + + [self bindManualActivationToView:view]; +} + +- (void)unbindFromView +{ + [self.recognizer.view removeGestureRecognizer:self.recognizer]; + self.recognizer.delegate = nil; + + [self unbindManualActivation]; +} + +- (RNGestureHandlerEventExtraData *)eventExtraData:(UIGestureRecognizer *)recognizer +{ + return [RNGestureHandlerEventExtraData forPosition:[recognizer locationInView:recognizer.view] + withAbsolutePosition:[recognizer locationInView:recognizer.view.window] + withNumberOfTouches:recognizer.numberOfTouches]; +} + +- (void)handleGesture:(UIGestureRecognizer *)recognizer +{ + // it may happen that the gesture recognizer is reset after it's been unbound from the view, + // it that recognizer tried to send event, the app would crash because the target of the event + // would be nil. + if (recognizer.view.reactTag == nil) { + return; + } + + _state = [self recognizerState]; + [self handleGesture:recognizer inState:_state]; +} + +- (void)handleGesture:(UIGestureRecognizer *)recognizer inState:(RNGestureHandlerState)state +{ + _state = state; + RNGestureHandlerEventExtraData *eventData = [self eventExtraData:recognizer]; + [self sendEventsInState:self.state forViewWithTag:recognizer.view.reactTag withExtraData:eventData]; +} + +- (void)sendEventsInState:(RNGestureHandlerState)state + forViewWithTag:(nonnull NSNumber *)reactTag + withExtraData:(RNGestureHandlerEventExtraData *)extraData +{ + if (state != _lastState) { + // don't send change events from END to FAILED or CANCELLED, this may happen when gesture is ended in `onTouchesUp` + // callback + if (_lastState == RNGestureHandlerStateEnd && + (state == RNGestureHandlerStateFailed || state == RNGestureHandlerStateCancelled)) { + return; + } + + if (state == RNGestureHandlerStateActive) { + // Generate a unique coalescing-key each time the gesture-handler becomes active. All events will have + // the same coalescing-key allowing RCTEventDispatcher to coalesce RNGestureHandlerEvents when events are + // generated faster than they can be treated by JS thread + static uint16_t nextEventCoalescingKey = 0; + self->_eventCoalescingKey = nextEventCoalescingKey++; + + } else if (state == RNGestureHandlerStateEnd && _lastState != RNGestureHandlerStateActive && !_manualActivation) { + id event = [[RNGestureHandlerStateChange alloc] initWithReactTag:reactTag + handlerTag:_tag + state:RNGestureHandlerStateActive + prevState:_lastState + extraData:extraData]; + [self sendEvent:event]; + _lastState = RNGestureHandlerStateActive; + } + id stateEvent = [[RNGestureHandlerStateChange alloc] initWithReactTag:reactTag + handlerTag:_tag + state:state + prevState:_lastState + extraData:extraData]; + [self sendEvent:stateEvent]; + _lastState = state; + } + + if (state == RNGestureHandlerStateActive) { + id touchEvent = [[RNGestureHandlerEvent alloc] initWithReactTag:reactTag + handlerTag:_tag + state:state + extraData:extraData + coalescingKey:self->_eventCoalescingKey]; + [self sendEvent:touchEvent]; + } +} + +- (void)sendEvent:(RNGestureHandlerStateChange *)event +{ + [self.emitter sendEvent:event withActionType:self.actionType]; +} + +- (void)sendTouchEventInState:(RNGestureHandlerState)state forViewWithTag:(NSNumber *)reactTag +{ + id extraData = [RNGestureHandlerEventExtraData forEventType:_pointerTracker.eventType + withChangedPointers:_pointerTracker.changedPointersData + withAllPointers:_pointerTracker.allPointersData + withNumberOfTouches:_pointerTracker.trackedPointersCount]; + id event = [[RNGestureHandlerEvent alloc] initWithReactTag:reactTag + handlerTag:_tag + state:state + extraData:extraData + coalescingKey:[_tag intValue]]; + + [self.emitter sendEvent:event withActionType:self.actionType]; +} + +- (RNGestureHandlerState)recognizerState +{ + switch (_recognizer.state) { + case UIGestureRecognizerStateBegan: + case UIGestureRecognizerStatePossible: + return RNGestureHandlerStateBegan; + case UIGestureRecognizerStateEnded: + return RNGestureHandlerStateEnd; + case UIGestureRecognizerStateFailed: + return RNGestureHandlerStateFailed; + case UIGestureRecognizerStateCancelled: + return RNGestureHandlerStateCancelled; + case UIGestureRecognizerStateChanged: + return RNGestureHandlerStateActive; + } + return RNGestureHandlerStateUndetermined; +} + +- (RNGestureHandlerState)state +{ + // instead of mapping state of the recognizer directly, use value mapped when handleGesture was + // called, making it correct while awaiting for another handler failure + return _state; +} + +#pragma mark Manual activation + +- (void)stopActivationBlocker +{ + if (_manualActivationRecognizer != nil) { + [_manualActivationRecognizer fail]; + } +} + +- (void)setManualActivation:(BOOL)manualActivation +{ + _manualActivation = manualActivation; + + if (manualActivation) { + _manualActivationRecognizer = [[RNManualActivationRecognizer alloc] initWithGestureHandler:self]; + + if (_recognizer.view != nil) { + [_recognizer.view addGestureRecognizer:_manualActivationRecognizer]; + } + } else if (_manualActivationRecognizer != nil) { + [_manualActivationRecognizer.view removeGestureRecognizer:_manualActivationRecognizer]; + _manualActivationRecognizer = nil; + } +} + +- (void)bindManualActivationToView:(UIView *)view +{ + if (_manualActivationRecognizer != nil) { + [view addGestureRecognizer:_manualActivationRecognizer]; + } +} + +- (void)unbindManualActivation +{ + if (_manualActivationRecognizer != nil) { + [_manualActivationRecognizer.view removeGestureRecognizer:_manualActivationRecognizer]; + } +} + +#pragma mark UIGestureRecognizerDelegate + ++ (RNGestureHandler *)findGestureHandlerByRecognizer:(UIGestureRecognizer *)recognizer +{ + RNGestureHandler *handler = recognizer.gestureHandler; + if (handler != nil) { + return handler; + } + + // We may try to extract "DummyGestureHandler" in case when "otherGestureRecognizer" belongs to + // a native view being wrapped with "NativeViewGestureHandler" + UIView *reactView = recognizer.view; + while (reactView != nil && reactView.reactTag == nil) { + reactView = reactView.superview; + } + + for (UIGestureRecognizer *recognizer in reactView.gestureRecognizers) { + if ([recognizer isKindOfClass:[RNDummyGestureRecognizer class]]) { + return recognizer.gestureHandler; + } + } + + return nil; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer + shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; + if ([handler isKindOfClass:[RNNativeViewGestureHandler class]]) { + for (NSNumber *handlerTag in handler->_handlersToWaitFor) { + if ([_tag isEqual:handlerTag]) { + return YES; + } + } + } + + return NO; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer + shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + if ([_handlersToWaitFor count]) { + RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; + if (handler != nil) { + for (NSNumber *handlerTag in _handlersToWaitFor) { + if ([handler.tag isEqual:handlerTag]) { + return YES; + } + } + } + } + return NO; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer + shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + if (_recognizer.state == UIGestureRecognizerStateBegan && _recognizer.state == UIGestureRecognizerStatePossible) { + return YES; + } + + RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; + if (handler != nil) { + if ([_simultaneousHandlers count]) { + for (NSNumber *handlerTag in _simultaneousHandlers) { + if ([handler.tag isEqual:handlerTag]) { + return YES; + } + } + } else if (handler->_simultaneousHandlers) { + for (NSNumber *handlerTag in handler->_simultaneousHandlers) { + if ([self.tag isEqual:handlerTag]) { + return YES; + } + } + } + } + return NO; +} + +- (void)reset +{ + // do not reset states while gesture is tracking pointers, as gestureRecognizerShouldBegin + // might be called after some pointers are down, and after state manipulation by the user. + // Pointer tracker calls this method when it resets, and in that case it no longer tracks + // any pointers, thus entering this if + if (!_needsPointerData || _pointerTracker.trackedPointersCount == 0) { + _lastState = RNGestureHandlerStateUndetermined; + _state = RNGestureHandlerStateBegan; + } +} + +- (BOOL)containsPointInView +{ + CGPoint pt = [_recognizer locationInView:_recognizer.view]; + CGRect hitFrame = RNGHHitSlopInsetRect(_recognizer.view.bounds, _hitSlop); + return CGRectContainsPoint(hitFrame, pt); +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer +{ + if ([_handlersToWaitFor count]) { + for (RNGestureHandler *handler in [allGestureHandlers allObjects]) { + if (handler != nil && + (handler.state == RNGestureHandlerStateActive || + handler->_recognizer.state == UIGestureRecognizerStateBegan)) { + for (NSNumber *handlerTag in _handlersToWaitFor) { + if ([handler.tag isEqual:handlerTag]) { + return NO; + } + } + } + } + } + + [self reset]; + return YES; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch +{ + // If hitSlop is set we use it to determine if a given gesture recognizer should start processing + // touch stream. This only works for negative values of hitSlop as this method won't be triggered + // unless touch startes in the bounds of the attached view. To acheve similar effect with positive + // values of hitSlop one should set hitSlop for the underlying view. This limitation is due to the + // fact that hitTest method is only available at the level of UIView + if (RNGH_HIT_SLOP_IS_SET(_hitSlop)) { + CGPoint location = [touch locationInView:gestureRecognizer.view]; + CGRect hitFrame = RNGHHitSlopInsetRect(gestureRecognizer.view.bounds, _hitSlop); + return CGRectContainsPoint(hitFrame, location); + } + return YES; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.pbxproj b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.pbxproj new file mode 100644 index 00000000..ccdfc7a9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.pbxproj @@ -0,0 +1,690 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 446E7FDE1ED57CA6009282E7 /* RNGestureHandlerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 446E7FDD1ED57CA6009282E7 /* RNGestureHandlerModule.m */; }; + 446E7FE61ED6E177009282E7 /* RNGestureHandlerModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 446E7FDC1ED57CA6009282E7 /* RNGestureHandlerModule.h */; }; + 446E7FE71ED6E177009282E7 /* RNGestureHandlerState.h in Headers */ = {isa = PBXBuildFile; fileRef = 44384A781ECDE0DB006BAD02 /* RNGestureHandlerState.h */; }; + 446E7FF61ED89A31009282E7 /* RNGestureHandlerEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 446E7FF51ED89A31009282E7 /* RNGestureHandlerEvents.h */; }; + 446E7FF81ED89A4B009282E7 /* RNGestureHandlerEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 446E7FF71ED89A4B009282E7 /* RNGestureHandlerEvents.m */; }; + 448802DD1F6803DF00018214 /* RNGestureHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 448802DB1F6803DF00018214 /* RNGestureHandler.h */; }; + 448802DE1F6803DF00018214 /* RNGestureHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 448802DC1F6803DF00018214 /* RNGestureHandler.m */; }; + 44AEC7111F8F9B6C0086889F /* RNRootViewGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7101F8F9B6C0086889F /* RNRootViewGestureRecognizer.h */; }; + 44AEC7131F8F9B770086889F /* RNRootViewGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7121F8F9B770086889F /* RNRootViewGestureRecognizer.m */; }; + 44AEC7151F8F9BEF0086889F /* RNGestureHandlerRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7141F8F9BEF0086889F /* RNGestureHandlerRegistry.h */; }; + 44AEC7171F8F9C090086889F /* RNGestureHandlerRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7161F8F9C090086889F /* RNGestureHandlerRegistry.m */; }; + 44AEC71F1F8FA0700086889F /* RNGestureHandlerButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC71D1F8FA0700086889F /* RNGestureHandlerButton.h */; }; + 44AEC7201F8FA0700086889F /* RNGestureHandlerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC71E1F8FA0700086889F /* RNGestureHandlerButton.m */; }; + 44AEC72F1F8FA1270086889F /* RNLongPressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7231F8FA1270086889F /* RNLongPressHandler.h */; }; + 44AEC7301F8FA1270086889F /* RNLongPressHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7241F8FA1270086889F /* RNLongPressHandler.m */; }; + 44AEC7311F8FA1270086889F /* RNNativeViewHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7251F8FA1270086889F /* RNNativeViewHandler.h */; }; + 44AEC7321F8FA1270086889F /* RNNativeViewHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7261F8FA1270086889F /* RNNativeViewHandler.m */; }; + 44AEC7331F8FA1270086889F /* RNPanHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7271F8FA1270086889F /* RNPanHandler.h */; }; + 44AEC7341F8FA1270086889F /* RNPanHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7281F8FA1270086889F /* RNPanHandler.m */; }; + 44AEC7351F8FA1270086889F /* RNPinchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7291F8FA1270086889F /* RNPinchHandler.h */; }; + 44AEC7361F8FA1270086889F /* RNPinchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC72A1F8FA1270086889F /* RNPinchHandler.m */; }; + 44AEC7371F8FA1270086889F /* RNRotationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC72B1F8FA1270086889F /* RNRotationHandler.h */; }; + 44AEC7381F8FA1270086889F /* RNRotationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC72C1F8FA1270086889F /* RNRotationHandler.m */; }; + 44AEC7391F8FA1270086889F /* RNTapHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC72D1F8FA1270086889F /* RNTapHandler.h */; }; + 44AEC73A1F8FA1270086889F /* RNTapHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC72E1F8FA1270086889F /* RNTapHandler.m */; }; + 44BE34481F1E1AAA008679D1 /* RNGestureHandlerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44BE34471F1E1AAA008679D1 /* RNGestureHandlerManager.m */; }; + 44BE344A1F1E1ABA008679D1 /* RNGestureHandlerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BE34491F1E1ABA008679D1 /* RNGestureHandlerManager.h */; }; + 660F46742080D8F700B7B50D /* RNGestureHandlerDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 660F46732080D8F600B7B50D /* RNGestureHandlerDirection.h */; }; + 668E083C21BDD70900EDDF40 /* RNForceTouchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 668E083A21BDD70900EDDF40 /* RNForceTouchHandler.h */; }; + 668E083D21BDD70900EDDF40 /* RNForceTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 668E083B21BDD70900EDDF40 /* RNForceTouchHandler.m */; }; + 66A291D5207D032400809C27 /* RNFlingHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 66A291D3207D032400809C27 /* RNFlingHandler.m */; }; + 66A291D6207D032400809C27 /* RNFlingHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 66A291D4207D032400809C27 /* RNFlingHandler.h */; }; + B5C32A0E220C603B000FFB8D /* RNGestureHandlerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC71E1F8FA0700086889F /* RNGestureHandlerButton.m */; }; + B5C32A0F220C603B000FFB8D /* RNForceTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 668E083B21BDD70900EDDF40 /* RNForceTouchHandler.m */; }; + B5C32A10220C603B000FFB8D /* RNGestureHandlerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44BE34471F1E1AAA008679D1 /* RNGestureHandlerManager.m */; }; + B5C32A11220C603B000FFB8D /* RNLongPressHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7241F8FA1270086889F /* RNLongPressHandler.m */; }; + B5C32A12220C603B000FFB8D /* RNGestureHandlerEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 446E7FF71ED89A4B009282E7 /* RNGestureHandlerEvents.m */; }; + B5C32A13220C603B000FFB8D /* RNPanHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7281F8FA1270086889F /* RNPanHandler.m */; }; + B5C32A14220C603B000FFB8D /* RNGestureHandlerRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7161F8F9C090086889F /* RNGestureHandlerRegistry.m */; }; + B5C32A15220C603B000FFB8D /* RNGestureHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 448802DC1F6803DF00018214 /* RNGestureHandler.m */; }; + B5C32A16220C603B000FFB8D /* RNTapHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC72E1F8FA1270086889F /* RNTapHandler.m */; }; + B5C32A17220C603B000FFB8D /* RNGestureHandlerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 446E7FDD1ED57CA6009282E7 /* RNGestureHandlerModule.m */; }; + B5C32A18220C603B000FFB8D /* RNRotationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC72C1F8FA1270086889F /* RNRotationHandler.m */; }; + B5C32A19220C603B000FFB8D /* RNNativeViewHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7261F8FA1270086889F /* RNNativeViewHandler.m */; }; + B5C32A1A220C603B000FFB8D /* RNRootViewGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC7121F8F9B770086889F /* RNRootViewGestureRecognizer.m */; }; + B5C32A1B220C603B000FFB8D /* RNFlingHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 66A291D3207D032400809C27 /* RNFlingHandler.m */; }; + B5C32A1C220C603B000FFB8D /* RNPinchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AEC72A1F8FA1270086889F /* RNPinchHandler.m */; }; + B5C32A1E220C603B000FFB8D /* RNForceTouchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 668E083A21BDD70900EDDF40 /* RNForceTouchHandler.h */; }; + B5C32A1F220C603B000FFB8D /* RNFlingHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 66A291D4207D032400809C27 /* RNFlingHandler.h */; }; + B5C32A20220C603B000FFB8D /* RNLongPressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7231F8FA1270086889F /* RNLongPressHandler.h */; }; + B5C32A21220C603B000FFB8D /* RNGestureHandlerModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 446E7FDC1ED57CA6009282E7 /* RNGestureHandlerModule.h */; }; + B5C32A22220C603B000FFB8D /* RNPinchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7291F8FA1270086889F /* RNPinchHandler.h */; }; + B5C32A23220C603B000FFB8D /* RNGestureHandlerRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7141F8F9BEF0086889F /* RNGestureHandlerRegistry.h */; }; + B5C32A24220C603B000FFB8D /* RNGestureHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 448802DB1F6803DF00018214 /* RNGestureHandler.h */; }; + B5C32A25220C603B000FFB8D /* RNRotationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC72B1F8FA1270086889F /* RNRotationHandler.h */; }; + B5C32A26220C603B000FFB8D /* RNPanHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7271F8FA1270086889F /* RNPanHandler.h */; }; + B5C32A27220C603B000FFB8D /* RNGestureHandlerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BE34491F1E1ABA008679D1 /* RNGestureHandlerManager.h */; }; + B5C32A28220C603B000FFB8D /* RNGestureHandlerEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 446E7FF51ED89A31009282E7 /* RNGestureHandlerEvents.h */; }; + B5C32A29220C603B000FFB8D /* RNTapHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC72D1F8FA1270086889F /* RNTapHandler.h */; }; + B5C32A2A220C603B000FFB8D /* RNRootViewGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7101F8F9B6C0086889F /* RNRootViewGestureRecognizer.h */; }; + B5C32A2B220C603B000FFB8D /* RNNativeViewHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC7251F8FA1270086889F /* RNNativeViewHandler.h */; }; + B5C32A2C220C603B000FFB8D /* RNGestureHandlerState.h in Headers */ = {isa = PBXBuildFile; fileRef = 44384A781ECDE0DB006BAD02 /* RNGestureHandlerState.h */; }; + B5C32A2D220C603B000FFB8D /* RNGestureHandlerButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AEC71D1F8FA0700086889F /* RNGestureHandlerButton.h */; }; + B5C32A2E220C603B000FFB8D /* RNGestureHandlerDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 660F46732080D8F600B7B50D /* RNGestureHandlerDirection.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 58B511D91A9E6C8500147676 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5C32A30220C603B000FFB8D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 134814201AA4EA6300B7C361 /* libRNGestureHandler.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNGestureHandler.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 44384A781ECDE0DB006BAD02 /* RNGestureHandlerState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerState.h; sourceTree = ""; }; + 446E7FDC1ED57CA6009282E7 /* RNGestureHandlerModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerModule.h; sourceTree = ""; }; + 446E7FDD1ED57CA6009282E7 /* RNGestureHandlerModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNGestureHandlerModule.m; sourceTree = ""; }; + 446E7FF51ED89A31009282E7 /* RNGestureHandlerEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerEvents.h; sourceTree = ""; }; + 446E7FF71ED89A4B009282E7 /* RNGestureHandlerEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNGestureHandlerEvents.m; sourceTree = ""; }; + 448802DB1F6803DF00018214 /* RNGestureHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandler.h; sourceTree = ""; }; + 448802DC1F6803DF00018214 /* RNGestureHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNGestureHandler.m; sourceTree = ""; }; + 44AEC7101F8F9B6C0086889F /* RNRootViewGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNRootViewGestureRecognizer.h; sourceTree = ""; }; + 44AEC7121F8F9B770086889F /* RNRootViewGestureRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNRootViewGestureRecognizer.m; sourceTree = ""; }; + 44AEC7141F8F9BEF0086889F /* RNGestureHandlerRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerRegistry.h; sourceTree = ""; }; + 44AEC7161F8F9C090086889F /* RNGestureHandlerRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNGestureHandlerRegistry.m; sourceTree = ""; }; + 44AEC71D1F8FA0700086889F /* RNGestureHandlerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerButton.h; sourceTree = ""; }; + 44AEC71E1F8FA0700086889F /* RNGestureHandlerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNGestureHandlerButton.m; sourceTree = ""; }; + 44AEC7231F8FA1270086889F /* RNLongPressHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNLongPressHandler.h; path = Handlers/RNLongPressHandler.h; sourceTree = ""; }; + 44AEC7241F8FA1270086889F /* RNLongPressHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNLongPressHandler.m; path = Handlers/RNLongPressHandler.m; sourceTree = ""; }; + 44AEC7251F8FA1270086889F /* RNNativeViewHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNNativeViewHandler.h; path = Handlers/RNNativeViewHandler.h; sourceTree = ""; }; + 44AEC7261F8FA1270086889F /* RNNativeViewHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNNativeViewHandler.m; path = Handlers/RNNativeViewHandler.m; sourceTree = ""; }; + 44AEC7271F8FA1270086889F /* RNPanHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNPanHandler.h; path = Handlers/RNPanHandler.h; sourceTree = ""; }; + 44AEC7281F8FA1270086889F /* RNPanHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNPanHandler.m; path = Handlers/RNPanHandler.m; sourceTree = ""; }; + 44AEC7291F8FA1270086889F /* RNPinchHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNPinchHandler.h; path = Handlers/RNPinchHandler.h; sourceTree = ""; }; + 44AEC72A1F8FA1270086889F /* RNPinchHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNPinchHandler.m; path = Handlers/RNPinchHandler.m; sourceTree = ""; }; + 44AEC72B1F8FA1270086889F /* RNRotationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNRotationHandler.h; path = Handlers/RNRotationHandler.h; sourceTree = ""; }; + 44AEC72C1F8FA1270086889F /* RNRotationHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNRotationHandler.m; path = Handlers/RNRotationHandler.m; sourceTree = ""; }; + 44AEC72D1F8FA1270086889F /* RNTapHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNTapHandler.h; path = Handlers/RNTapHandler.h; sourceTree = ""; }; + 44AEC72E1F8FA1270086889F /* RNTapHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNTapHandler.m; path = Handlers/RNTapHandler.m; sourceTree = ""; }; + 44BE34471F1E1AAA008679D1 /* RNGestureHandlerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNGestureHandlerManager.m; sourceTree = ""; }; + 44BE34491F1E1ABA008679D1 /* RNGestureHandlerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerManager.h; sourceTree = ""; }; + 660F46732080D8F600B7B50D /* RNGestureHandlerDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNGestureHandlerDirection.h; sourceTree = ""; }; + 668E083A21BDD70900EDDF40 /* RNForceTouchHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNForceTouchHandler.h; path = Handlers/RNForceTouchHandler.h; sourceTree = ""; }; + 668E083B21BDD70900EDDF40 /* RNForceTouchHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNForceTouchHandler.m; path = Handlers/RNForceTouchHandler.m; sourceTree = ""; }; + 66A291D3207D032400809C27 /* RNFlingHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNFlingHandler.m; path = Handlers/RNFlingHandler.m; sourceTree = ""; }; + 66A291D4207D032400809C27 /* RNFlingHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNFlingHandler.h; path = Handlers/RNFlingHandler.h; sourceTree = ""; }; + B5C32A36220C603B000FFB8D /* libRNGestureHandler-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libRNGestureHandler-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 58B511D81A9E6C8500147676 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5C32A2F220C603B000FFB8D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 134814211AA4EA7D00B7C361 /* Products */ = { + isa = PBXGroup; + children = ( + 134814201AA4EA6300B7C361 /* libRNGestureHandler.a */, + ); + name = Products; + sourceTree = ""; + }; + 44AEC7221F8FA1150086889F /* Handlers */ = { + isa = PBXGroup; + children = ( + 668E083A21BDD70900EDDF40 /* RNForceTouchHandler.h */, + 668E083B21BDD70900EDDF40 /* RNForceTouchHandler.m */, + 66A291D4207D032400809C27 /* RNFlingHandler.h */, + 66A291D3207D032400809C27 /* RNFlingHandler.m */, + 44AEC7231F8FA1270086889F /* RNLongPressHandler.h */, + 44AEC7241F8FA1270086889F /* RNLongPressHandler.m */, + 44AEC7251F8FA1270086889F /* RNNativeViewHandler.h */, + 44AEC7261F8FA1270086889F /* RNNativeViewHandler.m */, + 44AEC7271F8FA1270086889F /* RNPanHandler.h */, + 44AEC7281F8FA1270086889F /* RNPanHandler.m */, + 44AEC7291F8FA1270086889F /* RNPinchHandler.h */, + 44AEC72A1F8FA1270086889F /* RNPinchHandler.m */, + 44AEC72B1F8FA1270086889F /* RNRotationHandler.h */, + 44AEC72C1F8FA1270086889F /* RNRotationHandler.m */, + 44AEC72D1F8FA1270086889F /* RNTapHandler.h */, + 44AEC72E1F8FA1270086889F /* RNTapHandler.m */, + ); + name = Handlers; + sourceTree = ""; + }; + 58B511D21A9E6C8500147676 = { + isa = PBXGroup; + children = ( + 660F46732080D8F600B7B50D /* RNGestureHandlerDirection.h */, + 44AEC7221F8FA1150086889F /* Handlers */, + 44AEC7161F8F9C090086889F /* RNGestureHandlerRegistry.m */, + 44AEC7141F8F9BEF0086889F /* RNGestureHandlerRegistry.h */, + 44AEC7121F8F9B770086889F /* RNRootViewGestureRecognizer.m */, + 44AEC7101F8F9B6C0086889F /* RNRootViewGestureRecognizer.h */, + 448802DB1F6803DF00018214 /* RNGestureHandler.h */, + 448802DC1F6803DF00018214 /* RNGestureHandler.m */, + 44BE34491F1E1ABA008679D1 /* RNGestureHandlerManager.h */, + 44BE34471F1E1AAA008679D1 /* RNGestureHandlerManager.m */, + 446E7FF71ED89A4B009282E7 /* RNGestureHandlerEvents.m */, + 446E7FF51ED89A31009282E7 /* RNGestureHandlerEvents.h */, + 446E7FDC1ED57CA6009282E7 /* RNGestureHandlerModule.h */, + 446E7FDD1ED57CA6009282E7 /* RNGestureHandlerModule.m */, + 44384A781ECDE0DB006BAD02 /* RNGestureHandlerState.h */, + 44AEC71D1F8FA0700086889F /* RNGestureHandlerButton.h */, + 44AEC71E1F8FA0700086889F /* RNGestureHandlerButton.m */, + 134814211AA4EA7D00B7C361 /* Products */, + B5C32A36220C603B000FFB8D /* libRNGestureHandler-tvOS.a */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 446E7FE51ED6DBD8009282E7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 668E083C21BDD70900EDDF40 /* RNForceTouchHandler.h in Headers */, + 66A291D6207D032400809C27 /* RNFlingHandler.h in Headers */, + 44AEC72F1F8FA1270086889F /* RNLongPressHandler.h in Headers */, + 446E7FE61ED6E177009282E7 /* RNGestureHandlerModule.h in Headers */, + 44AEC7351F8FA1270086889F /* RNPinchHandler.h in Headers */, + 44AEC7151F8F9BEF0086889F /* RNGestureHandlerRegistry.h in Headers */, + 448802DD1F6803DF00018214 /* RNGestureHandler.h in Headers */, + 44AEC7371F8FA1270086889F /* RNRotationHandler.h in Headers */, + 44AEC7331F8FA1270086889F /* RNPanHandler.h in Headers */, + 44BE344A1F1E1ABA008679D1 /* RNGestureHandlerManager.h in Headers */, + 446E7FF61ED89A31009282E7 /* RNGestureHandlerEvents.h in Headers */, + 44AEC7391F8FA1270086889F /* RNTapHandler.h in Headers */, + 44AEC7111F8F9B6C0086889F /* RNRootViewGestureRecognizer.h in Headers */, + 44AEC7311F8FA1270086889F /* RNNativeViewHandler.h in Headers */, + 446E7FE71ED6E177009282E7 /* RNGestureHandlerState.h in Headers */, + 44AEC71F1F8FA0700086889F /* RNGestureHandlerButton.h in Headers */, + 660F46742080D8F700B7B50D /* RNGestureHandlerDirection.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5C32A1D220C603B000FFB8D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B5C32A1E220C603B000FFB8D /* RNForceTouchHandler.h in Headers */, + B5C32A1F220C603B000FFB8D /* RNFlingHandler.h in Headers */, + B5C32A20220C603B000FFB8D /* RNLongPressHandler.h in Headers */, + B5C32A21220C603B000FFB8D /* RNGestureHandlerModule.h in Headers */, + B5C32A22220C603B000FFB8D /* RNPinchHandler.h in Headers */, + B5C32A23220C603B000FFB8D /* RNGestureHandlerRegistry.h in Headers */, + B5C32A24220C603B000FFB8D /* RNGestureHandler.h in Headers */, + B5C32A25220C603B000FFB8D /* RNRotationHandler.h in Headers */, + B5C32A26220C603B000FFB8D /* RNPanHandler.h in Headers */, + B5C32A27220C603B000FFB8D /* RNGestureHandlerManager.h in Headers */, + B5C32A28220C603B000FFB8D /* RNGestureHandlerEvents.h in Headers */, + B5C32A29220C603B000FFB8D /* RNTapHandler.h in Headers */, + B5C32A2A220C603B000FFB8D /* RNRootViewGestureRecognizer.h in Headers */, + B5C32A2B220C603B000FFB8D /* RNNativeViewHandler.h in Headers */, + B5C32A2C220C603B000FFB8D /* RNGestureHandlerState.h in Headers */, + B5C32A2D220C603B000FFB8D /* RNGestureHandlerButton.h in Headers */, + B5C32A2E220C603B000FFB8D /* RNGestureHandlerDirection.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 58B511DA1A9E6C8500147676 /* RNGestureHandler */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNGestureHandler" */; + buildPhases = ( + 58B511D71A9E6C8500147676 /* Sources */, + 446E7FE51ED6DBD8009282E7 /* Headers */, + 58B511D81A9E6C8500147676 /* Frameworks */, + 58B511D91A9E6C8500147676 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNGestureHandler; + productName = RCTDataManager; + productReference = 134814201AA4EA6300B7C361 /* libRNGestureHandler.a */; + productType = "com.apple.product-type.library.static"; + }; + B5C32A0C220C603B000FFB8D /* RNGestureHandler-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = B5C32A31220C603B000FFB8D /* Build configuration list for PBXNativeTarget "RNGestureHandler-tvOS" */; + buildPhases = ( + B5C32A0D220C603B000FFB8D /* Sources */, + B5C32A1D220C603B000FFB8D /* Headers */, + B5C32A2F220C603B000FFB8D /* Frameworks */, + B5C32A30220C603B000FFB8D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "RNGestureHandler-tvOS"; + productName = RCTDataManager; + productReference = B5C32A36220C603B000FFB8D /* libRNGestureHandler-tvOS.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58B511D31A9E6C8500147676 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 610; + ORGANIZATIONNAME = "Software Mansion"; + TargetAttributes = { + 58B511DA1A9E6C8500147676 = { + CreatedOnToolsVersion = 6.1.1; + }; + }; + }; + buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNGestureHandler" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 58B511D21A9E6C8500147676; + productRefGroup = 58B511D21A9E6C8500147676; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58B511DA1A9E6C8500147676 /* RNGestureHandler */, + B5C32A0C220C603B000FFB8D /* RNGestureHandler-tvOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 58B511D71A9E6C8500147676 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 44AEC7201F8FA0700086889F /* RNGestureHandlerButton.m in Sources */, + 668E083D21BDD70900EDDF40 /* RNForceTouchHandler.m in Sources */, + 44BE34481F1E1AAA008679D1 /* RNGestureHandlerManager.m in Sources */, + 44AEC7301F8FA1270086889F /* RNLongPressHandler.m in Sources */, + 446E7FF81ED89A4B009282E7 /* RNGestureHandlerEvents.m in Sources */, + 44AEC7341F8FA1270086889F /* RNPanHandler.m in Sources */, + 44AEC7171F8F9C090086889F /* RNGestureHandlerRegistry.m in Sources */, + 448802DE1F6803DF00018214 /* RNGestureHandler.m in Sources */, + 44AEC73A1F8FA1270086889F /* RNTapHandler.m in Sources */, + 446E7FDE1ED57CA6009282E7 /* RNGestureHandlerModule.m in Sources */, + 44AEC7381F8FA1270086889F /* RNRotationHandler.m in Sources */, + 44AEC7321F8FA1270086889F /* RNNativeViewHandler.m in Sources */, + 44AEC7131F8F9B770086889F /* RNRootViewGestureRecognizer.m in Sources */, + 66A291D5207D032400809C27 /* RNFlingHandler.m in Sources */, + 44AEC7361F8FA1270086889F /* RNPinchHandler.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5C32A0D220C603B000FFB8D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B5C32A0E220C603B000FFB8D /* RNGestureHandlerButton.m in Sources */, + B5C32A0F220C603B000FFB8D /* RNForceTouchHandler.m in Sources */, + B5C32A10220C603B000FFB8D /* RNGestureHandlerManager.m in Sources */, + B5C32A11220C603B000FFB8D /* RNLongPressHandler.m in Sources */, + B5C32A12220C603B000FFB8D /* RNGestureHandlerEvents.m in Sources */, + B5C32A13220C603B000FFB8D /* RNPanHandler.m in Sources */, + B5C32A14220C603B000FFB8D /* RNGestureHandlerRegistry.m in Sources */, + B5C32A15220C603B000FFB8D /* RNGestureHandler.m in Sources */, + B5C32A16220C603B000FFB8D /* RNTapHandler.m in Sources */, + B5C32A17220C603B000FFB8D /* RNGestureHandlerModule.m in Sources */, + B5C32A18220C603B000FFB8D /* RNRotationHandler.m in Sources */, + B5C32A19220C603B000FFB8D /* RNNativeViewHandler.m in Sources */, + B5C32A1A220C603B000FFB8D /* RNRootViewGestureRecognizer.m in Sources */, + B5C32A1B220C603B000FFB8D /* RNFlingHandler.m in Sources */, + B5C32A1C220C603B000FFB8D /* RNPinchHandler.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3C75380331224952A9D19739 /* Testflight */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNGestureHandler; + SKIP_INSTALL = YES; + }; + name = Testflight; + }; + 58B511ED1A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 58B511EE1A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58B511F01A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNGestureHandler; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 58B511F11A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNGestureHandler; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 64C7ABFB934A41BFB09378ED /* Testflight */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Testflight; + }; + 6E1E231AAE4C4EB5B94B5418 /* Testflight */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Testflight; + }; + 8F4E4CFC1C3048678D76E403 /* Testflight */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNGestureHandler; + SKIP_INSTALL = YES; + }; + name = Testflight; + }; + B5C32A32220C603B000FFB8D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + B5C32A33220C603B000FFB8D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + B5C32A34220C603B000FFB8D /* Testflight */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + }; + name = Testflight; + }; + B5C32A35220C603B000FFB8D /* Testflight */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNGestureHandler; + SKIP_INSTALL = YES; + }; + name = Testflight; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNGestureHandler" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511ED1A9E6C8500147676 /* Debug */, + 58B511EE1A9E6C8500147676 /* Release */, + 6E1E231AAE4C4EB5B94B5418 /* Testflight */, + 64C7ABFB934A41BFB09378ED /* Testflight */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNGestureHandler" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511F01A9E6C8500147676 /* Debug */, + 58B511F11A9E6C8500147676 /* Release */, + 3C75380331224952A9D19739 /* Testflight */, + 8F4E4CFC1C3048678D76E403 /* Testflight */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B5C32A31220C603B000FFB8D /* Build configuration list for PBXNativeTarget "RNGestureHandler-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B5C32A32220C603B000FFB8D /* Debug */, + B5C32A33220C603B000FFB8D /* Release */, + B5C32A34220C603B000FFB8D /* Testflight */, + B5C32A35220C603B000FFB8D /* Testflight */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58B511D31A9E6C8500147676 /* Project object */; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerActionType.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerActionType.h new file mode 100644 index 00000000..26adddc9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerActionType.h @@ -0,0 +1,10 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerActionType) { + RNGestureHandlerActionTypeReanimatedWorklet = 1, // Reanimated worklet + RNGestureHandlerActionTypeNativeAnimatedEvent, // Animated.event with useNativeDriver: true + RNGestureHandlerActionTypeJSFunctionOldAPI, // JS function or Animated.event with useNativeDriver: false using old + // RNGH API + RNGestureHandlerActionTypeJSFunctionNewAPI, // JS function or Animated.event with useNativeDriver: false using new + // RNGH API +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.h new file mode 100644 index 00000000..dd0ad486 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.h @@ -0,0 +1,19 @@ +// +// RNGestureHandlerButton.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNGestureHandlerButton : UIControl + +/** + * Insets used when hit testing inside this view. + */ +@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets; +@property (nonatomic) BOOL userEnabled; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.m new file mode 100644 index 00000000..d48e5266 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButton.m @@ -0,0 +1,77 @@ +// +// RNGestureHandlerButton.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandlerButton.h" + +#import + +/** + * Gesture Handler Button components overrides standard mechanism used by RN + * to determine touch target, which normally would reurn the UIView that is placed + * as the deepest element in the view hierarchy. + * It's done this way as it allows for the actual target determination to run in JS + * where we can travers up the view ierarchy to find first element that want to became + * JS responder. + * + * Since we want to use native button (or actually a `UIControl`) we need to determine + * the target in native. This makes it impossible for JS responder based components to + * function as a subviews of the button component. Here we override `hitTest:withEvent:` + * method and we only determine the target to be either a subclass of `UIControl` or a + * view that has gesture recognizers registered. + * + * This "default" behaviour of target determinator should be sufficient in most of the + * cases as in fact it is not that common UI pattern to have many nested buttons (usually + * there are just two levels e.g. when you have clickable table cells with additional + * buttons). In cases when the default behaviour is insufficient it is recommended to use + * `TapGestureHandler` instead of a button which gives much better flexibility as far as + * controlling the touch flow. + */ +@implementation RNGestureHandlerButton + +- (instancetype)init +{ + self = [super init]; + if (self) { + _hitTestEdgeInsets = UIEdgeInsetsZero; + _userEnabled = YES; +#if !TARGET_OS_TV + [self setExclusiveTouch:YES]; +#endif + } + return self; +} + +- (BOOL)shouldHandleTouch:(UIView *)view +{ + if ([view isKindOfClass:[RNGestureHandlerButton class]]) { + RNGestureHandlerButton *button = (RNGestureHandlerButton *)view; + return button.userEnabled; + } + + return [view isKindOfClass:[UIControl class]] || [view.gestureRecognizers count] > 0; +} + +- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event +{ + if (UIEdgeInsetsEqualToEdgeInsets(self.hitTestEdgeInsets, UIEdgeInsetsZero)) { + return [super pointInside:point withEvent:event]; + } + CGRect hitFrame = UIEdgeInsetsInsetRect(self.bounds, self.hitTestEdgeInsets); + return CGRectContainsPoint(hitFrame, point); +} + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event +{ + UIView *inner = [super hitTest:point withEvent:event]; + while (inner && ![self shouldHandleTouch:inner]) { + inner = inner.superview; + } + return inner; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.h new file mode 100644 index 00000000..e2c2a98a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.h @@ -0,0 +1,17 @@ +#ifdef RN_FABRIC_ENABLED + +#import + +#import + +#import "RNGestureHandlerButton.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNGestureHandlerButtonComponentView : RCTViewComponentView + +@end + +NS_ASSUME_NONNULL_END + +#endif // RN_FABRIC_ENABLED diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm new file mode 100644 index 00000000..27219e22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonComponentView.mm @@ -0,0 +1,60 @@ +#ifdef RN_FABRIC_ENABLED + +#import "RNGestureHandlerButtonComponentView.h" + +#import +#import + +#import +#import +#import +#import + +#import "RNGestureHandlerButton.h" + +using namespace facebook::react; + +@interface RNGestureHandlerButtonComponentView () +@end + +@implementation RNGestureHandlerButtonComponentView { + RNGestureHandlerButton *_buttonView; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + _buttonView = [[RNGestureHandlerButton alloc] initWithFrame:self.bounds]; + + self.contentView = _buttonView; + } + + return self; +} + +#pragma mark - RCTComponentViewProtocol + ++ (ComponentDescriptorProvider)componentDescriptorProvider +{ + return concreteComponentDescriptorProvider(); +} + +- (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps +{ + const auto &newProps = *std::static_pointer_cast(props); + + _buttonView.userEnabled = newProps.enabled; + _buttonView.exclusiveTouch = newProps.exclusive; + + [super updateProps:props oldProps:oldProps]; +} +@end + +Class RNGestureHandlerButtonCls(void) +{ + return RNGestureHandlerButtonComponentView.class; +} + +#endif // RN_FABRIC_ENABLED diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.h new file mode 100644 index 00000000..3105a9c3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.h @@ -0,0 +1,5 @@ +#import + +@interface RNGestureHandlerButtonManager : RCTViewManager + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.m new file mode 100644 index 00000000..3dba8c3c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerButtonManager.m @@ -0,0 +1,34 @@ +#import "RNGestureHandlerButtonManager.h" +#import "RNGestureHandlerButton.h" + +@implementation RNGestureHandlerButtonManager + +RCT_EXPORT_MODULE(RNGestureHandlerButton) + +RCT_CUSTOM_VIEW_PROPERTY(enabled, BOOL, RNGestureHandlerButton) +{ + view.userEnabled = json == nil ? YES : [RCTConvert BOOL:json]; +} +#if !TARGET_OS_TV +RCT_CUSTOM_VIEW_PROPERTY(exclusive, BOOL, RNGestureHandlerButton) +{ + [view setExclusiveTouch:json == nil ? YES : [RCTConvert BOOL:json]]; +} +#endif +RCT_CUSTOM_VIEW_PROPERTY(hitSlop, UIEdgeInsets, RNGestureHandlerButton) +{ + if (json) { + UIEdgeInsets hitSlopInsets = [RCTConvert UIEdgeInsets:json]; + view.hitTestEdgeInsets = + UIEdgeInsetsMake(-hitSlopInsets.top, -hitSlopInsets.left, -hitSlopInsets.bottom, -hitSlopInsets.right); + } else { + view.hitTestEdgeInsets = defaultView.hitTestEdgeInsets; + } +} + +- (UIView *)view +{ + return [RNGestureHandlerButton new]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerDirection.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerDirection.h new file mode 100644 index 00000000..e0f6b955 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerDirection.h @@ -0,0 +1,8 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerDirection) { + RNGestureHandlerDirectionRight = 1, + RNGestureHandlerDirectionLeft = 2, + RNGestureHandlerDirectionUp = 4, + RNGestureHandlerDirectionDown = 8, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.h new file mode 100644 index 00000000..e86fdf9a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.h @@ -0,0 +1,64 @@ +#import + +#import +#import + +#import "RNGHTouchEventType.h" +#import "RNGestureHandlerState.h" + +@interface RNGestureHandlerEventExtraData : NSObject + +@property (readonly) NSDictionary *data; + +- (instancetype)initWithData:(NSDictionary *)data; + ++ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches + withDuration:(NSUInteger)duration; ++ (RNGestureHandlerEventExtraData *)forPan:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withTranslation:(CGPoint)translation + withVelocity:(CGPoint)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forForce:(CGFloat)force + forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPinch:(CGFloat)scale + withFocalPoint:(CGPoint)focalPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forRotation:(CGFloat)rotation + withAnchorPoint:(CGPoint)anchorPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forEventType:(RNGHTouchEventType)eventType + withChangedPointers:(NSArray *)changedPointers + withAllPointers:(NSArray *)allPointers + withNumberOfTouches:(NSUInteger)numberOfTouches; ++ (RNGestureHandlerEventExtraData *)forPointerInside:(BOOL)pointerInside; +@end + +@interface RNGestureHandlerEvent : NSObject + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + extraData:(RNGestureHandlerEventExtraData *)extraData + coalescingKey:(uint16_t)coalescingKey NS_DESIGNATED_INITIALIZER; + +@end + +@interface RNGestureHandlerStateChange : NSObject + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + prevState:(RNGestureHandlerState)prevState + extraData:(RNGestureHandlerEventExtraData *)extraData NS_DESIGNATED_INITIALIZER; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.m new file mode 100644 index 00000000..dba8cb2a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerEvents.m @@ -0,0 +1,250 @@ +#import "RNGestureHandlerEvents.h" + +#define SAFE_VELOCITY(velocity) @(isnan(velocity) ? 0 : velocity) + +@implementation RNGestureHandlerEventExtraData + +- (instancetype)initWithData:(NSDictionary *)data; +{ + if ((self = [super init])) { + _data = data; + } + return self; +} + ++ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"x" : @(position.x), + @"y" : @(position.y), + @"absoluteX" : @(absolutePosition.x), + @"absoluteY" : @(absolutePosition.y), + @"numberOfPointers" : @(numberOfTouches) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches + withDuration:(NSUInteger)duration +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"x" : @(position.x), + @"y" : @(position.y), + @"absoluteX" : @(absolutePosition.x), + @"absoluteY" : @(absolutePosition.y), + @"numberOfPointers" : @(numberOfTouches), + @"duration" : @(duration) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forPan:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withTranslation:(CGPoint)translation + withVelocity:(CGPoint)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"x" : @(position.x), + @"y" : @(position.y), + @"absoluteX" : @(absolutePosition.x), + @"absoluteY" : @(absolutePosition.y), + @"translationX" : @(translation.x), + @"translationY" : @(translation.y), + @"velocityX" : SAFE_VELOCITY(velocity.x), + @"velocityY" : SAFE_VELOCITY(velocity.y), + @"numberOfPointers" : @(numberOfTouches) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forForce:(CGFloat)force + forPosition:(CGPoint)position + withAbsolutePosition:(CGPoint)absolutePosition + withNumberOfTouches:(NSUInteger)numberOfTouches +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"x" : @(position.x), + @"y" : @(position.y), + @"absoluteX" : @(absolutePosition.x), + @"absoluteY" : @(absolutePosition.y), + @"force" : @(force), + @"numberOfPointers" : @(numberOfTouches) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forPinch:(CGFloat)scale + withFocalPoint:(CGPoint)focalPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"scale" : @(scale), + @"focalX" : @(focalPoint.x), + @"focalY" : @(focalPoint.y), + @"velocity" : SAFE_VELOCITY(velocity), + @"numberOfPointers" : @(numberOfTouches) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forRotation:(CGFloat)rotation + withAnchorPoint:(CGPoint)anchorPoint + withVelocity:(CGFloat)velocity + withNumberOfTouches:(NSUInteger)numberOfTouches +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"rotation" : @(rotation), + @"anchorX" : @(anchorPoint.x), + @"anchorY" : @(anchorPoint.y), + @"velocity" : SAFE_VELOCITY(velocity), + @"numberOfPointers" : @(numberOfTouches) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forEventType:(RNGHTouchEventType)eventType + withChangedPointers:(NSArray *)changedPointers + withAllPointers:(NSArray *)allPointers + withNumberOfTouches:(NSUInteger)numberOfTouches +{ + if (changedPointers == nil || allPointers == nil) { + changedPointers = @[]; + allPointers = @[]; + eventType = RNGHTouchEventTypeUndetermined; + } + + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{ + @"eventType" : @(eventType), + @"changedTouches" : changedPointers, + @"allTouches" : allPointers, + @"numberOfTouches" : @(numberOfTouches) + }]; +} + ++ (RNGestureHandlerEventExtraData *)forPointerInside:(BOOL)pointerInside +{ + return [[RNGestureHandlerEventExtraData alloc] initWithData:@{@"pointerInside" : @(pointerInside)}]; +} + +@end + +@implementation RNGestureHandlerEvent { + NSNumber *_handlerTag; + RNGestureHandlerState _state; + RNGestureHandlerEventExtraData *_extraData; +} + +@synthesize viewTag = _viewTag; +@synthesize coalescingKey = _coalescingKey; + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + extraData:(RNGestureHandlerEventExtraData *)extraData + coalescingKey:(uint16_t)coalescingKey +{ + if ((self = [super init])) { + _viewTag = reactTag; + _handlerTag = handlerTag; + _state = state; + _extraData = extraData; + _coalescingKey = coalescingKey; + } + return self; +} + +RCT_NOT_IMPLEMENTED(-(instancetype)init) + +- (NSString *)eventName +{ + return @"onGestureHandlerEvent"; +} + +- (BOOL)canCoalesce +{ + return YES; +} + +- (id)coalesceWithEvent:(id)newEvent; +{ + return newEvent; +} + ++ (NSString *)moduleDotMethod +{ + return @"RCTEventEmitter.receiveEvent"; +} + +- (NSArray *)arguments +{ + NSMutableDictionary *body = [NSMutableDictionary dictionaryWithDictionary:_extraData.data]; + [body setObject:_viewTag forKey:@"target"]; + [body setObject:_handlerTag forKey:@"handlerTag"]; + [body setObject:@(_state) forKey:@"state"]; + return @[ self.viewTag, @"onGestureHandlerEvent", body ]; +} + +@end + +@implementation RNGestureHandlerStateChange { + NSNumber *_handlerTag; + RNGestureHandlerState _state; + RNGestureHandlerState _prevState; + RNGestureHandlerEventExtraData *_extraData; +} + +@synthesize viewTag = _viewTag; +@synthesize coalescingKey = _coalescingKey; + +- (instancetype)initWithReactTag:(NSNumber *)reactTag + handlerTag:(NSNumber *)handlerTag + state:(RNGestureHandlerState)state + prevState:(RNGestureHandlerState)prevState + extraData:(RNGestureHandlerEventExtraData *)extraData +{ + static uint16_t coalescingKey = 0; + if ((self = [super init])) { + _viewTag = reactTag; + _handlerTag = handlerTag; + _state = state; + _prevState = prevState; + _extraData = extraData; + _coalescingKey = coalescingKey++; + } + return self; +} + +RCT_NOT_IMPLEMENTED(-(instancetype)init) + +- (NSString *)eventName +{ + return @"onGestureHandlerStateChange"; +} + +- (BOOL)canCoalesce +{ + // TODO: event coalescing + return NO; +} + +- (id)coalesceWithEvent:(id)newEvent; +{ + return newEvent; +} + ++ (NSString *)moduleDotMethod +{ + return @"RCTEventEmitter.receiveEvent"; +} + +- (NSArray *)arguments +{ + NSMutableDictionary *body = [NSMutableDictionary dictionaryWithDictionary:_extraData.data]; + [body setObject:_viewTag forKey:@"target"]; + [body setObject:_handlerTag forKey:@"handlerTag"]; + [body setObject:@(_state) forKey:@"state"]; + [body setObject:@(_prevState) forKey:@"oldState"]; + return @[ self.viewTag, @"onGestureHandlerStateChange", body ]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.h new file mode 100644 index 00000000..1617a267 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.h @@ -0,0 +1,35 @@ +#import + +#import + +#import "RNGestureHandler.h" + +@class RCTUIManager; +@class RCTEventDispatcher; + +@interface RNGestureHandlerManager : NSObject + +- (nonnull instancetype)initWithUIManager:(nonnull RCTUIManager *)uiManager + eventDispatcher:(nonnull RCTEventDispatcher *)eventDispatcher; + +- (void)createGestureHandler:(nonnull NSString *)handlerName + tag:(nonnull NSNumber *)handlerTag + config:(nonnull NSDictionary *)config; + +- (void)attachGestureHandler:(nonnull NSNumber *)handlerTag + toViewWithTag:(nonnull NSNumber *)viewTag + withActionType:(RNGestureHandlerActionType)actionType; + +- (void)updateGestureHandler:(nonnull NSNumber *)handlerTag config:(nonnull NSDictionary *)config; + +- (void)dropGestureHandler:(nonnull NSNumber *)handlerTag; + +- (void)dropAllGestureHandlers; + +- (void)handleSetJSResponder:(nonnull NSNumber *)viewTag blockNativeResponder:(nonnull NSNumber *)blockNativeResponder; + +- (void)handleClearJSResponder; + +- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.mm b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.mm new file mode 100644 index 00000000..8c2d99da --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerManager.mm @@ -0,0 +1,304 @@ +#import "RNGestureHandlerManager.h" + +#import +#import +#import +#import +#import +#import +#import + +#import "RNGestureHandler.h" +#import "RNGestureHandlerActionType.h" +#import "RNGestureHandlerRegistry.h" +#import "RNGestureHandlerState.h" +#import "RNRootViewGestureRecognizer.h" + +#ifdef RN_FABRIC_ENABLED +#import +#import +#else +#import +#endif // RN_FABRIC_ENABLED + +#import "Handlers/RNFlingHandler.h" +#import "Handlers/RNForceTouchHandler.h" +#import "Handlers/RNLongPressHandler.h" +#import "Handlers/RNManualHandler.h" +#import "Handlers/RNNativeViewHandler.h" +#import "Handlers/RNPanHandler.h" +#import "Handlers/RNPinchHandler.h" +#import "Handlers/RNRotationHandler.h" +#import "Handlers/RNTapHandler.h" + +// We use the method below instead of RCTLog because we log out messages after the bridge gets +// turned down in some cases. Which normally with RCTLog would cause a crash in DEBUG mode +#define RCTLifecycleLog(...) \ + RCTDefaultLogFunction( \ + RCTLogLevelInfo, RCTLogSourceNative, @(__FILE__), @(__LINE__), [NSString stringWithFormat:__VA_ARGS__]) + +@interface RNGestureHandlerManager () + +@end + +@implementation RNGestureHandlerManager { + RNGestureHandlerRegistry *_registry; + RCTUIManager *_uiManager; + NSHashTable *_rootViewGestureRecognizers; + RCTEventDispatcher *_eventDispatcher; + id _reanimatedModule; +} + +- (instancetype)initWithUIManager:(RCTUIManager *)uiManager eventDispatcher:(RCTEventDispatcher *)eventDispatcher +{ + if ((self = [super init])) { + _uiManager = uiManager; + _eventDispatcher = eventDispatcher; + _registry = [RNGestureHandlerRegistry new]; + _rootViewGestureRecognizers = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory]; + _reanimatedModule = nil; + } + return self; +} + +- (void)createGestureHandler:(NSString *)handlerName tag:(NSNumber *)handlerTag config:(NSDictionary *)config +{ + static NSDictionary *map; + static dispatch_once_t mapToken; + dispatch_once(&mapToken, ^{ + map = @{ + @"PanGestureHandler" : [RNPanGestureHandler class], + @"TapGestureHandler" : [RNTapGestureHandler class], + @"FlingGestureHandler" : [RNFlingGestureHandler class], + @"LongPressGestureHandler" : [RNLongPressGestureHandler class], + @"NativeViewGestureHandler" : [RNNativeViewGestureHandler class], + @"PinchGestureHandler" : [RNPinchGestureHandler class], + @"RotationGestureHandler" : [RNRotationGestureHandler class], + @"ForceTouchGestureHandler" : [RNForceTouchHandler class], + @"ManualGestureHandler" : [RNManualGestureHandler class], + }; + }); + + Class nodeClass = map[handlerName]; + if (!nodeClass) { + RCTLogError(@"Gesture handler type %@ is not supported", handlerName); + return; + } + + RNGestureHandler *gestureHandler = [[nodeClass alloc] initWithTag:handlerTag]; + [gestureHandler configure:config]; + [_registry registerGestureHandler:gestureHandler]; + + __weak id emitter = self; + gestureHandler.emitter = emitter; +} + +- (void)attachGestureHandler:(nonnull NSNumber *)handlerTag + toViewWithTag:(nonnull NSNumber *)viewTag + withActionType:(RNGestureHandlerActionType)actionType +{ + UIView *view = [_uiManager viewForReactTag:viewTag]; + +#ifdef RN_FABRIC_ENABLED + if (view == nil) { + // Happens when the view with given tag has been flattened. + // We cannot attach gesture handler to a non-existent view. + return; + } + + // I think it should be moved to RNNativeViewHandler, but that would require + // additional logic for setting contentView.reactTag, this works for now + if ([view isKindOfClass:[RCTViewComponentView class]]) { + RCTViewComponentView *componentView = (RCTViewComponentView *)view; + if (componentView.contentView != nil) { + view = componentView.contentView; + } + } + + view.reactTag = viewTag; // necessary for RNReanimated eventHash (e.g. "42onGestureHandlerEvent"), also will be + // returned as event.target +#endif // RN_FABRIC_ENABLED + + [_registry attachHandlerWithTag:handlerTag toView:view withActionType:actionType]; + + // register view if not already there + [self registerViewWithGestureRecognizerAttachedIfNeeded:view]; +} + +- (void)updateGestureHandler:(NSNumber *)handlerTag config:(NSDictionary *)config +{ + RNGestureHandler *handler = [_registry handlerWithTag:handlerTag]; + [handler configure:config]; +} + +- (void)dropGestureHandler:(NSNumber *)handlerTag +{ + [_registry dropHandlerWithTag:handlerTag]; +} + +- (void)dropAllGestureHandlers +{ + [_registry dropAllHandlers]; +} + +- (void)handleSetJSResponder:(NSNumber *)viewTag blockNativeResponder:(NSNumber *)blockNativeResponder +{ + if ([blockNativeResponder boolValue]) { + for (RNRootViewGestureRecognizer *recognizer in _rootViewGestureRecognizers) { + [recognizer blockOtherRecognizers]; + } + } +} + +- (void)handleClearJSResponder +{ + // ignore... +} + +- (id)handlerWithTag:(NSNumber *)handlerTag +{ + return [_registry handlerWithTag:handlerTag]; +} + +#pragma mark Root Views Management + +- (void)registerViewWithGestureRecognizerAttachedIfNeeded:(UIView *)childView +{ + UIView *parent = childView; + while (parent != nil && ![parent respondsToSelector:@selector(touchHandler)]) + parent = parent.superview; + + // Many views can return the same touchHandler so we check if the one we want to register + // is not already present in the set. + UIView *touchHandlerView = [[parent performSelector:@selector(touchHandler)] view]; + + if (touchHandlerView == nil) { + return; + } + + for (UIGestureRecognizer *recognizer in touchHandlerView.gestureRecognizers) { + if ([recognizer isKindOfClass:[RNRootViewGestureRecognizer class]]) { + return; + } + } + + RCTLifecycleLog(@"[GESTURE HANDLER] Initialize gesture handler for view %@", touchHandlerView); + RNRootViewGestureRecognizer *recognizer = [RNRootViewGestureRecognizer new]; + recognizer.delegate = self; + touchHandlerView.userInteractionEnabled = YES; + [touchHandlerView addGestureRecognizer:recognizer]; + [_rootViewGestureRecognizers addObject:recognizer]; +} + +- (void)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer + didActivateInViewWithTouchHandler:(UIView *)viewWithTouchHandler +{ + // Cancel touches in RN's root view in order to cancel all in-js recognizers + + // As scroll events are special-cased in RN responder implementation and sending them would + // trigger JS responder change, we don't cancel touches if the handler that got activated is + // a scroll recognizer. This way root view will keep sending touchMove and touchEnd events + // and therefore allow JS responder to properly release the responder at the end of the touch + // stream. + // NOTE: this is not a proper fix and solving this problem requires upstream fixes to RN. In + // particular if we have one PanHandler and ScrollView that can work simultaniously then when + // the Pan handler activates it would still tigger cancel events. + // Once the upstream fix lands the line below along with this comment can be removed + if ([gestureRecognizer.view isKindOfClass:[UIScrollView class]]) + return; + +#ifdef RN_FABRIC_ENABLED + RCTSurfaceTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)]; +#else + RCTTouchHandler *touchHandler = [viewWithTouchHandler performSelector:@selector(touchHandler)]; +#endif + [touchHandler setEnabled:NO]; + [touchHandler setEnabled:YES]; +} + +#pragma mark Events + +- (void)sendEvent:(RNGestureHandlerStateChange *)event withActionType:(RNGestureHandlerActionType)actionType +{ + switch (actionType) { + case RNGestureHandlerActionTypeReanimatedWorklet: + [self sendEventForReanimated:event]; + break; + + case RNGestureHandlerActionTypeNativeAnimatedEvent: + if ([event.eventName isEqualToString:@"onGestureHandlerEvent"]) { + [self sendEventForNativeAnimatedEvent:event]; + } else { + // Although onGestureEvent prop is an Animated.event with useNativeDriver: true, + // onHandlerStateChange prop is still a regular JS function. + // Also, Animated.event is only supported with old API. + [self sendEventForJSFunctionOldAPI:event]; + } + break; + + case RNGestureHandlerActionTypeJSFunctionOldAPI: + [self sendEventForJSFunctionOldAPI:event]; + break; + + case RNGestureHandlerActionTypeJSFunctionNewAPI: + [self sendEventForJSFunctionNewAPI:event]; + break; + } +} + +- (void)sendEventForReanimated:(RNGestureHandlerStateChange *)event +{ + // Delivers the event to Reanimated. +#ifdef RN_FABRIC_ENABLED + // Send event directly to Reanimated + if (_reanimatedModule == nil) { + _reanimatedModule = [_uiManager.bridge moduleForName:@"ReanimatedModule"]; + } + + [_reanimatedModule eventDispatcherWillDispatchEvent:event]; +#else + // In the old architecture, Reanimated overwrites RCTEventDispatcher + // with REAEventDispatcher and intercepts all direct events. + [self sendEventForDirectEvent:event]; +#endif // RN_FABRIC_ENABLED +} + +- (void)sendEventForNativeAnimatedEvent:(RNGestureHandlerStateChange *)event +{ + // Delivers the event to NativeAnimatedModule. + // Currently, NativeAnimated[Turbo]Module is RCTEventDispatcherObserver so we can + // simply send a direct event which is handled by the observer but ignored on JS side. + // TODO: send event directly to NativeAnimated[Turbo]Module + [self sendEventForDirectEvent:event]; +} + +- (void)sendEventForJSFunctionOldAPI:(RNGestureHandlerStateChange *)event +{ + // Delivers the event to JS (old RNGH API). +#ifdef RN_FABRIC_ENABLED + [self sendEventForDeviceEvent:event]; +#else + [self sendEventForDirectEvent:event]; +#endif // RN_FABRIC_ENABLED +} + +- (void)sendEventForJSFunctionNewAPI:(RNGestureHandlerStateChange *)event +{ + // Delivers the event to JS (new RNGH API). + [self sendEventForDeviceEvent:event]; +} + +- (void)sendEventForDirectEvent:(RNGestureHandlerStateChange *)event +{ + // Delivers the event to JS as a direct event. + [_eventDispatcher sendEvent:event]; +} + +- (void)sendEventForDeviceEvent:(RNGestureHandlerStateChange *)event +{ + // Delivers the event to JS as a device event. + NSMutableDictionary *body = [[event arguments] objectAtIndex:2]; + [_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.h new file mode 100644 index 00000000..4e0cf29f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.h @@ -0,0 +1,7 @@ +#import +#import +#import + +@interface RNGestureHandlerModule : RCTEventEmitter + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm new file mode 100644 index 00000000..f143b363 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerModule.mm @@ -0,0 +1,316 @@ +#import "RNGestureHandlerModule.h" + +#import +#import +#import +#import +#import +#import + +#ifdef RN_FABRIC_ENABLED +#import +#import +#import +#import +#import +#import + +#import +#endif // RN_FABRIC_ENABLED + +#import "RNGestureHandler.h" +#import "RNGestureHandlerDirection.h" +#import "RNGestureHandlerManager.h" +#import "RNGestureHandlerState.h" + +#import "RNGestureHandlerButton.h" +#import "RNGestureHandlerStateManager.h" + +#ifdef RN_FABRIC_ENABLED +using namespace facebook; +using namespace react; +#endif // RN_FABRIC_ENABLED + +#ifdef RN_FABRIC_ENABLED +@interface RNGestureHandlerModule () + +@end +#else +@interface RNGestureHandlerModule () + +@end +#endif // RN_FABRIC_ENABLED + +typedef void (^GestureHandlerOperation)(RNGestureHandlerManager *manager); + +@implementation RNGestureHandlerModule { + RNGestureHandlerManager *_manager; + + // Oparations called after views have been updated. + NSMutableArray *_operations; +} + +RCT_EXPORT_MODULE() + ++ (BOOL)requiresMainQueueSetup +{ + return YES; +} + +- (void)invalidate +{ + RNGestureHandlerManager *handlerManager = _manager; + dispatch_async(dispatch_get_main_queue(), ^{ + [handlerManager dropAllGestureHandlers]; + }); + + _manager = nil; + +#ifdef RN_FABRIC_ENABLED + [self.bridge.surfacePresenter removeObserver:self]; +#else + [self.bridge.uiManager.observerCoordinator removeObserver:self]; +#endif // RN_FABRIC_ENABLED +} + +- (dispatch_queue_t)methodQueue +{ + // This module needs to be on the same queue as the UIManager to avoid + // having to lock `_operations` and `_preOperations` since `uiManagerWillFlushUIBlocks` + // will be called from that queue. + + // This is required as this module rely on having all the view nodes created before + // gesture handlers can be associated with them + return RCTGetUIManagerQueue(); +} + +#ifdef RN_FABRIC_ENABLED +void decorateRuntime(jsi::Runtime &runtime) +{ + auto isFormsStackingContext = jsi::Function::createFromHostFunction( + runtime, + jsi::PropNameID::forAscii(runtime, "isFormsStackingContext"), + 1, + [](jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *arguments, size_t count) -> jsi::Value { + if (!arguments[0].isObject()) { + return jsi::Value::null(); + } + + auto shadowNode = arguments[0].asObject(runtime).getHostObject(runtime)->shadowNode; + bool isFormsStackingContext = shadowNode->getTraits().check(ShadowNodeTraits::FormsStackingContext); + + return jsi::Value(isFormsStackingContext); + }); + runtime.global().setProperty(runtime, "isFormsStackingContext", std::move(isFormsStackingContext)); +} +#endif // RN_FABRIC_ENABLED + +- (void)setBridge:(RCTBridge *)bridge +{ + [super setBridge:bridge]; + + _manager = [[RNGestureHandlerManager alloc] initWithUIManager:bridge.uiManager + eventDispatcher:bridge.eventDispatcher]; + _operations = [NSMutableArray new]; + +#ifdef RN_FABRIC_ENABLED + [bridge.surfacePresenter addObserver:self]; +#else + [bridge.uiManager.observerCoordinator addObserver:self]; +#endif // RN_FABRIC_ENABLED +} + +#ifdef RN_FABRIC_ENABLED +RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) +{ + RCTCxxBridge *cxxBridge = (RCTCxxBridge *)self.bridge; + auto runtime = (jsi::Runtime *)cxxBridge.runtime; + decorateRuntime(*runtime); + return @true; +} +#endif // RN_FABRIC_ENABLED + +RCT_EXPORT_METHOD(createGestureHandler + : (nonnull NSString *)handlerName tag + : (nonnull NSNumber *)handlerTag config + : (NSDictionary *)config) +{ + [self addOperationBlock:^(RNGestureHandlerManager *manager) { + [manager createGestureHandler:handlerName tag:handlerTag config:config]; + }]; +} + +RCT_EXPORT_METHOD(attachGestureHandler + : (nonnull NSNumber *)handlerTag toViewWithTag + : (nonnull NSNumber *)viewTag actionType + : (nonnull NSNumber *)actionType) +{ + [self addOperationBlock:^(RNGestureHandlerManager *manager) { + [manager attachGestureHandler:handlerTag + toViewWithTag:viewTag + withActionType:(RNGestureHandlerActionType)[actionType integerValue]]; + }]; +} + +RCT_EXPORT_METHOD(updateGestureHandler : (nonnull NSNumber *)handlerTag config : (NSDictionary *)config) +{ + [self addOperationBlock:^(RNGestureHandlerManager *manager) { + [manager updateGestureHandler:handlerTag config:config]; + }]; +} + +RCT_EXPORT_METHOD(dropGestureHandler : (nonnull NSNumber *)handlerTag) +{ + [self addOperationBlock:^(RNGestureHandlerManager *manager) { + [manager dropGestureHandler:handlerTag]; + }]; +} + +RCT_EXPORT_METHOD(handleSetJSResponder + : (nonnull NSNumber *)viewTag blockNativeResponder + : (nonnull NSNumber *)blockNativeResponder) +{ + [self addOperationBlock:^(RNGestureHandlerManager *manager) { + [manager handleSetJSResponder:viewTag blockNativeResponder:blockNativeResponder]; + }]; +} + +RCT_EXPORT_METHOD(handleClearJSResponder) +{ + [self addOperationBlock:^(RNGestureHandlerManager *manager) { + [manager handleClearJSResponder]; + }]; +} + +RCT_EXPORT_METHOD(flushOperations) +{ + if (_operations.count == 0) { + return; + } + + NSArray *operations = _operations; + _operations = [NSMutableArray new]; + + [self.bridge.uiManager + addUIBlock:^(__unused RCTUIManager *manager, __unused NSDictionary *viewRegistry) { + for (GestureHandlerOperation operation in operations) { + operation(self->_manager); + } + }]; +} + +- (void)setGestureState:(int)state forHandler:(int)handlerTag +{ + RNGestureHandler *handler = [_manager handlerWithTag:@(handlerTag)]; + + if (handler != nil) { + if (state == 1) { // FAILED + handler.recognizer.state = UIGestureRecognizerStateFailed; + } else if (state == 2) { // BEGAN + handler.recognizer.state = UIGestureRecognizerStatePossible; + } else if (state == 3) { // CANCELLED + handler.recognizer.state = UIGestureRecognizerStateCancelled; + } else if (state == 4) { // ACTIVE + [handler stopActivationBlocker]; + handler.recognizer.state = UIGestureRecognizerStateBegan; + } else if (state == 5) { // ENDED + handler.recognizer.state = UIGestureRecognizerStateEnded; + } + } + + // if the gesture was set to finish, cancel all pointers it was tracking + if (state == 1 || state == 3 || state == 5) { + [handler.pointerTracker cancelPointers]; + } + + // do not send state change event when activating because it bypasses + // shouldRequireFailureOfGestureRecognizer + if (state != 4) { + [handler handleGesture:handler.recognizer]; + } +} + +#pragma mark-- Batch handling + +- (void)addOperationBlock:(GestureHandlerOperation)operation +{ + [_operations addObject:operation]; +} + +#pragma mark - RCTSurfacePresenterObserver + +#ifdef RN_FABRIC_ENABLED + +- (void)didMountComponentsWithRootTag:(NSInteger)rootTag +{ + RCTAssertMainQueue(); + + if (_operations.count == 0) { + return; + } + + NSArray *operations = _operations; + _operations = [NSMutableArray new]; + + for (GestureHandlerOperation operation in operations) { + operation(self->_manager); + } +} + +#else + +#pragma mark - RCTUIManagerObserver + +- (void)uiManagerWillFlushUIBlocks:(RCTUIManager *)uiManager +{ + [self uiManagerWillPerformMounting:uiManager]; +} + +- (void)uiManagerWillPerformMounting:(RCTUIManager *)uiManager +{ + if (_operations.count == 0) { + return; + } + + NSArray *operations = _operations; + _operations = [NSMutableArray new]; + + [uiManager addUIBlock:^(__unused RCTUIManager *manager, __unused NSDictionary *viewRegistry) { + for (GestureHandlerOperation operation in operations) { + operation(self->_manager); + } + }]; +} + +#endif // RN_FABRIC_ENABLED + +#pragma mark Events + +- (NSArray *)supportedEvents +{ + return @[ @"onGestureHandlerEvent", @"onGestureHandlerStateChange" ]; +} + +#pragma mark Module Constants + +- (NSDictionary *)constantsToExport +{ + return @{ + @"State" : @{ + @"UNDETERMINED" : @(RNGestureHandlerStateUndetermined), + @"BEGAN" : @(RNGestureHandlerStateBegan), + @"ACTIVE" : @(RNGestureHandlerStateActive), + @"CANCELLED" : @(RNGestureHandlerStateCancelled), + @"FAILED" : @(RNGestureHandlerStateFailed), + @"END" : @(RNGestureHandlerStateEnd) + }, + @"Direction" : @{ + @"RIGHT" : @(RNGestureHandlerDirectionRight), + @"LEFT" : @(RNGestureHandlerDirectionLeft), + @"UP" : @(RNGestureHandlerDirectionUp), + @"DOWN" : @(RNGestureHandlerDirectionDown) + } + }; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.h new file mode 100644 index 00000000..878806a5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.h @@ -0,0 +1,25 @@ +#import + +#import "RNGHTouchEventType.h" + +#define MAX_POINTERS_COUNT 12 + +@class RNGestureHandler; + +@interface RNGestureHandlerPointerTracker : NSObject + +@property (nonatomic) RNGHTouchEventType eventType; +@property (nonatomic) NSArray *changedPointersData; +@property (nonatomic) NSArray *allPointersData; +@property (nonatomic) int trackedPointersCount; + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; +- (void)reset; +- (void)cancelPointers; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.m new file mode 100644 index 00000000..ae5bf434 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerPointerTracker.m @@ -0,0 +1,243 @@ +#import "RNGestureHandlerPointerTracker.h" +#import "RNGestureHandler.h" + +#import + +@implementation RNGestureHandlerPointerTracker { + __weak RNGestureHandler *_gestureHandler; + UITouch *_trackedPointers[MAX_POINTERS_COUNT]; + int _trackedPointersCount; +} + +- (id)initWithGestureHandler:(id)gestureHandler +{ + _gestureHandler = gestureHandler; + _trackedPointersCount = 0; + _changedPointersData = nil; + _allPointersData = nil; + + for (int i = 0; i < MAX_POINTERS_COUNT; i++) { + _trackedPointers[i] = nil; + } + + return self; +} + +- (int)registerTouch:(UITouch *)touch +{ + for (int index = 0; index < MAX_POINTERS_COUNT; index++) { + if (_trackedPointers[index] == nil) { + _trackedPointers[index] = touch; + return index; + } + } + + return -1; +} + +- (int)unregisterTouch:(UITouch *)touch +{ + for (int index = 0; index < MAX_POINTERS_COUNT; index++) { + if (_trackedPointers[index] == touch) { + _trackedPointers[index] = nil; + return index; + } + } + + return -1; +} + +- (int)findTouchIndex:(UITouch *)touch +{ + for (int index = 0; index < MAX_POINTERS_COUNT; index++) { + if (_trackedPointers[index] == touch) { + return index; + } + } + return -1; +} + +- (int)registeredTouchesCount +{ + int count = 0; + for (int i = 0; i < MAX_POINTERS_COUNT; i++) { + if (_trackedPointers[i] != nil) { + count++; + } + } + return count; +} + +- (NSDictionary *)extractPointerData:(int)index forTouch:(UITouch *)touch +{ + CGPoint relativePos = [touch locationInView:_gestureHandler.recognizer.view]; + CGPoint absolutePos = [touch locationInView:_gestureHandler.recognizer.view.window]; + + return @{ + @"id" : @(index), + @"x" : @(relativePos.x), + @"y" : @(relativePos.y), + @"absoluteX" : @(absolutePos.x), + @"absoluteY" : @(absolutePos.y) + }; +} + +- (void)extractAllTouches +{ + int registeredTouches = [self registeredTouchesCount]; + + NSDictionary *data[registeredTouches]; + int nextIndex = 0; + + for (int i = 0; i < MAX_POINTERS_COUNT; i++) { + UITouch *touch = _trackedPointers[i]; + if (touch != nil) { + data[nextIndex++] = [self extractPointerData:i forTouch:touch]; + } + } + + _allPointersData = [[NSArray alloc] initWithObjects:data count:registeredTouches]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (!_gestureHandler.needsPointerData) { + return; + } + + _eventType = RNGHTouchEventTypePointerDown; + + NSDictionary *data[touches.count]; + + for (int i = 0; i < [touches count]; i++) { + UITouch *touch = [[touches allObjects] objectAtIndex:i]; + int index = [self registerTouch:touch]; + if (index >= 0) { + _trackedPointersCount++; + } + + data[i] = [self extractPointerData:index forTouch:touch]; + } + + _changedPointersData = [[NSArray alloc] initWithObjects:data count:[touches count]]; + // extract all touches last to include the ones that were just added + [self extractAllTouches]; + [self sendEvent]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (!_gestureHandler.needsPointerData) { + return; + } + + _eventType = RNGHTouchEventTypePointerMove; + + NSDictionary *data[touches.count]; + + for (int i = 0; i < [touches count]; i++) { + UITouch *touch = [[touches allObjects] objectAtIndex:i]; + int index = [self findTouchIndex:touch]; + data[i] = [self extractPointerData:index forTouch:touch]; + } + + _changedPointersData = [[NSArray alloc] initWithObjects:data count:[touches count]]; + [self extractAllTouches]; + [self sendEvent]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (!_gestureHandler.needsPointerData) { + return; + } + + // extract all touches first to include the ones that were just lifted + [self extractAllTouches]; + + _eventType = RNGHTouchEventTypePointerUp; + + NSDictionary *data[touches.count]; + + for (int i = 0; i < [touches count]; i++) { + UITouch *touch = [[touches allObjects] objectAtIndex:i]; + int index = [self unregisterTouch:touch]; + if (index >= 0) { + _trackedPointersCount--; + } + + data[i] = [self extractPointerData:index forTouch:touch]; + } + + _changedPointersData = [[NSArray alloc] initWithObjects:data count:[touches count]]; + [self sendEvent]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (!_gestureHandler.needsPointerData) { + return; + } + + [self reset]; +} + +- (void)reset +{ + if (!_gestureHandler.needsPointerData) { + return; + } + + if (_trackedPointersCount == 0) { + // gesture has finished because all pointers were lifted, reset event type to send state change event + _eventType = RNGHTouchEventTypeUndetermined; + } else { + // turns out that the gesture may be made to fail without calling touchesCancelled in that case there + // are still tracked pointers but the recognizer state is already set to UIGestureRecognizerStateFailed + // we need to clear the pointers and send info about their cancellation + [self cancelPointers]; + } + + [_gestureHandler reset]; +} + +- (void)cancelPointers +{ + // extract all touches first to include the ones that were just cancelled + [self extractAllTouches]; + + int registeredTouches = [self registeredTouchesCount]; + + if (registeredTouches > 0) { + int nextIndex = 0; + NSDictionary *data[registeredTouches]; + + for (int i = 0; i < MAX_POINTERS_COUNT; i++) { + UITouch *touch = _trackedPointers[i]; + if (touch != nil) { + data[nextIndex++] = [self extractPointerData:i forTouch:touch]; + [self unregisterTouch:touch]; + } + } + + _eventType = RNGHTouchEventTypeCancelled; + _changedPointersData = [[NSArray alloc] initWithObjects:data count:registeredTouches]; + [self sendEvent]; + _trackedPointersCount = 0; + } +} + +- (void)sendEvent +{ + // it may happen that the gesture recognizer is reset after it's been unbound from the view, + // it that recognizer tried to send event, the app would crash because the target of the event + // would be nil. + if (!_gestureHandler.needsPointerData || _gestureHandler.recognizer.view.reactTag == nil) { + return; + } + + [_gestureHandler sendTouchEventInState:[_gestureHandler state] + forViewWithTag:_gestureHandler.recognizer.view.reactTag]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.h new file mode 100644 index 00000000..045ffc08 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.h @@ -0,0 +1,21 @@ +// +// RNGestureHandlerRegistry.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNGestureHandlerRegistry : NSObject + +- (nullable RNGestureHandler *)handlerWithTag:(nonnull NSNumber *)handlerTag; +- (void)registerGestureHandler:(nonnull RNGestureHandler *)gestureHandler; +- (void)attachHandlerWithTag:(nonnull NSNumber *)handlerTag + toView:(nonnull UIView *)view + withActionType:(RNGestureHandlerActionType)actionType; +- (void)dropHandlerWithTag:(nonnull NSNumber *)handlerTag; +- (void)dropAllHandlers; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.m new file mode 100644 index 00000000..7a07e474 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRegistry.m @@ -0,0 +1,63 @@ +// +// RNGestureHandlerRegistry.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandlerRegistry.h" + +#import + +@implementation RNGestureHandlerRegistry { + NSMutableDictionary *_handlers; +} + +- (instancetype)init +{ + if ((self = [super init])) { + _handlers = [NSMutableDictionary new]; + } + return self; +} + +- (RNGestureHandler *)handlerWithTag:(NSNumber *)handlerTag +{ + return _handlers[handlerTag]; +} + +- (void)registerGestureHandler:(RNGestureHandler *)gestureHandler +{ + _handlers[gestureHandler.tag] = gestureHandler; +} + +- (void)attachHandlerWithTag:(NSNumber *)handlerTag + toView:(UIView *)view + withActionType:(RNGestureHandlerActionType)actionType +{ + RNGestureHandler *handler = _handlers[handlerTag]; + RCTAssert(handler != nil, @"Handler for tag %@ does not exists", handlerTag); + [handler unbindFromView]; + handler.actionType = actionType; + [handler bindToView:view]; +} + +- (void)dropHandlerWithTag:(NSNumber *)handlerTag +{ + RNGestureHandler *handler = _handlers[handlerTag]; + [handler unbindFromView]; + [_handlers removeObjectForKey:handlerTag]; +} + +- (void)dropAllHandlers +{ + for (NSNumber *tag in _handlers) { + RNGestureHandler *handler = _handlers[tag]; + [handler unbindFromView]; + } + + [_handlers removeAllObjects]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm new file mode 100644 index 00000000..af3976c8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerRootViewComponentView.mm @@ -0,0 +1,21 @@ +#ifdef RN_FABRIC_ENABLED + +#import + +Class RNGestureHandlerRootViewCls(void) +{ + // RNGestureHandlerRootView is Android-only. + // However, if we set `excludedPlatforms: ['iOS']` in `codegenNativeComponent`, + // codegen still generates `RNGestureHandlerRootViewShadowNode` (which it shouldn't) + // and thus the project fails to compile due to missing `RNGestureHandlerRootViewProps`. + // As a workaround, we could set `interfaceOnly: true` to disable autogenerating ShadowNode + // but then we would have to implement ComponentDescriptor and ShadowNode ourselves + // (probably just generate it once and keep the generated files in the repo) + // as well as make additional configuration so these files are actually compiled for Android. + // This simple trick allows us to have all the necessary files generated + // and compiled on Android while avoiding compilation errors on iOS. + // TODO: remove this file once `excludedPlatforms` option properly disables generating ShadowNode + return nil; +} + +#endif // RN_FABRIC_ENABLED diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerState.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerState.h new file mode 100644 index 00000000..b7894058 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerState.h @@ -0,0 +1,10 @@ +#import + +typedef NS_ENUM(NSInteger, RNGestureHandlerState) { + RNGestureHandlerStateUndetermined = 0, + RNGestureHandlerStateFailed, + RNGestureHandlerStateBegan, + RNGestureHandlerStateCancelled, + RNGestureHandlerStateActive, + RNGestureHandlerStateEnd, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerStateManager.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerStateManager.h new file mode 100644 index 00000000..e927e96a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNGestureHandlerStateManager.h @@ -0,0 +1,5 @@ +@protocol RNGestureHandlerStateManager + +- (void)setGestureState:(int)state forHandler:(int)handlerTag; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.h new file mode 100644 index 00000000..be200b32 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.h @@ -0,0 +1,10 @@ +#import + +@class RNGestureHandler; + +@interface RNManualActivationRecognizer : UIGestureRecognizer + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler; +- (void)fail; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.m new file mode 100644 index 00000000..0cc15c83 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNManualActivationRecognizer.m @@ -0,0 +1,87 @@ +#import "RNManualActivationRecognizer.h" +#import "RNGestureHandler.h" + +@implementation RNManualActivationRecognizer { + RNGestureHandler *_handler; + int _activePointers; +} + +- (id)initWithGestureHandler:(RNGestureHandler *)gestureHandler +{ + if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) { + _handler = gestureHandler; + self.delegate = self; + _activePointers = 0; + } + return self; +} + +- (void)handleGesture:(UIGestureRecognizer *)recognizer +{ + if (recognizer.state == UIGestureRecognizerStateBegan) { + self.state = UIGestureRecognizerStateEnded; + [self reset]; + } +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesBegan:touches withEvent:event]; + + _activePointers += touches.count; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesMoved:touches withEvent:event]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + + _activePointers -= touches.count; + + if (_activePointers == 0) { + self.state = UIGestureRecognizerStateBegan; + } +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + + _activePointers = 0; + [self reset]; +} + +- (void)reset +{ + self.enabled = YES; + [super reset]; +} + +- (void)fail +{ + self.enabled = NO; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer + shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + return YES; +} + +- (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; + if (handler != nil) { + if (handler.tag == _handler.tag) { + return YES; + } + } + + return NO; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.h b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.h new file mode 100644 index 00000000..a57dfc66 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.h @@ -0,0 +1,17 @@ +// +// RNRootViewGestureRecognizer.h +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNGestureHandler.h" + +@interface RNRootViewGestureRecognizer : UIGestureRecognizer + +@property (nullable, nonatomic, weak) id delegate; + +- (void)blockOtherRecognizers; + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.m b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.m new file mode 100644 index 00000000..20c06558 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/ios/RNRootViewGestureRecognizer.m @@ -0,0 +1,101 @@ +// +// RNRootViewGestureRecognizer.m +// RNGestureHandler +// +// Created by Krzysztof Magiera on 12/10/2017. +// Copyright © 2017 Software Mansion. All rights reserved. +// + +#import "RNRootViewGestureRecognizer.h" + +#import + +#ifdef RN_FABRIC_ENABLED +#import +#else +#import +#endif // RN_FABRIC_ENABLED + +@implementation RNRootViewGestureRecognizer { + BOOL _active; +} + +@dynamic delegate; + +- (instancetype)init +{ + if (self = [super init]) { + self.delaysTouchesEnded = NO; + self.delaysTouchesBegan = NO; + } + return self; +} + +- (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + // This method is used to implement "enabled" feature for gesture handlers. We enforce gesture + // recognizers that are connected with "disabled" handlers to wait for the root gesture + // recognizer to fail and this way we block them from acting. + RNGestureHandler *otherHandler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; + if (otherHandler != nil && otherHandler.enabled == NO) { + return YES; + } + return NO; +} + +- (BOOL)canPreventGestureRecognizer:(UIGestureRecognizer *)preventedGestureRecognizer +{ + return ![preventedGestureRecognizer isKindOfClass:[ +#ifdef RN_FABRIC_ENABLED + RCTSurfaceTouchHandler +#else + RCTTouchHandler +#endif + class]]; +} + +- (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer +{ + // When this method is called it means that one of handlers has activated, in this case we want + // to send an info to JS so that it cancells all JS responders + [self.delegate gestureRecognizer:preventingGestureRecognizer didActivateInViewWithTouchHandler:self.view]; + return [super canBePreventedByGestureRecognizer:preventingGestureRecognizer]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + _active = YES; + self.state = UIGestureRecognizerStatePossible; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + self.state = UIGestureRecognizerStatePossible; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (self.state == UIGestureRecognizerStateBegan || self.state == UIGestureRecognizerStateChanged) { + self.state = UIGestureRecognizerStateEnded; + } else { + self.state = UIGestureRecognizerStateFailed; + } + [self reset]; + _active = NO; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + self.state = UIGestureRecognizerStateCancelled; + [self reset]; + _active = NO; +} + +- (void)blockOtherRecognizers +{ + if (_active) { + self.state = UIGestureRecognizerStateBegan; + } +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/jest-utils/package.json b/iut-expo-starter/node_modules/react-native-gesture-handler/jest-utils/package.json new file mode 100644 index 00000000..5e0f5217 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/jest-utils/package.json @@ -0,0 +1,6 @@ +{ + "main": "../lib/commonjs/jestUtils/index", + "module": "../lib/module/jestUtils/index", + "react-native": "../src/jestUtils/index", + "types": "../lib/typescript/jestUtils/index.d.ts" +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/jestSetup.js b/iut-expo-starter/node_modules/react-native-gesture-handler/jestSetup.js new file mode 100644 index 00000000..64b9fab7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/jestSetup.js @@ -0,0 +1,7 @@ +jest.mock('./src/RNGestureHandlerModule', () => require('./src/mocks')); +jest.mock('./lib/commonjs/RNGestureHandlerModule', () => + require('./lib/commonjs/mocks') +); +jest.mock('./lib/module/RNGestureHandlerModule', () => + require('./lib/module/mocks') +); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js new file mode 100644 index 00000000..db6c57a3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ActionType = void 0; +const ActionType = { + REANIMATED_WORKLET: 1, + NATIVE_ANIMATED_EVENT: 2, + JS_FUNCTION_OLD_API: 3, + JS_FUNCTION_NEW_API: 4 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value + +exports.ActionType = ActionType; +//# sourceMappingURL=ActionType.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js.map new file mode 100644 index 00000000..e158a28a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/ActionType.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ActionType.ts"],"names":["ActionType","REANIMATED_WORKLET","NATIVE_ANIMATED_EVENT","JS_FUNCTION_OLD_API","JS_FUNCTION_NEW_API"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,kBAAkB,EAAE,CADI;AAExBC,EAAAA,qBAAqB,EAAE,CAFC;AAGxBC,EAAAA,mBAAmB,EAAE,CAHG;AAIxBC,EAAAA,mBAAmB,EAAE;AAJG,CAAnB,C,CAOP","sourcesContent":["export const ActionType = {\n REANIMATED_WORKLET: 1,\n NATIVE_ANIMATED_EVENT: 2,\n JS_FUNCTION_OLD_API: 3,\n JS_FUNCTION_NEW_API: 4,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type ActionType = typeof ActionType[keyof typeof ActionType];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js new file mode 100644 index 00000000..0a648c89 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Directions = void 0; +const Directions = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value + +exports.Directions = Directions; +//# sourceMappingURL=Directions.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js.map new file mode 100644 index 00000000..b2d0f8d8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/Directions.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["Directions.ts"],"names":["Directions","RIGHT","LEFT","UP","DOWN"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,KAAK,EAAE,CADiB;AAExBC,EAAAA,IAAI,EAAE,CAFkB;AAGxBC,EAAAA,EAAE,EAAE,CAHoB;AAIxBC,EAAAA,IAAI,EAAE;AAJkB,CAAnB,C,CAOP","sourcesContent":["export const Directions = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type Directions = typeof Directions[keyof typeof Directions];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js new file mode 100644 index 00000000..293a28a7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.enableExperimentalWebImplementation = enableExperimentalWebImplementation; +exports.isExperimentalWebImplementationEnabled = isExperimentalWebImplementationEnabled; + +var _reactNative = require("react-native"); + +let EXPERIMENTAL_WEB_IMPLEMENTATION = false; +let getWasCalled = false; + +function enableExperimentalWebImplementation(shouldEnable = true) { + if (_reactNative.Platform.OS !== 'web' || EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable) { + return; + } + + if (getWasCalled) { + console.error('Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'); + return; + } + + EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable; +} + +function isExperimentalWebImplementationEnabled() { + getWasCalled = true; + return EXPERIMENTAL_WEB_IMPLEMENTATION; +} +//# sourceMappingURL=EnableExperimentalWebImplementation.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js.map new file mode 100644 index 00000000..a455db4a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/EnableExperimentalWebImplementation.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["EnableExperimentalWebImplementation.ts"],"names":["EXPERIMENTAL_WEB_IMPLEMENTATION","getWasCalled","enableExperimentalWebImplementation","shouldEnable","Platform","OS","console","error","isExperimentalWebImplementationEnabled"],"mappings":";;;;;;;;AAAA;;AAEA,IAAIA,+BAA+B,GAAG,KAAtC;AACA,IAAIC,YAAY,GAAG,KAAnB;;AAEO,SAASC,mCAAT,CAA6CC,YAAY,GAAG,IAA5D,EAAwE;AAC7E,MACEC,sBAASC,EAAT,KAAgB,KAAhB,IACAL,+BAA+B,KAAKG,YAFtC,EAGE;AACA;AACD;;AAED,MAAIF,YAAJ,EAAkB;AAChBK,IAAAA,OAAO,CAACC,KAAR,CACE,4KADF;AAGA;AACD;;AAEDP,EAAAA,+BAA+B,GAAGG,YAAlC;AACD;;AAEM,SAASK,sCAAT,GAA2D;AAChEP,EAAAA,YAAY,GAAG,IAAf;AACA,SAAOD,+BAAP;AACD","sourcesContent":["import { Platform } from 'react-native';\n\nlet EXPERIMENTAL_WEB_IMPLEMENTATION = false;\nlet getWasCalled = false;\n\nexport function enableExperimentalWebImplementation(shouldEnable = true): void {\n if (\n Platform.OS !== 'web' ||\n EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable\n ) {\n return;\n }\n\n if (getWasCalled) {\n console.error(\n 'Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'\n );\n return;\n }\n\n EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;\n}\n\nexport function isExperimentalWebImplementationEnabled(): boolean {\n getWasCalled = true;\n return EXPERIMENTAL_WEB_IMPLEMENTATION;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js new file mode 100644 index 00000000..15caf4a2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = GestureHandlerRootView; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _init = require("./init"); + +var _utils = require("./utils"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/* eslint-disable @typescript-eslint/no-var-requires */ +const GestureHandlerRootViewNativeComponent = (0, _utils.shouldUseCodegenNativeComponent)() ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default : (0, _reactNative.requireNativeComponent)('RNGestureHandlerRootView'); + +function GestureHandlerRootView(props) { + // try initialize fabric on the first render, at this point we can + // reliably check if fabric is enabled (the function contains a flag + // to make sure it's called only once) + (0, _init.maybeInitializeFabric)(); + return /*#__PURE__*/React.createElement(GestureHandlerRootViewNativeComponent, props); +} +//# sourceMappingURL=GestureHandlerRootView.android.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js.map new file mode 100644 index 00000000..9006e189 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.android.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerRootView.android.tsx"],"names":["GestureHandlerRootViewNativeComponent","require","default","GestureHandlerRootView","props"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AACA;;;;;;AALA;AAOA,MAAMA,qCAAqC,GAAG,gDAC1CC,OAAO,CAAC,kDAAD,CAAP,CAA4DC,OADlB,GAE1C,yCAAuB,0BAAvB,CAFJ;;AAOe,SAASC,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACA;AAEA,sBAAO,oBAAC,qCAAD,EAA2CA,KAA3C,CAAP;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { requireNativeComponent, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\nimport { shouldUseCodegenNativeComponent } from './utils';\n\nconst GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent()\n ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default\n : requireNativeComponent('RNGestureHandlerRootView');\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return ;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js new file mode 100644 index 00000000..5f609530 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = GestureHandlerRootView; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _init = require("./init"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function GestureHandlerRootView(props) { + // try initialize fabric on the first render, at this point we can + // reliably check if fabric is enabled (the function contains a flag + // to make sure it's called only once) + (0, _init.maybeInitializeFabric)(); + return /*#__PURE__*/React.createElement(_reactNative.View, props); +} +//# sourceMappingURL=GestureHandlerRootView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js.map new file mode 100644 index 00000000..f30a7c58 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerRootView.tsx"],"names":["GestureHandlerRootView","props"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;;;;;AAKe,SAASA,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACA;AAEA,sBAAO,oBAAC,iBAAD,EAAUA,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return ;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js new file mode 100644 index 00000000..e5d7895b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = GestureHandlerRootView; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function GestureHandlerRootView(props) { + return /*#__PURE__*/React.createElement(_reactNative.View, props); +} +//# sourceMappingURL=GestureHandlerRootView.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js.map new file mode 100644 index 00000000..52706d59 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/GestureHandlerRootView.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerRootView.web.tsx"],"names":["GestureHandlerRootView","props"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;AAKe,SAASA,sBAAT,CACbC,KADa,EAEb;AACA,sBAAO,oBAAC,iBAAD,EAAUA,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n return ;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js new file mode 100644 index 00000000..ae712688 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _NativeModules$Platfo; + +var _default = (_NativeModules$Platfo = _reactNative.NativeModules === null || _reactNative.NativeModules === void 0 ? void 0 : _reactNative.NativeModules.PlatformConstants) !== null && _NativeModules$Platfo !== void 0 ? _NativeModules$Platfo : _reactNative.Platform.constants; + +exports.default = _default; +//# sourceMappingURL=PlatformConstants.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js.map new file mode 100644 index 00000000..934a9b90 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PlatformConstants.ts"],"names":["NativeModules","PlatformConstants","Platform","constants"],"mappings":";;;;;;;AAAA;;;;wCAMgBA,0B,aAAAA,0B,uBAAAA,2BAAeC,iB,yEAC7BC,sBAASC,S","sourcesContent":["import { NativeModules, Platform } from 'react-native';\n\ntype PlatformConstants = {\n forceTouchAvailable: boolean;\n};\n\nexport default (NativeModules?.PlatformConstants ??\n Platform.constants) as PlatformConstants;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js new file mode 100644 index 00000000..d45ae5bd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _default = { + get forceTouchAvailable() { + return false; + } + +}; +exports.default = _default; +//# sourceMappingURL=PlatformConstants.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js.map new file mode 100644 index 00000000..7d377626 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/PlatformConstants.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PlatformConstants.web.ts"],"names":["forceTouchAvailable"],"mappings":";;;;;;eAAe;AACb,MAAIA,mBAAJ,GAA0B;AACxB,WAAO,KAAP;AACD;;AAHY,C","sourcesContent":["export default {\n get forceTouchAvailable() {\n return false;\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js new file mode 100644 index 00000000..f2b528bc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _utils = require("./utils"); + +const { + RNGestureHandlerModule +} = _reactNative.NativeModules; + +if (RNGestureHandlerModule == null) { + console.error((0, _utils.tagMessage)(`react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..). + + For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`.split('\n').map(line => line.trim()).join('\n'))); +} + +if (RNGestureHandlerModule && RNGestureHandlerModule.flushOperations === undefined) { + RNGestureHandlerModule.flushOperations = () => {// NO-OP if not defined + }; +} + +var _default = RNGestureHandlerModule; +exports.default = _default; +//# sourceMappingURL=RNGestureHandlerModule.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js.map new file mode 100644 index 00000000..7868404d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.ts"],"names":["RNGestureHandlerModule","NativeModules","console","error","split","map","line","trim","join","flushOperations","undefined"],"mappings":";;;;;;;AAAA;;AAEA;;AACA,MAAM;AAAEA,EAAAA;AAAF,IAA6BC,0BAAnC;;AAEA,IAAID,sBAAsB,IAAI,IAA9B,EAAoC;AAClCE,EAAAA,OAAO,CAACC,KAAR,CACE,uBACG;AACP;AACA,gIAFM,CAGGC,KAHH,CAGS,IAHT,EAIGC,GAJH,CAIQC,IAAD,IAAUA,IAAI,CAACC,IAAL,EAJjB,EAKGC,IALH,CAKQ,IALR,CADF,CADF;AAUD;;AAED,IACER,sBAAsB,IACtBA,sBAAsB,CAACS,eAAvB,KAA2CC,SAF7C,EAGE;AACAV,EAAAA,sBAAsB,CAACS,eAAvB,GAAyC,MAAM,CAC7C;AACD,GAFD;AAGD;;eAwBcT,sB","sourcesContent":["import { NativeModules } from 'react-native';\nimport { ActionType } from './ActionType';\nimport { tagMessage } from './utils';\nconst { RNGestureHandlerModule } = NativeModules;\n\nif (RNGestureHandlerModule == null) {\n console.error(\n tagMessage(\n `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).\n\n For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`\n .split('\\n')\n .map((line) => line.trim())\n .join('\\n')\n )\n );\n}\n\nif (\n RNGestureHandlerModule &&\n RNGestureHandlerModule.flushOperations === undefined\n) {\n RNGestureHandlerModule.flushOperations = () => {\n // NO-OP if not defined\n };\n}\n\nexport type RNGestureHandlerModuleProps = {\n handleSetJSResponder: (tag: number, blockNativeResponder: boolean) => void;\n handleClearJSResponder: () => void;\n createGestureHandler: (\n handlerName: string,\n handlerTag: number,\n config: Readonly>\n ) => void;\n attachGestureHandler: (\n handlerTag: number,\n newView: number,\n actionType: ActionType\n ) => void;\n updateGestureHandler: (\n handlerTag: number,\n newConfig: Readonly>\n ) => void;\n dropGestureHandler: (handlerTag: number) => void;\n install: () => void;\n flushOperations: () => void;\n};\n\nexport default RNGestureHandlerModule as RNGestureHandlerModuleProps;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js new file mode 100644 index 00000000..1f14cb23 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js @@ -0,0 +1,147 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.HammerGestures = exports.Gestures = void 0; + +var _EnableExperimentalWebImplementation = require("./EnableExperimentalWebImplementation"); + +var _InteractionManager = _interopRequireDefault(require("./web/tools/InteractionManager")); + +var _NodeManager = _interopRequireDefault(require("./web/tools/NodeManager")); + +var _PanGestureHandler = _interopRequireDefault(require("./web/handlers/PanGestureHandler")); + +var _TapGestureHandler = _interopRequireDefault(require("./web/handlers/TapGestureHandler")); + +var _LongPressGestureHandler = _interopRequireDefault(require("./web/handlers/LongPressGestureHandler")); + +var _PinchGestureHandler = _interopRequireDefault(require("./web/handlers/PinchGestureHandler")); + +var _RotationGestureHandler = _interopRequireDefault(require("./web/handlers/RotationGestureHandler")); + +var _FlingGestureHandler = _interopRequireDefault(require("./web/handlers/FlingGestureHandler")); + +var _NativeViewGestureHandler = _interopRequireDefault(require("./web/handlers/NativeViewGestureHandler")); + +var _ManualGestureHandler = _interopRequireDefault(require("./web/handlers/ManualGestureHandler")); + +var HammerNodeManager = _interopRequireWildcard(require("./web_hammer/NodeManager")); + +var _NativeViewGestureHandler2 = _interopRequireDefault(require("./web_hammer/NativeViewGestureHandler")); + +var _PanGestureHandler2 = _interopRequireDefault(require("./web_hammer/PanGestureHandler")); + +var _TapGestureHandler2 = _interopRequireDefault(require("./web_hammer/TapGestureHandler")); + +var _LongPressGestureHandler2 = _interopRequireDefault(require("./web_hammer/LongPressGestureHandler")); + +var _PinchGestureHandler2 = _interopRequireDefault(require("./web_hammer/PinchGestureHandler")); + +var _RotationGestureHandler2 = _interopRequireDefault(require("./web_hammer/RotationGestureHandler")); + +var _FlingGestureHandler2 = _interopRequireDefault(require("./web_hammer/FlingGestureHandler")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +//GestureHandlers +//Hammer Handlers +const Gestures = { + NativeViewGestureHandler: _NativeViewGestureHandler.default, + PanGestureHandler: _PanGestureHandler.default, + TapGestureHandler: _TapGestureHandler.default, + LongPressGestureHandler: _LongPressGestureHandler.default, + PinchGestureHandler: _PinchGestureHandler.default, + RotationGestureHandler: _RotationGestureHandler.default, + FlingGestureHandler: _FlingGestureHandler.default, + ManualGestureHandler: _ManualGestureHandler.default +}; +exports.Gestures = Gestures; +const HammerGestures = { + NativeViewGestureHandler: _NativeViewGestureHandler2.default, + PanGestureHandler: _PanGestureHandler2.default, + TapGestureHandler: _TapGestureHandler2.default, + LongPressGestureHandler: _LongPressGestureHandler2.default, + PinchGestureHandler: _PinchGestureHandler2.default, + RotationGestureHandler: _RotationGestureHandler2.default, + FlingGestureHandler: _FlingGestureHandler2.default +}; +exports.HammerGestures = HammerGestures; +var _default = { + handleSetJSResponder(_tag, _blockNativeResponder) {// NO-OP + }, + + handleClearJSResponder() {// NO-OP + }, + + createGestureHandler(handlerName, handlerTag, config) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + if (!(handlerName in Gestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } + + const GestureClass = Gestures[handlerName]; + + _NodeManager.default.createGestureHandler(handlerTag, new GestureClass()); + + _InteractionManager.default.getInstance().configureInteractions(_NodeManager.default.getHandler(handlerTag), config); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + + const GestureClass = HammerGestures[handlerName]; // eslint-disable-next-line @typescript-eslint/no-unsafe-call + + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config); + }, + + attachGestureHandler(handlerTag, newView, _actionType, propsRef) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.getHandler(handlerTag).init(newView, propsRef); + } else { + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + + updateGestureHandler(handlerTag, newConfig) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.getHandler(handlerTag).updateGestureConfig(newConfig); + + _InteractionManager.default.getInstance().configureInteractions(_NodeManager.default.getHandler(handlerTag), newConfig); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + + getGestureHandlerNode(handlerTag) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + return _NodeManager.default.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + + dropGestureHandler(handlerTag) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {} + +}; +exports.default = _default; +//# sourceMappingURL=RNGestureHandlerModule.macos.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js.map new file mode 100644 index 00000000..a0bdc457 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.macos.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.macos.ts"],"names":["Gestures","NativeViewGestureHandler","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","ManualGestureHandler","HammerGestures","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","handleSetJSResponder","_tag","_blockNativeResponder","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","NodeManager","InteractionManager","getInstance","configureInteractions","getHandler","HammerNodeManager","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {\n // NO-OP\n },\n handleClearJSResponder() {\n // NO-OP\n },\n createGestureHandler(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n config as unknown as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, config as unknown as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n newView: number,\n _actionType: ActionType,\n propsRef: React.RefObject\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js new file mode 100644 index 00000000..a6d91c58 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js @@ -0,0 +1,158 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.HammerGestures = exports.Gestures = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _EnableExperimentalWebImplementation = require("./EnableExperimentalWebImplementation"); + +var _InteractionManager = _interopRequireDefault(require("./web/tools/InteractionManager")); + +var _NodeManager = _interopRequireDefault(require("./web/tools/NodeManager")); + +var _PanGestureHandler = _interopRequireDefault(require("./web/handlers/PanGestureHandler")); + +var _TapGestureHandler = _interopRequireDefault(require("./web/handlers/TapGestureHandler")); + +var _LongPressGestureHandler = _interopRequireDefault(require("./web/handlers/LongPressGestureHandler")); + +var _PinchGestureHandler = _interopRequireDefault(require("./web/handlers/PinchGestureHandler")); + +var _RotationGestureHandler = _interopRequireDefault(require("./web/handlers/RotationGestureHandler")); + +var _FlingGestureHandler = _interopRequireDefault(require("./web/handlers/FlingGestureHandler")); + +var _NativeViewGestureHandler = _interopRequireDefault(require("./web/handlers/NativeViewGestureHandler")); + +var _ManualGestureHandler = _interopRequireDefault(require("./web/handlers/ManualGestureHandler")); + +var HammerNodeManager = _interopRequireWildcard(require("./web_hammer/NodeManager")); + +var _NativeViewGestureHandler2 = _interopRequireDefault(require("./web_hammer/NativeViewGestureHandler")); + +var _PanGestureHandler2 = _interopRequireDefault(require("./web_hammer/PanGestureHandler")); + +var _TapGestureHandler2 = _interopRequireDefault(require("./web_hammer/TapGestureHandler")); + +var _LongPressGestureHandler2 = _interopRequireDefault(require("./web_hammer/LongPressGestureHandler")); + +var _PinchGestureHandler2 = _interopRequireDefault(require("./web_hammer/PinchGestureHandler")); + +var _RotationGestureHandler2 = _interopRequireDefault(require("./web_hammer/RotationGestureHandler")); + +var _FlingGestureHandler2 = _interopRequireDefault(require("./web_hammer/FlingGestureHandler")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +//GestureHandlers +//Hammer Handlers +const Gestures = { + NativeViewGestureHandler: _NativeViewGestureHandler.default, + PanGestureHandler: _PanGestureHandler.default, + TapGestureHandler: _TapGestureHandler.default, + LongPressGestureHandler: _LongPressGestureHandler.default, + PinchGestureHandler: _PinchGestureHandler.default, + RotationGestureHandler: _RotationGestureHandler.default, + FlingGestureHandler: _FlingGestureHandler.default, + ManualGestureHandler: _ManualGestureHandler.default +}; +exports.Gestures = Gestures; +const HammerGestures = { + NativeViewGestureHandler: _NativeViewGestureHandler2.default, + PanGestureHandler: _PanGestureHandler2.default, + TapGestureHandler: _TapGestureHandler2.default, + LongPressGestureHandler: _LongPressGestureHandler2.default, + PinchGestureHandler: _PinchGestureHandler2.default, + RotationGestureHandler: _RotationGestureHandler2.default, + FlingGestureHandler: _FlingGestureHandler2.default +}; +exports.HammerGestures = HammerGestures; +var _default = { + handleSetJSResponder(tag, blockNativeResponder) { + console.warn('handleSetJSResponder: ', tag, blockNativeResponder); + }, + + handleClearJSResponder() { + console.warn('handleClearJSResponder: '); + }, + + createGestureHandler(handlerName, handlerTag, config) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + if (!(handlerName in Gestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } + + const GestureClass = Gestures[handlerName]; + + _NodeManager.default.createGestureHandler(handlerTag, new GestureClass()); + + _InteractionManager.default.getInstance().configureInteractions(_NodeManager.default.getHandler(handlerTag), config); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + + const GestureClass = HammerGestures[handlerName]; // eslint-disable-next-line @typescript-eslint/no-unsafe-call + + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config); + }, + + attachGestureHandler(handlerTag, // eslint-disable-next-line @typescript-eslint/no-explicit-any + newView, _actionType, propsRef) { + if (!(newView instanceof HTMLElement || newView instanceof _react.default.Component)) { + return; + } + + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + //@ts-ignore Types should be HTMLElement or React.Component + _NodeManager.default.getHandler(handlerTag).init(newView, propsRef); + } else { + //@ts-ignore Types should be HTMLElement or React.Component + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + + updateGestureHandler(handlerTag, newConfig) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.getHandler(handlerTag).updateGestureConfig(newConfig); + + _InteractionManager.default.getInstance().configureInteractions(_NodeManager.default.getHandler(handlerTag), newConfig); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + + getGestureHandlerNode(handlerTag) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + return _NodeManager.default.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + + dropGestureHandler(handlerTag) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {} + +}; +exports.default = _default; +//# sourceMappingURL=RNGestureHandlerModule.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js.map new file mode 100644 index 00000000..641c3edf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.web.ts"],"names":["Gestures","NativeViewGestureHandler","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","ManualGestureHandler","HammerGestures","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","handleSetJSResponder","tag","blockNativeResponder","console","warn","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","NodeManager","InteractionManager","getInstance","configureInteractions","getHandler","HammerNodeManager","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","HTMLElement","React","Component","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(tag: number, blockNativeResponder: boolean) {\n console.warn('handleSetJSResponder: ', tag, blockNativeResponder);\n },\n handleClearJSResponder() {\n console.warn('handleClearJSResponder: ');\n },\n createGestureHandler(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n config as unknown as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, config as unknown as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newView: any,\n _actionType: ActionType,\n propsRef: React.RefObject\n ) {\n if (\n !(newView instanceof HTMLElement || newView instanceof React.Component)\n ) {\n return;\n }\n\n if (isExperimentalWebImplementationEnabled()) {\n //@ts-ignore Types should be HTMLElement or React.Component\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n //@ts-ignore Types should be HTMLElement or React.Component\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js new file mode 100644 index 00000000..f025356c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js @@ -0,0 +1,156 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.HammerGestures = exports.Gestures = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _EnableExperimentalWebImplementation = require("./EnableExperimentalWebImplementation"); + +var _InteractionManager = _interopRequireDefault(require("./web/tools/InteractionManager")); + +var _NodeManager = _interopRequireDefault(require("./web/tools/NodeManager")); + +var _PanGestureHandler = _interopRequireDefault(require("./web/handlers/PanGestureHandler")); + +var _TapGestureHandler = _interopRequireDefault(require("./web/handlers/TapGestureHandler")); + +var _LongPressGestureHandler = _interopRequireDefault(require("./web/handlers/LongPressGestureHandler")); + +var _PinchGestureHandler = _interopRequireDefault(require("./web/handlers/PinchGestureHandler")); + +var _RotationGestureHandler = _interopRequireDefault(require("./web/handlers/RotationGestureHandler")); + +var _FlingGestureHandler = _interopRequireDefault(require("./web/handlers/FlingGestureHandler")); + +var _NativeViewGestureHandler = _interopRequireDefault(require("./web/handlers/NativeViewGestureHandler")); + +var _ManualGestureHandler = _interopRequireDefault(require("./web/handlers/ManualGestureHandler")); + +var HammerNodeManager = _interopRequireWildcard(require("./web_hammer/NodeManager")); + +var _NativeViewGestureHandler2 = _interopRequireDefault(require("./web_hammer/NativeViewGestureHandler")); + +var _PanGestureHandler2 = _interopRequireDefault(require("./web_hammer/PanGestureHandler")); + +var _TapGestureHandler2 = _interopRequireDefault(require("./web_hammer/TapGestureHandler")); + +var _LongPressGestureHandler2 = _interopRequireDefault(require("./web_hammer/LongPressGestureHandler")); + +var _PinchGestureHandler2 = _interopRequireDefault(require("./web_hammer/PinchGestureHandler")); + +var _RotationGestureHandler2 = _interopRequireDefault(require("./web_hammer/RotationGestureHandler")); + +var _FlingGestureHandler2 = _interopRequireDefault(require("./web_hammer/FlingGestureHandler")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +//GestureHandlers +//Hammer Handlers +const Gestures = { + NativeViewGestureHandler: _NativeViewGestureHandler.default, + PanGestureHandler: _PanGestureHandler.default, + TapGestureHandler: _TapGestureHandler.default, + LongPressGestureHandler: _LongPressGestureHandler.default, + PinchGestureHandler: _PinchGestureHandler.default, + RotationGestureHandler: _RotationGestureHandler.default, + FlingGestureHandler: _FlingGestureHandler.default, + ManualGestureHandler: _ManualGestureHandler.default +}; +exports.Gestures = Gestures; +const HammerGestures = { + NativeViewGestureHandler: _NativeViewGestureHandler2.default, + PanGestureHandler: _PanGestureHandler2.default, + TapGestureHandler: _TapGestureHandler2.default, + LongPressGestureHandler: _LongPressGestureHandler2.default, + PinchGestureHandler: _PinchGestureHandler2.default, + RotationGestureHandler: _RotationGestureHandler2.default, + FlingGestureHandler: _FlingGestureHandler2.default +}; +exports.HammerGestures = HammerGestures; +var _default = { + handleSetJSResponder(_tag, _blockNativeResponder) {// NO-OP + }, + + handleClearJSResponder() {// NO-OP + }, + + createGestureHandler(handlerName, handlerTag, config) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + if (!(handlerName in Gestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } + + const GestureClass = Gestures[handlerName]; + + _NodeManager.default.createGestureHandler(handlerTag, new GestureClass()); + + _InteractionManager.default.getInstance().configureInteractions(_NodeManager.default.getHandler(handlerTag), config); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + + const GestureClass = HammerGestures[handlerName]; // eslint-disable-next-line @typescript-eslint/no-unsafe-call + + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config); + }, + + attachGestureHandler(handlerTag, // eslint-disable-next-line @typescript-eslint/no-explicit-any + newView, _actionType, propsRef) { + if (!(newView instanceof HTMLElement || newView instanceof _react.default.Component)) { + return; + } + + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + //@ts-ignore Types should be HTMLElement or React.Component + _NodeManager.default.getHandler(handlerTag).init(newView, propsRef); + } else { + //@ts-ignore Types should be HTMLElement or React.Component + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + + updateGestureHandler(handlerTag, newConfig) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.getHandler(handlerTag).updateGestureConfig(newConfig); + + _InteractionManager.default.getInstance().configureInteractions(_NodeManager.default.getHandler(handlerTag), newConfig); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + + getGestureHandlerNode(handlerTag) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + return _NodeManager.default.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + + dropGestureHandler(handlerTag) { + if ((0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)()) { + _NodeManager.default.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {} + +}; +exports.default = _default; +//# sourceMappingURL=RNGestureHandlerModule.windows.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js.map new file mode 100644 index 00000000..7f786058 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.windows.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.windows.ts"],"names":["Gestures","NativeViewGestureHandler","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","ManualGestureHandler","HammerGestures","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","handleSetJSResponder","_tag","_blockNativeResponder","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","NodeManager","InteractionManager","getInstance","configureInteractions","getHandler","HammerNodeManager","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","HTMLElement","React","Component","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {\n // NO-OP\n },\n handleClearJSResponder() {\n // NO-OP\n },\n createGestureHandler(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n config as unknown as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, config as unknown as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newView: any,\n _actionType: ActionType,\n propsRef: React.RefObject\n ) {\n if (\n !(newView instanceof HTMLElement || newView instanceof React.Component)\n ) {\n return;\n }\n\n if (isExperimentalWebImplementationEnabled()) {\n //@ts-ignore Types should be HTMLElement or React.Component\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n //@ts-ignore Types should be HTMLElement or React.Component\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js new file mode 100644 index 00000000..79928408 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "RNRenderer", { + enumerable: true, + get: function () { + return _ReactNative.default; + } +}); + +var _ReactNative = _interopRequireDefault(require("react-native/Libraries/Renderer/shims/ReactNative")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +//# sourceMappingURL=RNRenderer.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js.map new file mode 100644 index 00000000..c6c6bec9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNRenderer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA","sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nexport { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js new file mode 100644 index 00000000..2c1f15ad --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RNRenderer = void 0; +const RNRenderer = { + findHostInstance_DEPRECATED: _ref => null +}; +exports.RNRenderer = RNRenderer; +//# sourceMappingURL=RNRenderer.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js.map new file mode 100644 index 00000000..0edef29c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/RNRenderer.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNRenderer.web.ts"],"names":["RNRenderer","findHostInstance_DEPRECATED","_ref"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,2BAA2B,EAAGC,IAAD,IAAe;AADpB,CAAnB","sourcesContent":["export const RNRenderer = {\n findHostInstance_DEPRECATED: (_ref: any) => null,\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js new file mode 100644 index 00000000..51e09c23 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.State = void 0; +// TODO use State from RNModule +const State = { + UNDETERMINED: 0, + FAILED: 1, + BEGAN: 2, + CANCELLED: 3, + ACTIVE: 4, + END: 5 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value + +exports.State = State; +//# sourceMappingURL=State.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js.map new file mode 100644 index 00000000..5cbd9b06 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/State.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["State.ts"],"names":["State","UNDETERMINED","FAILED","BEGAN","CANCELLED","ACTIVE","END"],"mappings":";;;;;;AAAA;AAEO,MAAMA,KAAK,GAAG;AACnBC,EAAAA,YAAY,EAAE,CADK;AAEnBC,EAAAA,MAAM,EAAE,CAFW;AAGnBC,EAAAA,KAAK,EAAE,CAHY;AAInBC,EAAAA,SAAS,EAAE,CAJQ;AAKnBC,EAAAA,MAAM,EAAE,CALW;AAMnBC,EAAAA,GAAG,EAAE;AANc,CAAd,C,CASP","sourcesContent":["// TODO use State from RNModule\n\nexport const State = {\n UNDETERMINED: 0,\n FAILED: 1,\n BEGAN: 2,\n CANCELLED: 3,\n ACTIVE: 4,\n END: 5,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type State = typeof State[keyof typeof State];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js new file mode 100644 index 00000000..c75ca291 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TouchEventType = void 0; +const TouchEventType = { + UNDETERMINED: 0, + TOUCHES_DOWN: 1, + TOUCHES_MOVE: 2, + TOUCHES_UP: 3, + TOUCHES_CANCELLED: 4 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value + +exports.TouchEventType = TouchEventType; +//# sourceMappingURL=TouchEventType.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js.map new file mode 100644 index 00000000..ceee7fe1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/TouchEventType.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchEventType.ts"],"names":["TouchEventType","UNDETERMINED","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED"],"mappings":";;;;;;AAAO,MAAMA,cAAc,GAAG;AAC5BC,EAAAA,YAAY,EAAE,CADc;AAE5BC,EAAAA,YAAY,EAAE,CAFc;AAG5BC,EAAAA,YAAY,EAAE,CAHc;AAI5BC,EAAAA,UAAU,EAAE,CAJgB;AAK5BC,EAAAA,iBAAiB,EAAE;AALS,CAAvB,C,CAQP","sourcesContent":["export const TouchEventType = {\n UNDETERMINED: 0,\n TOUCHES_DOWN: 1,\n TOUCHES_MOVE: 2,\n TOUCHES_UP: 3,\n TOUCHES_CANCELLED: 4,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type TouchEventType = typeof TouchEventType[keyof typeof TouchEventType];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js new file mode 100644 index 00000000..aae8e16c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js @@ -0,0 +1,565 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _invariant = _interopRequireDefault(require("invariant")); + +var _reactNative = require("react-native"); + +var _PanGestureHandler = require("../handlers/PanGestureHandler"); + +var _TapGestureHandler = require("../handlers/TapGestureHandler"); + +var _State = require("../State"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const DRAG_TOSS = 0.05; +const IDLE = 'Idle'; +const DRAGGING = 'Dragging'; +const SETTLING = 'Settling'; + +class DrawerLayout extends React.Component { + constructor(_props) { + super(_props); + + _defineProperty(this, "openValue", void 0); + + _defineProperty(this, "onGestureEvent", void 0); + + _defineProperty(this, "accessibilityIsModalView", /*#__PURE__*/React.createRef()); + + _defineProperty(this, "pointerEventsView", /*#__PURE__*/React.createRef()); + + _defineProperty(this, "panGestureHandler", /*#__PURE__*/React.createRef()); + + _defineProperty(this, "drawerShown", false); + + _defineProperty(this, "updateAnimatedEvent", (props, state) => { + // Event definition is based on + const { + drawerPosition, + drawerWidth, + drawerType + } = props; + const { + dragX: dragXValue, + touchX: touchXValue, + drawerTranslation, + containerWidth + } = state; + let dragX = dragXValue; + let touchX = touchXValue; + + if (drawerPosition !== 'left') { + // Most of the code is written in a way to handle left-side drawer. In + // order to handle right-side drawer the only thing we need to do is to + // reverse events coming from gesture handler in a way they emulate + // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is + // calulcated by subtracing real touchX from the width of the container + // (such that when touch happens at the right edge the value is simply 0) + dragX = _reactNative.Animated.multiply(new _reactNative.Animated.Value(-1), dragXValue); // TODO(TS): (for all "as" in this file) make sure we can map this + + touchX = _reactNative.Animated.add(new _reactNative.Animated.Value(containerWidth), _reactNative.Animated.multiply(new _reactNative.Animated.Value(-1), touchXValue)); // TODO(TS): make sure we can map this; + + touchXValue.setValue(containerWidth); + } else { + touchXValue.setValue(0); + } // While closing the drawer when user starts gesture outside of its area (in greyed + // out part of the window), we want the drawer to follow only once finger reaches the + // edge of the drawer. + // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by + // dots. The touch gesture starts at '*' and moves left, touch path is indicated by + // an arrow pointing left + // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+ + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // +---------------+ +---------------+ +---------------+ +---------------+ + // + // For the above to work properly we define animated value that will keep + // start position of the gesture. Then we use that value to calculate how + // much we need to subtract from the dragX. If the gesture started on the + // greyed out area we take the distance from the edge of the drawer to the + // start position. Otherwise we don't subtract at all and the drawer be + // pulled back as soon as you start the pan. + // + // This is used only when drawerType is "front" + // + + + let translationX = dragX; + + if (drawerType === 'front') { + const startPositionX = _reactNative.Animated.add(touchX, _reactNative.Animated.multiply(new _reactNative.Animated.Value(-1), dragX)); + + const dragOffsetFromOnStartPosition = startPositionX.interpolate({ + inputRange: [drawerWidth - 1, drawerWidth, drawerWidth + 1], + outputRange: [0, 0, 1] + }); + translationX = _reactNative.Animated.add(dragX, dragOffsetFromOnStartPosition); // TODO: as above + } + + this.openValue = _reactNative.Animated.add(translationX, drawerTranslation).interpolate({ + inputRange: [0, drawerWidth], + outputRange: [0, 1], + extrapolate: 'clamp' + }); + const gestureOptions = { + useNativeDriver: props.useNativeAnimations + }; + + if (this.props.onDrawerSlide) { + gestureOptions.listener = ev => { + var _this$props$onDrawerS, _this$props; + + const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX)); + const position = translationX / this.state.containerWidth; + (_this$props$onDrawerS = (_this$props = this.props).onDrawerSlide) === null || _this$props$onDrawerS === void 0 ? void 0 : _this$props$onDrawerS.call(_this$props, position); + }; + } + + this.onGestureEvent = _reactNative.Animated.event([{ + nativeEvent: { + translationX: dragXValue, + x: touchXValue + } + }], gestureOptions); + }); + + _defineProperty(this, "handleContainerLayout", ({ + nativeEvent + }) => { + this.setState({ + containerWidth: nativeEvent.layout.width + }); + }); + + _defineProperty(this, "emitStateChanged", (newState, drawerWillShow) => { + var _this$props$onDrawerS2, _this$props2; + + (_this$props$onDrawerS2 = (_this$props2 = this.props).onDrawerStateChanged) === null || _this$props$onDrawerS2 === void 0 ? void 0 : _this$props$onDrawerS2.call(_this$props2, newState, drawerWillShow); + }); + + _defineProperty(this, "openingHandlerStateChange", ({ + nativeEvent + }) => { + if (nativeEvent.oldState === _State.State.ACTIVE) { + this.handleRelease({ + nativeEvent + }); + } else if (nativeEvent.state === _State.State.ACTIVE) { + this.emitStateChanged(DRAGGING, false); + this.setState({ + drawerState: DRAGGING + }); + + if (this.props.keyboardDismissMode === 'on-drag') { + _reactNative.Keyboard.dismiss(); + } + + if (this.props.hideStatusBar) { + _reactNative.StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide'); + } + } + }); + + _defineProperty(this, "onTapHandlerStateChange", ({ + nativeEvent + }) => { + if (this.drawerShown && nativeEvent.oldState === _State.State.ACTIVE && this.props.drawerLockMode !== 'locked-open') { + this.closeDrawer(); + } + }); + + _defineProperty(this, "handleRelease", ({ + nativeEvent + }) => { + const { + drawerWidth, + drawerPosition, + drawerType + } = this.props; + const { + containerWidth + } = this.state; + let { + translationX: dragX, + velocityX, + x: touchX + } = nativeEvent; + + if (drawerPosition !== 'left') { + // See description in _updateAnimatedEvent about why events are flipped + // for right-side drawer + dragX = -dragX; + touchX = containerWidth - touchX; + velocityX = -velocityX; + } + + const gestureStartX = touchX - dragX; + let dragOffsetBasedOnStart = 0; + + if (drawerType === 'front') { + dragOffsetBasedOnStart = gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0; + } + + const startOffsetX = dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth : 0); + const projOffsetX = startOffsetX + DRAG_TOSS * velocityX; + const shouldOpen = projOffsetX > drawerWidth / 2; + + if (shouldOpen) { + this.animateDrawer(startOffsetX, drawerWidth, velocityX); + } else { + this.animateDrawer(startOffsetX, 0, velocityX); + } + }); + + _defineProperty(this, "updateShowing", showing => { + var _this$accessibilityIs, _this$pointerEventsVi, _this$panGestureHandl; + + this.drawerShown = showing; + (_this$accessibilityIs = this.accessibilityIsModalView.current) === null || _this$accessibilityIs === void 0 ? void 0 : _this$accessibilityIs.setNativeProps({ + accessibilityViewIsModal: showing + }); + (_this$pointerEventsVi = this.pointerEventsView.current) === null || _this$pointerEventsVi === void 0 ? void 0 : _this$pointerEventsVi.setNativeProps({ + pointerEvents: showing ? 'auto' : 'none' + }); + const { + drawerPosition, + minSwipeDistance, + edgeWidth + } = this.props; + const fromLeft = drawerPosition === 'left'; // gestureOrientation is 1 if the expected gesture is from left to right and + // -1 otherwise e.g. when drawer is on the left and is closed we expect left + // to right gesture, thus orientation will be 1. + + const gestureOrientation = (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1); // When drawer is closed we want the hitSlop to be horizontally shorter than + // the container size by the value of SLOP. This will make it only activate + // when gesture happens not further than SLOP away from the edge + + const hitSlop = fromLeft ? { + left: 0, + width: showing ? undefined : edgeWidth + } : { + right: 0, + width: showing ? undefined : edgeWidth + }; // @ts-ignore internal API, maybe could be fixed in handler types + + (_this$panGestureHandl = this.panGestureHandler.current) === null || _this$panGestureHandl === void 0 ? void 0 : _this$panGestureHandl.setNativeProps({ + hitSlop, + activeOffsetX: gestureOrientation * minSwipeDistance + }); + }); + + _defineProperty(this, "animateDrawer", (fromValue, toValue, velocity, speed) => { + this.state.dragX.setValue(0); + this.state.touchX.setValue(this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth); + + if (fromValue != null) { + let nextFramePosition = fromValue; + + if (this.props.useNativeAnimations) { + // When using native driver, we predict the next position of the + // animation because it takes one frame of a roundtrip to pass RELEASE + // event from native driver to JS before we can start animating. Without + // it, it is more noticable that the frame is dropped. + if (fromValue < toValue && velocity > 0) { + nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue); + } else if (fromValue > toValue && velocity < 0) { + nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue); + } + } + + this.state.drawerTranslation.setValue(nextFramePosition); + } + + const willShow = toValue !== 0; + this.updateShowing(willShow); + this.emitStateChanged(SETTLING, willShow); + this.setState({ + drawerState: SETTLING + }); + + if (this.props.hideStatusBar) { + _reactNative.StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide'); + } + + _reactNative.Animated.spring(this.state.drawerTranslation, { + velocity, + bounciness: 0, + toValue, + useNativeDriver: this.props.useNativeAnimations, + speed: speed !== null && speed !== void 0 ? speed : undefined + }).start(({ + finished + }) => { + if (finished) { + this.emitStateChanged(IDLE, willShow); + this.setState({ + drawerOpened: willShow + }); + + if (this.state.drawerState !== DRAGGING) { + // it's possilbe that user started drag while the drawer + // was settling, don't override state in this case + this.setState({ + drawerState: IDLE + }); + } + + if (willShow) { + var _this$props$onDrawerO, _this$props3; + + (_this$props$onDrawerO = (_this$props3 = this.props).onDrawerOpen) === null || _this$props$onDrawerO === void 0 ? void 0 : _this$props$onDrawerO.call(_this$props3); + } else { + var _this$props$onDrawerC, _this$props4; + + (_this$props$onDrawerC = (_this$props4 = this.props).onDrawerClose) === null || _this$props$onDrawerC === void 0 ? void 0 : _this$props$onDrawerC.call(_this$props4); + } + } + }); + }); + + _defineProperty(this, "openDrawer", (options = {}) => { + this.animateDrawer( // TODO: decide if it should be null or undefined is the proper value + undefined, this.props.drawerWidth, options.velocity ? options.velocity : 0, options.speed); // We need to force the update, otherwise the overlay is not rerendered and + // it would not be clickable + + this.forceUpdate(); + }); + + _defineProperty(this, "closeDrawer", (options = {}) => { + // TODO: decide if it should be null or undefined is the proper value + this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0, options.speed); // We need to force the update, otherwise the overlay is not rerendered and + // it would be still clickable + + this.forceUpdate(); + }); + + _defineProperty(this, "renderOverlay", () => { + /* Overlay styles */ + (0, _invariant.default)(this.openValue, 'should be set'); + let overlayOpacity; + + if (this.state.drawerState !== IDLE) { + overlayOpacity = this.openValue; + } else { + overlayOpacity = this.state.drawerOpened ? 1 : 0; + } + + const dynamicOverlayStyles = { + opacity: overlayOpacity, + backgroundColor: this.props.overlayColor + }; + return /*#__PURE__*/React.createElement(_TapGestureHandler.TapGestureHandler, { + onHandlerStateChange: this.onTapHandlerStateChange + }, /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + pointerEvents: this.drawerShown ? 'auto' : 'none', + ref: this.pointerEventsView, + style: [styles.overlay, dynamicOverlayStyles] + })); + }); + + _defineProperty(this, "renderDrawer", () => { + const { + drawerBackgroundColor, + drawerWidth, + drawerPosition, + drawerType, + drawerContainerStyle, + contentContainerStyle + } = this.props; + const fromLeft = drawerPosition === 'left'; + const drawerSlide = drawerType !== 'back'; + const containerSlide = drawerType !== 'front'; // we rely on row and row-reverse flex directions to position the drawer + // properly. Apparently for RTL these are flipped which requires us to use + // the opposite setting for the drawer to appear from left or right + // according to the drawerPosition prop + + const reverseContentDirection = _reactNative.I18nManager.isRTL ? fromLeft : !fromLeft; + const dynamicDrawerStyles = { + backgroundColor: drawerBackgroundColor, + width: drawerWidth + }; + const openValue = this.openValue; + (0, _invariant.default)(openValue, 'should be set'); + let containerStyles; + + if (containerSlide) { + const containerTranslateX = openValue.interpolate({ + inputRange: [0, 1], + outputRange: fromLeft ? [0, drawerWidth] : [0, -drawerWidth], + extrapolate: 'clamp' + }); + containerStyles = { + transform: [{ + translateX: containerTranslateX + }] + }; + } + + let drawerTranslateX = 0; + + if (drawerSlide) { + const closedDrawerOffset = fromLeft ? -drawerWidth : drawerWidth; + + if (this.state.drawerState !== IDLE) { + drawerTranslateX = openValue.interpolate({ + inputRange: [0, 1], + outputRange: [closedDrawerOffset, 0], + extrapolate: 'clamp' + }); + } else { + drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset; + } + } + + const drawerStyles = { + transform: [{ + translateX: drawerTranslateX + }], + flexDirection: reverseContentDirection ? 'row-reverse' : 'row' + }; + return /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + style: styles.main, + onLayout: this.handleContainerLayout + }, /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + style: [drawerType === 'front' ? styles.containerOnBack : styles.containerInFront, containerStyles, contentContainerStyle], + importantForAccessibility: this.drawerShown ? 'no-hide-descendants' : 'yes' + }, typeof this.props.children === 'function' ? this.props.children(this.openValue) : this.props.children, this.renderOverlay()), /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + pointerEvents: "box-none", + ref: this.accessibilityIsModalView, + accessibilityViewIsModal: this.drawerShown, + style: [styles.drawerContainer, drawerStyles, drawerContainerStyle] + }, /*#__PURE__*/React.createElement(_reactNative.View, { + style: dynamicDrawerStyles + }, this.props.renderNavigationView(this.openValue)))); + }); + + _defineProperty(this, "setPanGestureRef", ref => { + var _this$props$onGesture, _this$props5; + + // TODO(TS): make sure it is OK taken from + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842 + this.panGestureHandler.current = ref; + (_this$props$onGesture = (_this$props5 = this.props).onGestureRef) === null || _this$props$onGesture === void 0 ? void 0 : _this$props$onGesture.call(_this$props5, ref); + }); + + const _dragX = new _reactNative.Animated.Value(0); + + const _touchX = new _reactNative.Animated.Value(0); + + const _drawerTranslation = new _reactNative.Animated.Value(0); + + this.state = { + dragX: _dragX, + touchX: _touchX, + drawerTranslation: _drawerTranslation, + containerWidth: 0, + drawerState: IDLE, + drawerOpened: false + }; + this.updateAnimatedEvent(_props, this.state); + } + + shouldComponentUpdate(props, state) { + if (this.props.drawerPosition !== props.drawerPosition || this.props.drawerWidth !== props.drawerWidth || this.props.drawerType !== props.drawerType || this.state.containerWidth !== state.containerWidth) { + this.updateAnimatedEvent(props, state); + } + + return true; + } + + render() { + const { + drawerPosition, + drawerLockMode, + edgeWidth, + minSwipeDistance + } = this.props; + const fromLeft = drawerPosition === 'left'; // gestureOrientation is 1 if the expected gesture is from left to right and + // -1 otherwise e.g. when drawer is on the left and is closed we expect left + // to right gesture, thus orientation will be 1. + + const gestureOrientation = (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1); // When drawer is closed we want the hitSlop to be horizontally shorter than + // the container size by the value of SLOP. This will make it only activate + // when gesture happens not further than SLOP away from the edge + + const hitSlop = fromLeft ? { + left: 0, + width: this.drawerShown ? undefined : edgeWidth + } : { + right: 0, + width: this.drawerShown ? undefined : edgeWidth + }; + return /*#__PURE__*/React.createElement(_PanGestureHandler.PanGestureHandler // @ts-ignore could be fixed in handler types + , { + userSelect: this.props.userSelect, + ref: this.setPanGestureRef, + hitSlop: hitSlop, + activeOffsetX: gestureOrientation * minSwipeDistance, + failOffsetY: [-15, 15], + onGestureEvent: this.onGestureEvent, + onHandlerStateChange: this.openingHandlerStateChange, + enableTrackpadTwoFingerGesture: this.props.enableTrackpadTwoFingerGesture, + enabled: drawerLockMode !== 'locked-closed' && drawerLockMode !== 'locked-open' + }, this.renderDrawer()); + } + +} + +exports.default = DrawerLayout; + +_defineProperty(DrawerLayout, "defaultProps", { + drawerWidth: 200, + drawerPosition: 'left', + useNativeAnimations: true, + drawerType: 'front', + edgeWidth: 20, + minSwipeDistance: 3, + overlayColor: 'rgba(0, 0, 0, 0.7)', + drawerLockMode: 'unlocked', + enableTrackpadTwoFingerGesture: false +}); + +_defineProperty(DrawerLayout, "positions", { + Left: 'left', + Right: 'right' +}); + +const styles = _reactNative.StyleSheet.create({ + drawerContainer: { ..._reactNative.StyleSheet.absoluteFillObject, + zIndex: 1001, + flexDirection: 'row' + }, + containerInFront: { ..._reactNative.StyleSheet.absoluteFillObject, + zIndex: 1002 + }, + containerOnBack: { ..._reactNative.StyleSheet.absoluteFillObject + }, + main: { + flex: 1, + zIndex: 0, + overflow: 'hidden' + }, + overlay: { ..._reactNative.StyleSheet.absoluteFillObject, + zIndex: 1000 + } +}); +//# sourceMappingURL=DrawerLayout.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js.map new file mode 100644 index 00000000..29ab86aa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/DrawerLayout.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["DrawerLayout.tsx"],"names":["DRAG_TOSS","IDLE","DRAGGING","SETTLING","DrawerLayout","Component","constructor","props","React","createRef","state","drawerPosition","drawerWidth","drawerType","dragX","dragXValue","touchX","touchXValue","drawerTranslation","containerWidth","Animated","multiply","Value","add","setValue","translationX","startPositionX","dragOffsetFromOnStartPosition","interpolate","inputRange","outputRange","openValue","extrapolate","gestureOptions","useNativeDriver","useNativeAnimations","onDrawerSlide","listener","ev","Math","floor","abs","nativeEvent","position","onGestureEvent","event","x","setState","layout","width","newState","drawerWillShow","onDrawerStateChanged","oldState","State","ACTIVE","handleRelease","emitStateChanged","drawerState","keyboardDismissMode","Keyboard","dismiss","hideStatusBar","StatusBar","setHidden","statusBarAnimation","drawerShown","drawerLockMode","closeDrawer","velocityX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","animateDrawer","showing","accessibilityIsModalView","current","setNativeProps","accessibilityViewIsModal","pointerEventsView","pointerEvents","minSwipeDistance","edgeWidth","fromLeft","gestureOrientation","hitSlop","left","undefined","right","panGestureHandler","activeOffsetX","fromValue","toValue","velocity","speed","nextFramePosition","min","max","willShow","updateShowing","spring","bounciness","start","finished","drawerOpened","onDrawerOpen","onDrawerClose","options","forceUpdate","overlayOpacity","dynamicOverlayStyles","opacity","backgroundColor","overlayColor","onTapHandlerStateChange","styles","overlay","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","drawerSlide","containerSlide","reverseContentDirection","I18nManager","isRTL","dynamicDrawerStyles","containerStyles","containerTranslateX","transform","translateX","drawerTranslateX","closedDrawerOffset","drawerStyles","flexDirection","main","handleContainerLayout","containerOnBack","containerInFront","children","renderOverlay","drawerContainer","renderNavigationView","ref","onGestureRef","updateAnimatedEvent","shouldComponentUpdate","render","userSelect","setPanGestureRef","openingHandlerStateChange","enableTrackpadTwoFingerGesture","renderDrawer","Left","Right","StyleSheet","create","absoluteFillObject","zIndex","flex","overflow"],"mappings":"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","sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n//\n// It perhaps deserves to be put in a separate repo, but since it relies on\n// react-native-gesture-handler library which isn't very popular at the moment I\n// decided to keep it here for the time being. It will allow us to move faster\n// and fix issues that may arise in gesture handler library that could be found\n// when using the drawer component\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport invariant from 'invariant';\nimport {\n Animated,\n StyleSheet,\n View,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n NativeSyntheticEvent,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n UserSelect,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\nconst IDLE: DrawerState = 'Idle';\nconst DRAGGING: DrawerState = 'Dragging';\nconst SETTLING: DrawerState = 'Settling';\n\nexport type DrawerPosition = 'left' | 'right';\n\nexport type DrawerState = 'Idle' | 'Dragging' | 'Settling';\n\nexport type DrawerType = 'front' | 'back' | 'slide';\n\nexport type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open';\n\nexport type DrawerKeyboardDismissMode = 'none' | 'on-drag';\n\n// Animated.AnimatedInterpolation has been converted to a generic type\n// in @types/react-native 0.70. This way we can maintain compatibility\n// with all versions of @types/react-native`\ntype AnimatedInterpolation = ReturnType;\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the standard implementation already and is one\n * of the required params. Gesture handler version of DrawerLayout make it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: Animated.Value\n ) => React.ReactNode;\n\n drawerPosition?: DrawerPosition;\n\n drawerWidth?: number;\n\n drawerBackgroundColor?: string;\n\n drawerLockMode?: DrawerLockMode;\n\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n useNativeAnimations?: boolean;\n\n drawerType?: DrawerType;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default black\n *\n * Color of a semi-transparent overlay to be displayed on top of the content\n * view when drawer gets open. A solid color should be used as the opacity is\n * added by the Drawer itself and the opacity of the overlay is animated (from\n * 0% to 70%).\n */\n overlayColor?: string;\n\n contentContainerStyle?: StyleProp;\n\n drawerContainerStyle?: StyleProp;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n onGestureRef?: (ref: PanGestureHandler) => void;\n\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?:\n | React.ReactNode\n | ((openValue?: AnimatedInterpolation) => React.ReactNode);\n\n /**\n * @default 'none'\n * Defines which userSelect property should be used.\n * Values: 'none'|'text'|'auto'\n */\n userSelect?: UserSelect;\n}\n\nexport type DrawerLayoutState = {\n dragX: Animated.Value;\n touchX: Animated.Value;\n drawerTranslation: Animated.Value;\n containerWidth: number;\n drawerState: DrawerState;\n drawerOpened: boolean;\n};\n\nexport type DrawerMovementOption = {\n velocity?: number;\n speed?: number;\n};\nexport default class DrawerLayout extends Component<\n DrawerLayoutProps,\n DrawerLayoutState\n> {\n static defaultProps = {\n drawerWidth: 200,\n drawerPosition: 'left',\n useNativeAnimations: true,\n drawerType: 'front',\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: 'unlocked',\n enableTrackpadTwoFingerGesture: false,\n };\n\n constructor(props: DrawerLayoutProps) {\n super(props);\n\n const dragX = new Animated.Value(0);\n const touchX = new Animated.Value(0);\n const drawerTranslation = new Animated.Value(0);\n\n this.state = {\n dragX,\n touchX,\n drawerTranslation,\n containerWidth: 0,\n drawerState: IDLE,\n drawerOpened: false,\n };\n\n this.updateAnimatedEvent(props, this.state);\n }\n\n shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState) {\n if (\n this.props.drawerPosition !== props.drawerPosition ||\n this.props.drawerWidth !== props.drawerWidth ||\n this.props.drawerType !== props.drawerType ||\n this.state.containerWidth !== state.containerWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private openValue?: AnimatedInterpolation;\n private onGestureEvent?: (\n event: GestureEvent\n ) => void;\n private accessibilityIsModalView = React.createRef();\n private pointerEventsView = React.createRef();\n private panGestureHandler = React.createRef();\n private drawerShown = false;\n\n static positions = {\n Left: 'left',\n Right: 'right',\n };\n\n private updateAnimatedEvent = (\n props: DrawerLayoutProps,\n state: DrawerLayoutState\n ) => {\n // Event definition is based on\n const { drawerPosition, drawerWidth, drawerType } = props;\n const {\n dragX: dragXValue,\n touchX: touchXValue,\n drawerTranslation,\n containerWidth,\n } = state;\n\n let dragX = dragXValue;\n let touchX = touchXValue;\n\n if (drawerPosition !== 'left') {\n // Most of the code is written in a way to handle left-side drawer. In\n // order to handle right-side drawer the only thing we need to do is to\n // reverse events coming from gesture handler in a way they emulate\n // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is\n // calulcated by subtracing real touchX from the width of the container\n // (such that when touch happens at the right edge the value is simply 0)\n dragX = Animated.multiply(\n new Animated.Value(-1),\n dragXValue\n ) as Animated.Value; // TODO(TS): (for all \"as\" in this file) make sure we can map this\n touchX = Animated.add(\n new Animated.Value(containerWidth),\n Animated.multiply(new Animated.Value(-1), touchXValue)\n ) as Animated.Value; // TODO(TS): make sure we can map this;\n touchXValue.setValue(containerWidth);\n } else {\n touchXValue.setValue(0);\n }\n\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep\n // start position of the gesture. Then we use that value to calculate how\n // much we need to subtract from the dragX. If the gesture started on the\n // greyed out area we take the distance from the edge of the drawer to the\n // start position. Otherwise we don't subtract at all and the drawer be\n // pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n //\n let translationX = dragX;\n if (drawerType === 'front') {\n const startPositionX = Animated.add(\n touchX,\n Animated.multiply(new Animated.Value(-1), dragX)\n );\n\n const dragOffsetFromOnStartPosition = startPositionX.interpolate({\n inputRange: [drawerWidth! - 1, drawerWidth!, drawerWidth! + 1],\n outputRange: [0, 0, 1],\n });\n translationX = Animated.add(\n dragX,\n dragOffsetFromOnStartPosition\n ) as Animated.Value; // TODO: as above\n }\n\n this.openValue = Animated.add(translationX, drawerTranslation).interpolate({\n inputRange: [0, drawerWidth!],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n });\n\n const gestureOptions: {\n useNativeDriver: boolean;\n // TODO: make sure it is correct\n listener?: (\n ev: NativeSyntheticEvent\n ) => void;\n } = {\n useNativeDriver: props.useNativeAnimations!,\n };\n\n if (this.props.onDrawerSlide) {\n gestureOptions.listener = (ev) => {\n const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX));\n const position = translationX / this.state.containerWidth;\n\n this.props.onDrawerSlide?.(position);\n };\n }\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragXValue, x: touchXValue } }],\n gestureOptions\n );\n };\n\n private handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ containerWidth: nativeEvent.layout.width });\n };\n\n private emitStateChanged = (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => {\n this.props.onDrawerStateChanged?.(newState, drawerWillShow);\n };\n\n private openingHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease({ nativeEvent });\n } else if (nativeEvent.state === State.ACTIVE) {\n this.emitStateChanged(DRAGGING, false);\n this.setState({ drawerState: DRAGGING });\n if (this.props.keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n if (this.props.hideStatusBar) {\n StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide');\n }\n }\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n if (\n this.drawerShown &&\n nativeEvent.oldState === State.ACTIVE &&\n this.props.drawerLockMode !== 'locked-open'\n ) {\n this.closeDrawer();\n }\n };\n\n private handleRelease = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n const { drawerWidth, drawerPosition, drawerType } = this.props;\n const { containerWidth } = this.state;\n let { translationX: dragX, velocityX, x: touchX } = nativeEvent;\n\n if (drawerPosition !== 'left') {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === 'front') {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth! ? gestureStartX - drawerWidth! : 0;\n }\n\n const startOffsetX =\n dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth! : 0);\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth! / 2;\n\n if (shouldOpen) {\n this.animateDrawer(startOffsetX, drawerWidth!, velocityX);\n } else {\n this.animateDrawer(startOffsetX, 0, velocityX);\n }\n };\n\n private updateShowing = (showing: boolean) => {\n this.drawerShown = showing;\n this.accessibilityIsModalView.current?.setNativeProps({\n accessibilityViewIsModal: showing,\n });\n this.pointerEventsView.current?.setNativeProps({\n pointerEvents: showing ? 'auto' : 'none',\n });\n const { drawerPosition, minSwipeDistance, edgeWidth } = this.props;\n const fromLeft = drawerPosition === 'left';\n // gestureOrientation is 1 if the expected gesture is from left to right and\n // -1 otherwise e.g. when drawer is on the left and is closed we expect left\n // to right gesture, thus orientation will be 1.\n const gestureOrientation =\n (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);\n // When drawer is closed we want the hitSlop to be horizontally shorter than\n // the container size by the value of SLOP. This will make it only activate\n // when gesture happens not further than SLOP away from the edge\n const hitSlop = fromLeft\n ? { left: 0, width: showing ? undefined : edgeWidth }\n : { right: 0, width: showing ? undefined : edgeWidth };\n // @ts-ignore internal API, maybe could be fixed in handler types\n this.panGestureHandler.current?.setNativeProps({\n hitSlop,\n activeOffsetX: gestureOrientation * minSwipeDistance!,\n });\n };\n\n private animateDrawer = (\n fromValue: number | null | undefined,\n toValue: number,\n velocity: number,\n speed?: number\n ) => {\n this.state.dragX.setValue(0);\n this.state.touchX.setValue(\n this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth\n );\n\n if (fromValue != null) {\n let nextFramePosition = fromValue;\n if (this.props.useNativeAnimations) {\n // When using native driver, we predict the next position of the\n // animation because it takes one frame of a roundtrip to pass RELEASE\n // event from native driver to JS before we can start animating. Without\n // it, it is more noticable that the frame is dropped.\n if (fromValue < toValue && velocity > 0) {\n nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue);\n } else if (fromValue > toValue && velocity < 0) {\n nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue);\n }\n }\n this.state.drawerTranslation.setValue(nextFramePosition);\n }\n\n const willShow = toValue !== 0;\n this.updateShowing(willShow);\n this.emitStateChanged(SETTLING, willShow);\n this.setState({ drawerState: SETTLING });\n if (this.props.hideStatusBar) {\n StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');\n }\n Animated.spring(this.state.drawerTranslation, {\n velocity,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n speed: speed ?? undefined,\n }).start(({ finished }) => {\n if (finished) {\n this.emitStateChanged(IDLE, willShow);\n this.setState({ drawerOpened: willShow });\n if (this.state.drawerState !== DRAGGING) {\n // it's possilbe that user started drag while the drawer\n // was settling, don't override state in this case\n this.setState({ drawerState: IDLE });\n }\n if (willShow) {\n this.props.onDrawerOpen?.();\n } else {\n this.props.onDrawerClose?.();\n }\n }\n });\n };\n\n openDrawer = (options: DrawerMovementOption = {}) => {\n this.animateDrawer(\n // TODO: decide if it should be null or undefined is the proper value\n undefined,\n this.props.drawerWidth!,\n options.velocity ? options.velocity : 0,\n options.speed\n );\n\n // We need to force the update, otherwise the overlay is not rerendered and\n // it would not be clickable\n this.forceUpdate();\n };\n\n closeDrawer = (options: DrawerMovementOption = {}) => {\n // TODO: decide if it should be null or undefined is the proper value\n this.animateDrawer(\n undefined,\n 0,\n options.velocity ? options.velocity : 0,\n options.speed\n );\n\n // We need to force the update, otherwise the overlay is not rerendered and\n // it would be still clickable\n this.forceUpdate();\n };\n\n private renderOverlay = () => {\n /* Overlay styles */\n invariant(this.openValue, 'should be set');\n let overlayOpacity;\n\n if (this.state.drawerState !== IDLE) {\n overlayOpacity = this.openValue;\n } else {\n overlayOpacity = this.state.drawerOpened ? 1 : 0;\n }\n\n const dynamicOverlayStyles = {\n opacity: overlayOpacity,\n backgroundColor: this.props.overlayColor,\n };\n\n return (\n \n \n \n );\n };\n\n private renderDrawer = () => {\n const {\n drawerBackgroundColor,\n drawerWidth,\n drawerPosition,\n drawerType,\n drawerContainerStyle,\n contentContainerStyle,\n } = this.props;\n\n const fromLeft = drawerPosition === 'left';\n const drawerSlide = drawerType !== 'back';\n const containerSlide = drawerType !== 'front';\n\n // we rely on row and row-reverse flex directions to position the drawer\n // properly. Apparently for RTL these are flipped which requires us to use\n // the opposite setting for the drawer to appear from left or right\n // according to the drawerPosition prop\n const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n const openValue = this.openValue;\n invariant(openValue, 'should be set');\n\n let containerStyles;\n if (containerSlide) {\n const containerTranslateX = openValue.interpolate({\n inputRange: [0, 1],\n outputRange: fromLeft ? [0, drawerWidth!] : [0, -drawerWidth!],\n extrapolate: 'clamp',\n });\n containerStyles = {\n transform: [{ translateX: containerTranslateX }],\n };\n }\n\n let drawerTranslateX: number | AnimatedInterpolation = 0;\n if (drawerSlide) {\n const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!;\n if (this.state.drawerState !== IDLE) {\n drawerTranslateX = openValue.interpolate({\n inputRange: [0, 1],\n outputRange: [closedDrawerOffset, 0],\n extrapolate: 'clamp',\n });\n } else {\n drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset;\n }\n }\n const drawerStyles: {\n transform: { translateX: number | AnimatedInterpolation }[];\n flexDirection: 'row-reverse' | 'row';\n } = {\n transform: [{ translateX: drawerTranslateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n\n return (\n \n \n {typeof this.props.children === 'function'\n ? this.props.children(this.openValue)\n : this.props.children}\n {this.renderOverlay()}\n \n \n \n {this.props.renderNavigationView(this.openValue as Animated.Value)}\n \n \n \n );\n };\n\n private setPanGestureRef = (ref: PanGestureHandler) => {\n // TODO(TS): make sure it is OK taken from\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842\n (\n this.panGestureHandler as React.MutableRefObject\n ).current = ref;\n this.props.onGestureRef?.(ref);\n };\n\n render() {\n const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } =\n this.props;\n\n const fromLeft = drawerPosition === 'left';\n\n // gestureOrientation is 1 if the expected gesture is from left to right and\n // -1 otherwise e.g. when drawer is on the left and is closed we expect left\n // to right gesture, thus orientation will be 1.\n const gestureOrientation =\n (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);\n\n // When drawer is closed we want the hitSlop to be horizontally shorter than\n // the container size by the value of SLOP. This will make it only activate\n // when gesture happens not further than SLOP away from the edge\n const hitSlop = fromLeft\n ? { left: 0, width: this.drawerShown ? undefined : edgeWidth }\n : { right: 0, width: this.drawerShown ? undefined : edgeWidth };\n\n return (\n \n {this.renderDrawer()}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js new file mode 100644 index 00000000..88b7a80b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js @@ -0,0 +1,240 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "PureNativeButton", { + enumerable: true, + get: function () { + return _GestureHandlerButton.default; + } +}); +exports.BorderlessButton = exports.RectButton = exports.BaseButton = exports.RawButton = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _createNativeWrapper = _interopRequireDefault(require("../handlers/createNativeWrapper")); + +var _GestureHandlerButton = _interopRequireDefault(require("./GestureHandlerButton")); + +var _State = require("../State"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const RawButton = (0, _createNativeWrapper.default)(_GestureHandlerButton.default, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: false +}); +exports.RawButton = RawButton; + +class BaseButton extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "lastActive", void 0); + + _defineProperty(this, "longPressTimeout", void 0); + + _defineProperty(this, "longPressDetected", void 0); + + _defineProperty(this, "handleEvent", ({ + nativeEvent + }) => { + const { + state, + oldState, + pointerInside + } = nativeEvent; + const active = pointerInside && state === _State.State.ACTIVE; + + if (active !== this.lastActive && this.props.onActiveStateChange) { + this.props.onActiveStateChange(active); + } + + if (!this.longPressDetected && oldState === _State.State.ACTIVE && state !== _State.State.CANCELLED && this.lastActive && this.props.onPress) { + this.props.onPress(active); + } + + if (!this.lastActive && // NativeViewGestureHandler sends different events based on platform + state === (_reactNative.Platform.OS !== 'android' ? _State.State.ACTIVE : _State.State.BEGAN) && pointerInside) { + this.longPressDetected = false; + + if (this.props.onLongPress) { + this.longPressTimeout = setTimeout(this.onLongPress, this.props.delayLongPress); + } + } else if ( // cancel longpress timeout if it's set and the finger moved out of the view + state === _State.State.ACTIVE && !pointerInside && this.longPressTimeout !== undefined) { + clearTimeout(this.longPressTimeout); + this.longPressTimeout = undefined; + } else if ( // cancel longpress timeout if it's set and the gesture has finished + this.longPressTimeout !== undefined && (state === _State.State.END || state === _State.State.CANCELLED || state === _State.State.FAILED)) { + clearTimeout(this.longPressTimeout); + this.longPressTimeout = undefined; + } + + this.lastActive = active; + }); + + _defineProperty(this, "onLongPress", () => { + var _this$props$onLongPre, _this$props; + + this.longPressDetected = true; + (_this$props$onLongPre = (_this$props = this.props).onLongPress) === null || _this$props$onLongPre === void 0 ? void 0 : _this$props$onLongPre.call(_this$props); + }); + + _defineProperty(this, "onHandlerStateChange", e => { + var _this$props$onHandler, _this$props2; + + (_this$props$onHandler = (_this$props2 = this.props).onHandlerStateChange) === null || _this$props$onHandler === void 0 ? void 0 : _this$props$onHandler.call(_this$props2, e); + this.handleEvent(e); + }); + + _defineProperty(this, "onGestureEvent", e => { + var _this$props$onGesture, _this$props3; + + (_this$props$onGesture = (_this$props3 = this.props).onGestureEvent) === null || _this$props$onGesture === void 0 ? void 0 : _this$props$onGesture.call(_this$props3, e); + this.handleEvent(e); // TODO: maybe it is not correct + }); + + this.lastActive = false; + this.longPressDetected = false; + } + + render() { + const { + rippleColor, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(RawButton, _extends({ + rippleColor: (0, _reactNative.processColor)(rippleColor) + }, rest, { + onGestureEvent: this.onGestureEvent, + onHandlerStateChange: this.onHandlerStateChange + })); + } + +} + +exports.BaseButton = BaseButton; + +_defineProperty(BaseButton, "defaultProps", { + delayLongPress: 600 +}); + +const AnimatedBaseButton = _reactNative.Animated.createAnimatedComponent(BaseButton); + +const btnStyles = _reactNative.StyleSheet.create({ + underlay: { + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + top: 0 + } +}); + +class RectButton extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "opacity", void 0); + + _defineProperty(this, "onActiveStateChange", active => { + var _this$props$onActiveS, _this$props4; + + if (_reactNative.Platform.OS !== 'android') { + this.opacity.setValue(active ? this.props.activeOpacity : 0); + } + + (_this$props$onActiveS = (_this$props4 = this.props).onActiveStateChange) === null || _this$props$onActiveS === void 0 ? void 0 : _this$props$onActiveS.call(_this$props4, active); + }); + + this.opacity = new _reactNative.Animated.Value(0); + } + + render() { + const { + children, + style, + ...rest + } = this.props; + + const resolvedStyle = _reactNative.StyleSheet.flatten(style !== null && style !== void 0 ? style : {}); + + return /*#__PURE__*/React.createElement(BaseButton, _extends({}, rest, { + style: resolvedStyle, + onActiveStateChange: this.onActiveStateChange + }), /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + style: [btnStyles.underlay, { + opacity: this.opacity, + backgroundColor: this.props.underlayColor, + borderRadius: resolvedStyle.borderRadius, + borderTopLeftRadius: resolvedStyle.borderTopLeftRadius, + borderTopRightRadius: resolvedStyle.borderTopRightRadius, + borderBottomLeftRadius: resolvedStyle.borderBottomLeftRadius, + borderBottomRightRadius: resolvedStyle.borderBottomRightRadius + }] + }), children); + } + +} + +exports.RectButton = RectButton; + +_defineProperty(RectButton, "defaultProps", { + activeOpacity: 0.105, + underlayColor: 'black' +}); + +class BorderlessButton extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "opacity", void 0); + + _defineProperty(this, "onActiveStateChange", active => { + var _this$props$onActiveS2, _this$props5; + + if (_reactNative.Platform.OS !== 'android') { + this.opacity.setValue(active ? this.props.activeOpacity : 1); + } + + (_this$props$onActiveS2 = (_this$props5 = this.props).onActiveStateChange) === null || _this$props$onActiveS2 === void 0 ? void 0 : _this$props$onActiveS2.call(_this$props5, active); + }); + + this.opacity = new _reactNative.Animated.Value(1); + } + + render() { + const { + children, + style, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(AnimatedBaseButton, _extends({}, rest, { + onActiveStateChange: this.onActiveStateChange, + style: [style, _reactNative.Platform.OS === 'ios' && { + opacity: this.opacity + }] + }), children); + } + +} + +exports.BorderlessButton = BorderlessButton; + +_defineProperty(BorderlessButton, "defaultProps", { + activeOpacity: 0.3, + borderless: true +}); +//# sourceMappingURL=GestureButtons.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js.map new file mode 100644 index 00000000..6c97de4d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureButtons.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureButtons.tsx"],"names":["RawButton","GestureHandlerButton","shouldCancelWhenOutside","shouldActivateOnStart","BaseButton","React","Component","constructor","props","nativeEvent","state","oldState","pointerInside","active","State","ACTIVE","lastActive","onActiveStateChange","longPressDetected","CANCELLED","onPress","Platform","OS","BEGAN","onLongPress","longPressTimeout","setTimeout","delayLongPress","undefined","clearTimeout","END","FAILED","e","onHandlerStateChange","handleEvent","onGestureEvent","render","rippleColor","rest","AnimatedBaseButton","Animated","createAnimatedComponent","btnStyles","StyleSheet","create","underlay","position","left","right","bottom","top","RectButton","opacity","setValue","activeOpacity","Value","children","style","resolvedStyle","flatten","backgroundColor","underlayColor","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","BorderlessButton","borderless"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Platform,\n processColor,\n StyleSheet,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\nimport GestureHandlerButton from './GestureHandlerButton';\nimport { State } from '../State';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from '../handlers/NativeViewGestureHandler';\n\nexport interface RawButtonProps extends NativeViewGestureHandlerProps {\n /**\n * Defines if more than one button could be pressed simultaneously. By default\n * set true.\n */\n exclusive?: boolean;\n // TODO: we should transform props in `createNativeWrapper`\n\n /**\n * Android only.\n *\n * Defines color of native ripple animation used since API level 21.\n */\n rippleColor?: any; // it was present in BaseButtonProps before but is used here in code\n\n /**\n * Android only.\n *\n * Defines radius of native ripple animation used since API level 21.\n */\n rippleRadius?: number | null;\n\n /**\n * Android only.\n *\n * Set this to true if you want the ripple animation to render outside the view bounds.\n */\n borderless?: boolean;\n\n /**\n * Android only.\n *\n * Defines whether the ripple animation should be drawn on the foreground of the view.\n */\n foreground?: boolean;\n\n /**\n * Android only.\n *\n * Set this to true if you don't want the system to play sound when the button is pressed.\n */\n touchSoundDisabled?: boolean;\n}\n\nexport interface BaseButtonProps extends RawButtonProps {\n /**\n * Called when the button gets pressed (analogous to `onPress` in\n * `TouchableHighlight` from RN core).\n */\n onPress?: (pointerInside: boolean) => void;\n\n /**\n * Called when the button gets pressed and is held for `delayLongPress`\n * milliseconds.\n */\n onLongPress?: () => void;\n\n /**\n * Called when button changes from inactive to active and vice versa. It\n * passes active state as a boolean variable as a first parameter for that\n * method.\n */\n onActiveStateChange?: (active: boolean) => void;\n style?: StyleProp;\n testID?: string;\n\n /**\n * Delay, in milliseconds, after which the `onLongPress` callback gets called.\n * Defaults to 600.\n */\n delayLongPress?: number;\n}\n\nexport interface RectButtonProps extends BaseButtonProps {\n /**\n * Background color that will be dimmed when button is in active state.\n */\n underlayColor?: string;\n\n /**\n * iOS only.\n *\n * Opacity applied to the underlay when button is in active state.\n */\n activeOpacity?: number;\n}\n\nexport interface BorderlessButtonProps extends BaseButtonProps {\n /**\n * iOS only.\n *\n * Opacity applied to the button when it is in an active state.\n */\n activeOpacity?: number;\n}\n\nexport const RawButton = createNativeWrapper(GestureHandlerButton, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: false,\n});\n\nexport class BaseButton extends React.Component {\n static defaultProps = {\n delayLongPress: 600,\n };\n\n private lastActive: boolean;\n private longPressTimeout: ReturnType | undefined;\n private longPressDetected: boolean;\n\n constructor(props: BaseButtonProps) {\n super(props);\n this.lastActive = false;\n this.longPressDetected = false;\n }\n\n private handleEvent = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n const { state, oldState, pointerInside } = nativeEvent;\n const active = pointerInside && state === State.ACTIVE;\n\n if (active !== this.lastActive && this.props.onActiveStateChange) {\n this.props.onActiveStateChange(active);\n }\n\n if (\n !this.longPressDetected &&\n oldState === State.ACTIVE &&\n state !== State.CANCELLED &&\n this.lastActive &&\n this.props.onPress\n ) {\n this.props.onPress(active);\n }\n\n if (\n !this.lastActive &&\n // NativeViewGestureHandler sends different events based on platform\n state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&\n pointerInside\n ) {\n this.longPressDetected = false;\n if (this.props.onLongPress) {\n this.longPressTimeout = setTimeout(\n this.onLongPress,\n this.props.delayLongPress\n );\n }\n } else if (\n // cancel longpress timeout if it's set and the finger moved out of the view\n state === State.ACTIVE &&\n !pointerInside &&\n this.longPressTimeout !== undefined\n ) {\n clearTimeout(this.longPressTimeout);\n this.longPressTimeout = undefined;\n } else if (\n // cancel longpress timeout if it's set and the gesture has finished\n this.longPressTimeout !== undefined &&\n (state === State.END ||\n state === State.CANCELLED ||\n state === State.FAILED)\n ) {\n clearTimeout(this.longPressTimeout);\n this.longPressTimeout = undefined;\n }\n\n this.lastActive = active;\n };\n\n private onLongPress = () => {\n this.longPressDetected = true;\n this.props.onLongPress?.();\n };\n\n // Normally, the parent would execute it's handler first, then forward the\n // event to listeners. However, here our handler is virtually only forwarding\n // events to listeners, so we reverse the order to keep the proper order of\n // the callbacks (from \"raw\" ones to \"processed\").\n private onHandlerStateChange = (\n e: HandlerStateChangeEvent\n ) => {\n this.props.onHandlerStateChange?.(e);\n this.handleEvent(e);\n };\n\n private onGestureEvent = (\n e: GestureEvent\n ) => {\n this.props.onGestureEvent?.(e);\n this.handleEvent(\n e as HandlerStateChangeEvent\n ); // TODO: maybe it is not correct\n };\n\n render() {\n const { rippleColor, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n\nconst AnimatedBaseButton = Animated.createAnimatedComponent(BaseButton);\n\nconst btnStyles = StyleSheet.create({\n underlay: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n});\n\nexport class RectButton extends React.Component {\n static defaultProps = {\n activeOpacity: 0.105,\n underlayColor: 'black',\n };\n\n private opacity: Animated.Value;\n\n constructor(props: RectButtonProps) {\n super(props);\n this.opacity = new Animated.Value(0);\n }\n\n private onActiveStateChange = (active: boolean) => {\n if (Platform.OS !== 'android') {\n this.opacity.setValue(active ? this.props.activeOpacity! : 0);\n }\n\n this.props.onActiveStateChange?.(active);\n };\n\n render() {\n const { children, style, ...rest } = this.props;\n\n const resolvedStyle = StyleSheet.flatten(style ?? {});\n\n return (\n \n \n {children}\n \n );\n }\n}\n\nexport class BorderlessButton extends React.Component {\n static defaultProps = {\n activeOpacity: 0.3,\n borderless: true,\n };\n\n private opacity: Animated.Value;\n\n constructor(props: BorderlessButtonProps) {\n super(props);\n this.opacity = new Animated.Value(1);\n }\n\n private onActiveStateChange = (active: boolean) => {\n if (Platform.OS !== 'android') {\n this.opacity.setValue(active ? this.props.activeOpacity! : 1);\n }\n\n this.props.onActiveStateChange?.(active);\n };\n\n render() {\n const { children, style, ...rest } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\nexport { default as PureNativeButton } from './GestureHandlerButton';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js new file mode 100644 index 00000000..e68496cd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js @@ -0,0 +1,115 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FlatList = exports.DrawerLayoutAndroid = exports.TextInput = exports.Switch = exports.ScrollView = exports.RefreshControl = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _createNativeWrapper = _interopRequireDefault(require("../handlers/createNativeWrapper")); + +var _NativeViewGestureHandler = require("../handlers/NativeViewGestureHandler"); + +var _utils = require("../utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +const RefreshControl = (0, _createNativeWrapper.default)(_reactNative.RefreshControl, { + disallowInterruption: true, + shouldCancelWhenOutside: false +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.RefreshControl = RefreshControl; +const GHScrollView = (0, _createNativeWrapper.default)(_reactNative.ScrollView, { + disallowInterruption: true, + shouldCancelWhenOutside: false +}); +const ScrollView = /*#__PURE__*/React.forwardRef((props, ref) => { + const refreshControlGestureRef = React.useRef(null); + const { + refreshControl, + waitFor, + ...rest + } = props; + return /*#__PURE__*/React.createElement(GHScrollView, _extends({}, rest, { + // @ts-ignore `ref` exists on `GHScrollView` + ref: ref, + waitFor: [...(0, _utils.toArray)(waitFor !== null && waitFor !== void 0 ? waitFor : []), refreshControlGestureRef] // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref + , + refreshControl: refreshControl ? /*#__PURE__*/React.cloneElement(refreshControl, { + // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS + ref: refreshControlGestureRef + }) : undefined + })); +}); // backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457 +// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them. +// eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.ScrollView = ScrollView; +const Switch = (0, _createNativeWrapper.default)(_reactNative.Switch, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: true, + disallowInterruption: true +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.Switch = Switch; +const TextInput = (0, _createNativeWrapper.default)(_reactNative.TextInput); // eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.TextInput = TextInput; +const DrawerLayoutAndroid = (0, _createNativeWrapper.default)(_reactNative.DrawerLayoutAndroid, { + disallowInterruption: true +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.DrawerLayoutAndroid = DrawerLayoutAndroid; +const FlatList = /*#__PURE__*/React.forwardRef((props, ref) => { + const refreshControlGestureRef = React.useRef(null); + const { + waitFor, + refreshControl, + ...rest + } = props; + const flatListProps = {}; + const scrollViewProps = {}; + + for (const [propName, value] of Object.entries(rest)) { + // https://github.com/microsoft/TypeScript/issues/26255 + if (_NativeViewGestureHandler.nativeViewProps.includes(propName)) { + // @ts-ignore - this function cannot have generic type so we have to ignore this error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + scrollViewProps[propName] = value; + } else { + // @ts-ignore - this function cannot have generic type so we have to ignore this error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + flatListProps[propName] = value; + } + } + + return ( + /*#__PURE__*/ + // @ts-ignore - this function cannot have generic type so we have to ignore this error + React.createElement(_reactNative.FlatList, _extends({ + ref: ref + }, flatListProps, { + renderScrollComponent: scrollProps => /*#__PURE__*/React.createElement(ScrollView, _extends({}, scrollProps, scrollViewProps, { + waitFor: [...(0, _utils.toArray)(waitFor !== null && waitFor !== void 0 ? waitFor : []), refreshControlGestureRef] + })) // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref + , + refreshControl: refreshControl ? /*#__PURE__*/React.cloneElement(refreshControl, { + // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS + ref: refreshControlGestureRef + }) : undefined + })) + ); +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.FlatList = FlatList; +//# sourceMappingURL=GestureComponents.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js.map new file mode 100644 index 00000000..7b513757 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureComponents.tsx"],"names":["RefreshControl","RNRefreshControl","disallowInterruption","shouldCancelWhenOutside","GHScrollView","RNScrollView","ScrollView","React","forwardRef","props","ref","refreshControlGestureRef","useRef","refreshControl","waitFor","rest","cloneElement","undefined","Switch","RNSwitch","shouldActivateOnStart","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","flatListProps","scrollViewProps","propName","value","Object","entries","nativeViewProps","includes","scrollProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n PropsWithChildren,\n ForwardedRef,\n RefAttributes,\n ReactElement,\n} from 'react';\nimport {\n ScrollView as RNScrollView,\n ScrollViewProps as RNScrollViewProps,\n Switch as RNSwitch,\n SwitchProps as RNSwitchProps,\n TextInput as RNTextInput,\n TextInputProps as RNTextInputProps,\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n FlatList as RNFlatList,\n FlatListProps as RNFlatListProps,\n RefreshControl as RNRefreshControl,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport {\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from '../handlers/NativeViewGestureHandler';\n\nimport { toArray } from '../utils';\n\nexport const RefreshControl = createNativeWrapper(RNRefreshControl, {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type RefreshControl = typeof RefreshControl & RNRefreshControl;\n\nconst GHScrollView = createNativeWrapper>(\n RNScrollView,\n {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n }\n);\nexport const ScrollView = React.forwardRef<\n RNScrollView,\n RNScrollViewProps & NativeViewGestureHandlerProps\n>((props, ref) => {\n const refreshControlGestureRef = React.useRef(null);\n const { refreshControl, waitFor, ...rest } = props;\n\n return (\n \n );\n});\n// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof GHScrollView & RNScrollView;\n\nexport const Switch = createNativeWrapper(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch & RNSwitch;\n\nexport const TextInput = createNativeWrapper(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput & RNTextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n PropsWithChildren\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &\n RNDrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef((props, ref) => {\n const refreshControlGestureRef = React.useRef(null);\n\n const { waitFor, refreshControl, ...rest } = props;\n\n const flatListProps = {};\n const scrollViewProps = {};\n for (const [propName, value] of Object.entries(rest)) {\n // https://github.com/microsoft/TypeScript/issues/26255\n if ((nativeViewProps as readonly string[]).includes(propName)) {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scrollViewProps[propName] = value;\n } else {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n flatListProps[propName] = value;\n }\n }\n\n return (\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n (\n \n )}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n}) as (\n props: PropsWithChildren<\n RNFlatListProps &\n RefAttributes> &\n NativeViewGestureHandlerProps\n >,\n ref: ForwardedRef>\n) => ReactElement | null;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList = typeof FlatList & RNFlatList;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js new file mode 100644 index 00000000..0a879ab8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js @@ -0,0 +1,51 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FlatList = exports.RefreshControl = exports.DrawerLayoutAndroid = exports.TextInput = exports.Switch = exports.ScrollView = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _createNativeWrapper = _interopRequireDefault(require("../handlers/createNativeWrapper")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +const ScrollView = (0, _createNativeWrapper.default)(_reactNative.ScrollView, { + disallowInterruption: false +}); +exports.ScrollView = ScrollView; +const Switch = (0, _createNativeWrapper.default)(_reactNative.Switch, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: true, + disallowInterruption: true +}); +exports.Switch = Switch; +const TextInput = (0, _createNativeWrapper.default)(_reactNative.TextInput); +exports.TextInput = TextInput; +const DrawerLayoutAndroid = (0, _createNativeWrapper.default)(_reactNative.DrawerLayoutAndroid, { + disallowInterruption: true +}); // @ts-ignore -- TODO(TS) to investigate if it's needed + +exports.DrawerLayoutAndroid = DrawerLayoutAndroid; +DrawerLayoutAndroid.positions = _reactNative.DrawerLayoutAndroid.positions; // RefreshControl is implemented as a functional component, rendering a View +// NativeViewGestureHandler needs to set a ref on its child, which cannot be done +// on functional components + +const RefreshControl = (0, _createNativeWrapper.default)(_reactNative.View); +exports.RefreshControl = RefreshControl; +const FlatList = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(_reactNative.FlatList, _extends({ + ref: ref +}, props, { + renderScrollComponent: scrollProps => /*#__PURE__*/React.createElement(ScrollView, scrollProps) +}))); +exports.FlatList = FlatList; +//# sourceMappingURL=GestureComponents.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js.map new file mode 100644 index 00000000..39552f39 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureComponents.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureComponents.web.tsx"],"names":["ScrollView","RNScrollView","disallowInterruption","Switch","RNSwitch","shouldCancelWhenOutside","shouldActivateOnStart","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","positions","RefreshControl","View","FlatList","React","forwardRef","props","ref","scrollProps"],"mappings":";;;;;;;AAAA;;AACA;;AAUA;;;;;;;;;;AAEO,MAAMA,UAAU,GAAG,kCAAoBC,uBAApB,EAAkC;AAC1DC,EAAAA,oBAAoB,EAAE;AADoC,CAAlC,CAAnB;;AAIA,MAAMC,MAAM,GAAG,kCAAoBC,mBAApB,EAA8B;AAClDC,EAAAA,uBAAuB,EAAE,KADyB;AAElDC,EAAAA,qBAAqB,EAAE,IAF2B;AAGlDJ,EAAAA,oBAAoB,EAAE;AAH4B,CAA9B,CAAf;;AAKA,MAAMK,SAAS,GAAG,kCAAoBC,sBAApB,CAAlB;;AACA,MAAMC,mBAAmB,GAAG,kCAAoBC,gCAApB,EAA2C;AAC5ER,EAAAA,oBAAoB,EAAE;AADsD,CAA3C,CAA5B,C,CAGP;;;AACAO,mBAAmB,CAACE,SAApB,GAAgCD,iCAAsBC,SAAtD,C,CACA;AACA;AACA;;AACO,MAAMC,cAAc,GAAG,kCAAoBC,iBAApB,CAAvB;;AAEA,MAAMC,QAAQ,gBAAGC,KAAK,CAACC,UAAN,CACtB,CAAoBC,KAApB,EAAiDC,GAAjD,kBACE,oBAAC,qBAAD;AACE,EAAA,GAAG,EAAEA;AADP,GAEMD,KAFN;AAGE,EAAA,qBAAqB,EAAGE,WAAD,iBAAiB,oBAAC,UAAD,EAAgBA,WAAhB;AAH1C,GAFoB,CAAjB","sourcesContent":["import * as React from 'react';\nimport {\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n FlatList as RNFlatList,\n Switch as RNSwitch,\n TextInput as RNTextInput,\n ScrollView as RNScrollView,\n FlatListProps,\n View,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nexport const ScrollView = createNativeWrapper(RNScrollView, {\n disallowInterruption: false,\n});\n\nexport const Switch = createNativeWrapper(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\nexport const TextInput = createNativeWrapper(RNTextInput);\nexport const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, {\n disallowInterruption: true,\n});\n// @ts-ignore -- TODO(TS) to investigate if it's needed\nDrawerLayoutAndroid.positions = RNDrawerLayoutAndroid.positions;\n// RefreshControl is implemented as a functional component, rendering a View\n// NativeViewGestureHandler needs to set a ref on its child, which cannot be done\n// on functional components\nexport const RefreshControl = createNativeWrapper(View);\n\nexport const FlatList = React.forwardRef(\n (props: FlatListProps, ref: any) => (\n }\n />\n )\n);\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js new file mode 100644 index 00000000..13478f71 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _utils = require("../utils"); + +/* eslint-disable @typescript-eslint/no-var-requires */ +const RNGestureHandlerButtonNativeComponent = (0, _utils.shouldUseCodegenNativeComponent)() ? require('../fabric/RNGestureHandlerButtonNativeComponent').default : (0, _reactNative.requireNativeComponent)('RNGestureHandlerButton'); +var _default = RNGestureHandlerButtonNativeComponent; +exports.default = _default; +//# sourceMappingURL=GestureHandlerButton.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js.map new file mode 100644 index 00000000..f2444ec9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerButton.tsx"],"names":["RNGestureHandlerButtonNativeComponent","require","default"],"mappings":";;;;;;;AACA;;AAEA;;AAHA;AAKA,MAAMA,qCAAqC,GAAG,gDAC1CC,OAAO,CAAC,iDAAD,CAAP,CAA2DC,OADjB,GAE1C,yCAAuB,wBAAvB,CAFJ;eAIeF,qC","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { HostComponent, requireNativeComponent } from 'react-native';\nimport { RawButtonProps } from './GestureButtons';\nimport { shouldUseCodegenNativeComponent } from '../utils';\n\nconst RNGestureHandlerButtonNativeComponent = shouldUseCodegenNativeComponent()\n ? require('../fabric/RNGestureHandlerButtonNativeComponent').default\n : requireNativeComponent('RNGestureHandlerButton');\n\nexport default RNGestureHandlerButtonNativeComponent as HostComponent;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js new file mode 100644 index 00000000..d26da0d5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +var _default = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(_reactNative.View, _extends({ + ref: ref, + accessibilityRole: "button" +}, props))); + +exports.default = _default; +//# sourceMappingURL=GestureHandlerButton.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js.map new file mode 100644 index 00000000..920df0c4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/GestureHandlerButton.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerButton.web.tsx"],"names":["React","forwardRef","props","ref"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;4BAEeA,KAAK,CAACC,UAAN,CAAuB,CAACC,KAAD,EAAQC,GAAR,kBACpC,oBAAC,iBAAD;AAAM,EAAA,GAAG,EAAEA,GAAX;AAAgB,EAAA,iBAAiB,EAAC;AAAlC,GAA+CD,KAA/C,EADa,C","sourcesContent":["import * as React from 'react';\nimport { View } from 'react-native';\n\nexport default React.forwardRef((props, ref) => (\n \n));\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js new file mode 100644 index 00000000..7dad7387 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js @@ -0,0 +1,369 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _PanGestureHandler = require("../handlers/PanGestureHandler"); + +var _TapGestureHandler = require("../handlers/TapGestureHandler"); + +var _State = require("../State"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const DRAG_TOSS = 0.05; + +class Swipeable extends React.Component { + constructor(_props) { + super(_props); + + _defineProperty(this, "onGestureEvent", void 0); + + _defineProperty(this, "transX", void 0); + + _defineProperty(this, "showLeftAction", void 0); + + _defineProperty(this, "leftActionTranslate", void 0); + + _defineProperty(this, "showRightAction", void 0); + + _defineProperty(this, "rightActionTranslate", void 0); + + _defineProperty(this, "updateAnimatedEvent", (props, state) => { + const { + friction, + overshootFriction + } = props; + const { + dragX, + rowTranslation, + leftWidth = 0, + rowWidth = 0 + } = state; + const { + rightOffset = rowWidth + } = state; + const rightWidth = Math.max(0, rowWidth - rightOffset); + const { + overshootLeft = leftWidth > 0, + overshootRight = rightWidth > 0 + } = props; + + const transX = _reactNative.Animated.add(rowTranslation, dragX.interpolate({ + inputRange: [0, friction], + outputRange: [0, 1] + })).interpolate({ + inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1], + outputRange: [-rightWidth - (overshootRight ? 1 / overshootFriction : 0), -rightWidth, leftWidth, leftWidth + (overshootLeft ? 1 / overshootFriction : 0)] + }); + + this.transX = transX; + this.showLeftAction = leftWidth > 0 ? transX.interpolate({ + inputRange: [-1, 0, leftWidth], + outputRange: [0, 0, 1] + }) : new _reactNative.Animated.Value(0); + this.leftActionTranslate = this.showLeftAction.interpolate({ + inputRange: [0, Number.MIN_VALUE], + outputRange: [-10000, 0], + extrapolate: 'clamp' + }); + this.showRightAction = rightWidth > 0 ? transX.interpolate({ + inputRange: [-rightWidth, 0, 1], + outputRange: [1, 0, 0] + }) : new _reactNative.Animated.Value(0); + this.rightActionTranslate = this.showRightAction.interpolate({ + inputRange: [0, Number.MIN_VALUE], + outputRange: [-10000, 0], + extrapolate: 'clamp' + }); + }); + + _defineProperty(this, "onTapHandlerStateChange", ({ + nativeEvent + }) => { + if (nativeEvent.oldState === _State.State.ACTIVE) { + this.close(); + } + }); + + _defineProperty(this, "onHandlerStateChange", ev => { + if (ev.nativeEvent.oldState === _State.State.ACTIVE) { + this.handleRelease(ev); + } + }); + + _defineProperty(this, "handleRelease", ev => { + const { + velocityX, + translationX: dragX + } = ev.nativeEvent; + const { + leftWidth = 0, + rowWidth = 0, + rowState + } = this.state; + const { + rightOffset = rowWidth + } = this.state; + const rightWidth = rowWidth - rightOffset; + const { + friction, + leftThreshold = leftWidth / 2, + rightThreshold = rightWidth / 2 + } = this.props; + const startOffsetX = this.currentOffset() + dragX / friction; + const translationX = (dragX + DRAG_TOSS * velocityX) / friction; + let toValue = 0; + + if (rowState === 0) { + if (translationX > leftThreshold) { + toValue = leftWidth; + } else if (translationX < -rightThreshold) { + toValue = -rightWidth; + } + } else if (rowState === 1) { + // swiped to left + if (translationX > -leftThreshold) { + toValue = leftWidth; + } + } else { + // swiped to right + if (translationX < rightThreshold) { + toValue = -rightWidth; + } + } + + this.animateRow(startOffsetX, toValue, velocityX / friction); + }); + + _defineProperty(this, "animateRow", (fromValue, toValue, velocityX) => { + const { + dragX, + rowTranslation + } = this.state; + dragX.setValue(0); + rowTranslation.setValue(fromValue); + this.setState({ + rowState: Math.sign(toValue) + }); + + _reactNative.Animated.spring(rowTranslation, { + restSpeedThreshold: 1.7, + restDisplacementThreshold: 0.4, + velocity: velocityX, + bounciness: 0, + toValue, + useNativeDriver: this.props.useNativeAnimations, + ...this.props.animationOptions + }).start(({ + finished + }) => { + if (finished) { + if (toValue > 0) { + var _this$props$onSwipeab, _this$props, _this$props$onSwipeab2, _this$props2; + + (_this$props$onSwipeab = (_this$props = this.props).onSwipeableLeftOpen) === null || _this$props$onSwipeab === void 0 ? void 0 : _this$props$onSwipeab.call(_this$props); + (_this$props$onSwipeab2 = (_this$props2 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab2 === void 0 ? void 0 : _this$props$onSwipeab2.call(_this$props2, 'left', this); + } else if (toValue < 0) { + var _this$props$onSwipeab3, _this$props3, _this$props$onSwipeab4, _this$props4; + + (_this$props$onSwipeab3 = (_this$props3 = this.props).onSwipeableRightOpen) === null || _this$props$onSwipeab3 === void 0 ? void 0 : _this$props$onSwipeab3.call(_this$props3); + (_this$props$onSwipeab4 = (_this$props4 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab4 === void 0 ? void 0 : _this$props$onSwipeab4.call(_this$props4, 'right', this); + } else { + var _this$props$onSwipeab5, _this$props5; + + const closingDirection = fromValue > 0 ? 'left' : 'right'; + (_this$props$onSwipeab5 = (_this$props5 = this.props).onSwipeableClose) === null || _this$props$onSwipeab5 === void 0 ? void 0 : _this$props$onSwipeab5.call(_this$props5, closingDirection, this); + } + } + }); + + if (toValue > 0) { + var _this$props$onSwipeab6, _this$props6, _this$props$onSwipeab7, _this$props7; + + (_this$props$onSwipeab6 = (_this$props6 = this.props).onSwipeableLeftWillOpen) === null || _this$props$onSwipeab6 === void 0 ? void 0 : _this$props$onSwipeab6.call(_this$props6); + (_this$props$onSwipeab7 = (_this$props7 = this.props).onSwipeableWillOpen) === null || _this$props$onSwipeab7 === void 0 ? void 0 : _this$props$onSwipeab7.call(_this$props7, 'left'); + } else if (toValue < 0) { + var _this$props$onSwipeab8, _this$props8, _this$props$onSwipeab9, _this$props9; + + (_this$props$onSwipeab8 = (_this$props8 = this.props).onSwipeableRightWillOpen) === null || _this$props$onSwipeab8 === void 0 ? void 0 : _this$props$onSwipeab8.call(_this$props8); + (_this$props$onSwipeab9 = (_this$props9 = this.props).onSwipeableWillOpen) === null || _this$props$onSwipeab9 === void 0 ? void 0 : _this$props$onSwipeab9.call(_this$props9, 'right'); + } else { + var _this$props$onSwipeab10, _this$props10; + + const closingDirection = fromValue > 0 ? 'left' : 'right'; + (_this$props$onSwipeab10 = (_this$props10 = this.props).onSwipeableWillClose) === null || _this$props$onSwipeab10 === void 0 ? void 0 : _this$props$onSwipeab10.call(_this$props10, closingDirection); + } + }); + + _defineProperty(this, "onRowLayout", ({ + nativeEvent + }) => { + this.setState({ + rowWidth: nativeEvent.layout.width + }); + }); + + _defineProperty(this, "currentOffset", () => { + const { + leftWidth = 0, + rowWidth = 0, + rowState + } = this.state; + const { + rightOffset = rowWidth + } = this.state; + const rightWidth = rowWidth - rightOffset; + + if (rowState === 1) { + return leftWidth; + } else if (rowState === -1) { + return -rightWidth; + } + + return 0; + }); + + _defineProperty(this, "close", () => { + this.animateRow(this.currentOffset(), 0); + }); + + _defineProperty(this, "openLeft", () => { + const { + leftWidth = 0 + } = this.state; + this.animateRow(this.currentOffset(), leftWidth); + }); + + _defineProperty(this, "openRight", () => { + const { + rowWidth = 0 + } = this.state; + const { + rightOffset = rowWidth + } = this.state; + const rightWidth = rowWidth - rightOffset; + this.animateRow(this.currentOffset(), -rightWidth); + }); + + const _dragX = new _reactNative.Animated.Value(0); + + this.state = { + dragX: _dragX, + rowTranslation: new _reactNative.Animated.Value(0), + rowState: 0, + leftWidth: undefined, + rightOffset: undefined, + rowWidth: undefined + }; + this.updateAnimatedEvent(_props, this.state); + this.onGestureEvent = _reactNative.Animated.event([{ + nativeEvent: { + translationX: _dragX + } + }], { + useNativeDriver: _props.useNativeAnimations + }); + } + + shouldComponentUpdate(props, state) { + if (this.props.friction !== props.friction || this.props.overshootLeft !== props.overshootLeft || this.props.overshootRight !== props.overshootRight || this.props.overshootFriction !== props.overshootFriction || this.state.leftWidth !== state.leftWidth || this.state.rightOffset !== state.rightOffset || this.state.rowWidth !== state.rowWidth) { + this.updateAnimatedEvent(props, state); + } + + return true; + } + + render() { + const { + rowState + } = this.state; + const { + children, + renderLeftActions, + renderRightActions + } = this.props; + const left = renderLeftActions && /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + style: [styles.leftActions, // all those and below parameters can have ! since they are all + // asigned in constructor in `updateAnimatedEvent` but TS cannot spot + // it for some reason + { + transform: [{ + translateX: this.leftActionTranslate + }] + }] + }, renderLeftActions(this.showLeftAction, this.transX), /*#__PURE__*/React.createElement(_reactNative.View, { + onLayout: ({ + nativeEvent + }) => this.setState({ + leftWidth: nativeEvent.layout.x + }) + })); + const right = renderRightActions && /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + style: [styles.rightActions, { + transform: [{ + translateX: this.rightActionTranslate + }] + }] + }, renderRightActions(this.showRightAction, this.transX, this), /*#__PURE__*/React.createElement(_reactNative.View, { + onLayout: ({ + nativeEvent + }) => this.setState({ + rightOffset: nativeEvent.layout.x + }) + })); + return /*#__PURE__*/React.createElement(_PanGestureHandler.PanGestureHandler, _extends({ + activeOffsetX: [-10, 10] + }, this.props, { + onGestureEvent: this.onGestureEvent, + onHandlerStateChange: this.onHandlerStateChange + }), /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + onLayout: this.onRowLayout, + style: [styles.container, this.props.containerStyle] + }, left, right, /*#__PURE__*/React.createElement(_TapGestureHandler.TapGestureHandler, { + enabled: rowState !== 0, + onHandlerStateChange: this.onTapHandlerStateChange + }, /*#__PURE__*/React.createElement(_reactNative.Animated.View, { + pointerEvents: rowState === 0 ? 'auto' : 'box-only', + style: [{ + transform: [{ + translateX: this.transX + }] + }, this.props.childrenContainerStyle] + }, children)))); + } + +} + +exports.default = Swipeable; + +_defineProperty(Swipeable, "defaultProps", { + friction: 1, + overshootFriction: 1, + useNativeAnimations: true +}); + +const styles = _reactNative.StyleSheet.create({ + container: { + overflow: 'hidden' + }, + leftActions: { ..._reactNative.StyleSheet.absoluteFillObject, + flexDirection: _reactNative.I18nManager.isRTL ? 'row-reverse' : 'row' + }, + rightActions: { ..._reactNative.StyleSheet.absoluteFillObject, + flexDirection: _reactNative.I18nManager.isRTL ? 'row' : 'row-reverse' + } +}); +//# sourceMappingURL=Swipeable.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js.map new file mode 100644 index 00000000..96c5b79a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/Swipeable.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["Swipeable.tsx"],"names":["DRAG_TOSS","Swipeable","Component","constructor","props","state","friction","overshootFriction","dragX","rowTranslation","leftWidth","rowWidth","rightOffset","rightWidth","Math","max","overshootLeft","overshootRight","transX","Animated","add","interpolate","inputRange","outputRange","showLeftAction","Value","leftActionTranslate","Number","MIN_VALUE","extrapolate","showRightAction","rightActionTranslate","nativeEvent","oldState","State","ACTIVE","close","ev","handleRelease","velocityX","translationX","rowState","leftThreshold","rightThreshold","startOffsetX","currentOffset","toValue","animateRow","fromValue","setValue","setState","sign","spring","restSpeedThreshold","restDisplacementThreshold","velocity","bounciness","useNativeDriver","useNativeAnimations","animationOptions","start","finished","onSwipeableLeftOpen","onSwipeableOpen","onSwipeableRightOpen","closingDirection","onSwipeableClose","onSwipeableLeftWillOpen","onSwipeableWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","layout","width","undefined","updateAnimatedEvent","onGestureEvent","event","shouldComponentUpdate","render","children","renderLeftActions","renderRightActions","left","styles","leftActions","transform","translateX","x","right","rightActions","onHandlerStateChange","onRowLayout","container","containerStyle","onTapHandlerStateChange","childrenContainerStyle","StyleSheet","create","overflow","absoluteFillObject","flexDirection","I18nManager","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n StyleSheet,\n View,\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\n// Animated.AnimatedInterpolation has been converted to a generic type\n// in @types/react-native 0.70. This way we can maintain compatibility\n// with all versions of @types/react-native\ntype AnimatedInterpolation = ReturnType;\n\nexport interface SwipeableProps\n extends Pick {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when left action panel gets open.\n */\n onSwipeableLeftOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when right action panel gets open.\n */\n onSwipeableRightOpen?: () => void;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (\n direction: 'left' | 'right',\n swipeable: Swipeable\n ) => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when left action panel starts animating on open.\n */\n onSwipeableLeftWillOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when right action panel starts animating on open.\n */\n onSwipeableRightWillOpen?: () => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n\n useNativeAnimations?: boolean;\n\n animationOptions?: Record;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp;\n}\n\ntype SwipeableState = {\n dragX: Animated.Value;\n rowTranslation: Animated.Value;\n rowState: number;\n leftWidth?: number;\n rightOffset?: number;\n rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n SwipeableProps,\n SwipeableState\n> {\n static defaultProps = {\n friction: 1,\n overshootFriction: 1,\n useNativeAnimations: true,\n };\n\n constructor(props: SwipeableProps) {\n super(props);\n const dragX = new Animated.Value(0);\n this.state = {\n dragX,\n rowTranslation: new Animated.Value(0),\n rowState: 0,\n leftWidth: undefined,\n rightOffset: undefined,\n rowWidth: undefined,\n };\n this.updateAnimatedEvent(props, this.state);\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragX } }],\n { useNativeDriver: props.useNativeAnimations! }\n );\n }\n\n shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {\n if (\n this.props.friction !== props.friction ||\n this.props.overshootLeft !== props.overshootLeft ||\n this.props.overshootRight !== props.overshootRight ||\n this.props.overshootFriction !== props.overshootFriction ||\n this.state.leftWidth !== state.leftWidth ||\n this.state.rightOffset !== state.rightOffset ||\n this.state.rowWidth !== state.rowWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private onGestureEvent?: (\n event: GestureEvent\n ) => void;\n private transX?: AnimatedInterpolation;\n private showLeftAction?: AnimatedInterpolation | Animated.Value;\n private leftActionTranslate?: AnimatedInterpolation;\n private showRightAction?: AnimatedInterpolation | Animated.Value;\n private rightActionTranslate?: AnimatedInterpolation;\n\n private updateAnimatedEvent = (\n props: SwipeableProps,\n state: SwipeableState\n ) => {\n const { friction, overshootFriction } = props;\n const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n const { rightOffset = rowWidth } = state;\n const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } =\n props;\n\n const transX = Animated.add(\n rowTranslation,\n dragX.interpolate({\n inputRange: [0, friction!],\n outputRange: [0, 1],\n })\n ).interpolate({\n inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],\n outputRange: [\n -rightWidth - (overshootRight ? 1 / overshootFriction! : 0),\n -rightWidth,\n leftWidth,\n leftWidth + (overshootLeft ? 1 / overshootFriction! : 0),\n ],\n });\n this.transX = transX;\n this.showLeftAction =\n leftWidth > 0\n ? transX.interpolate({\n inputRange: [-1, 0, leftWidth],\n outputRange: [0, 0, 1],\n })\n : new Animated.Value(0);\n this.leftActionTranslate = this.showLeftAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n this.showRightAction =\n rightWidth > 0\n ? transX.interpolate({\n inputRange: [-rightWidth, 0, 1],\n outputRange: [1, 0, 0],\n })\n : new Animated.Value(0);\n this.rightActionTranslate = this.showRightAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.close();\n }\n };\n\n private onHandlerStateChange = (\n ev: HandlerStateChangeEvent\n ) => {\n if (ev.nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease(ev);\n }\n };\n\n private handleRelease = (\n ev: HandlerStateChangeEvent\n ) => {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n const {\n friction,\n leftThreshold = leftWidth / 2,\n rightThreshold = rightWidth / 2,\n } = this.props;\n\n const startOffsetX = this.currentOffset() + dragX / friction!;\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n let toValue = 0;\n if (rowState === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth;\n }\n } else if (rowState === 1) {\n // swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth;\n }\n } else {\n // swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth;\n }\n }\n\n this.animateRow(startOffsetX, toValue, velocityX / friction!);\n };\n\n private animateRow = (\n fromValue: number,\n toValue: number,\n velocityX?:\n | number\n | {\n x: number;\n y: number;\n }\n ) => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(fromValue);\n\n this.setState({ rowState: Math.sign(toValue) });\n Animated.spring(rowTranslation, {\n restSpeedThreshold: 1.7,\n restDisplacementThreshold: 0.4,\n velocity: velocityX,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n ...this.props.animationOptions,\n }).start(({ finished }) => {\n if (finished) {\n if (toValue > 0) {\n this.props.onSwipeableLeftOpen?.();\n this.props.onSwipeableOpen?.('left', this);\n } else if (toValue < 0) {\n this.props.onSwipeableRightOpen?.();\n this.props.onSwipeableOpen?.('right', this);\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableClose?.(closingDirection, this);\n }\n }\n });\n if (toValue > 0) {\n this.props.onSwipeableLeftWillOpen?.();\n this.props.onSwipeableWillOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightWillOpen?.();\n this.props.onSwipeableWillOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableWillClose?.(closingDirection);\n }\n };\n\n private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ rowWidth: nativeEvent.layout.width });\n };\n\n private currentOffset = () => {\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n if (rowState === 1) {\n return leftWidth;\n } else if (rowState === -1) {\n return -rightWidth;\n }\n return 0;\n };\n\n close = () => {\n this.animateRow(this.currentOffset(), 0);\n };\n\n openLeft = () => {\n const { leftWidth = 0 } = this.state;\n this.animateRow(this.currentOffset(), leftWidth);\n };\n\n openRight = () => {\n const { rowWidth = 0 } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n this.animateRow(this.currentOffset(), -rightWidth);\n };\n\n render() {\n const { rowState } = this.state;\n const { children, renderLeftActions, renderRightActions } = this.props;\n\n const left = renderLeftActions && (\n \n {renderLeftActions(this.showLeftAction!, this.transX!)}\n \n this.setState({ leftWidth: nativeEvent.layout.x })\n }\n />\n \n );\n\n const right = renderRightActions && (\n \n {renderRightActions(this.showRightAction!, this.transX!, this)}\n \n this.setState({ rightOffset: nativeEvent.layout.x })\n }\n />\n \n );\n\n return (\n \n \n {left}\n {right}\n \n \n {children}\n \n \n \n
\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js new file mode 100644 index 00000000..274c7f2c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js @@ -0,0 +1,284 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.TOUCHABLE_STATE = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _State = require("../../State"); + +var _GestureButtons = require("../GestureButtons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/** + * Each touchable is a states' machine which preforms transitions. + * On very beginning (and on the very end or recognition) touchable is + * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger + * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition + * finishes in UNDETERMINED state. + */ +const TOUCHABLE_STATE = { + UNDETERMINED: 0, + BEGAN: 1, + MOVED_OUTSIDE: 2 +}; +exports.TOUCHABLE_STATE = TOUCHABLE_STATE; + +/** + * GenericTouchable is not intented to be used as it is. + * Should be treated as a source for the rest of touchables + */ +class GenericTouchable extends React.Component { + constructor(...args) { + super(...args); + + _defineProperty(this, "pressInTimeout", void 0); + + _defineProperty(this, "pressOutTimeout", void 0); + + _defineProperty(this, "longPressTimeout", void 0); + + _defineProperty(this, "longPressDetected", false); + + _defineProperty(this, "pointerInside", true); + + _defineProperty(this, "STATE", TOUCHABLE_STATE.UNDETERMINED); + + _defineProperty(this, "onGestureEvent", ({ + nativeEvent: { + pointerInside + } + }) => { + if (this.pointerInside !== pointerInside) { + if (pointerInside) { + this.onMoveIn(); + } else { + this.onMoveOut(); + } + } + + this.pointerInside = pointerInside; + }); + + _defineProperty(this, "onHandlerStateChange", ({ + nativeEvent + }) => { + const { + state + } = nativeEvent; + + if (state === _State.State.CANCELLED || state === _State.State.FAILED) { + // Need to handle case with external cancellation (e.g. by ScrollView) + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + } else if ( // This platform check is an implication of slightly different behavior of handlers on different platform. + // And Android "Active" state is achieving on first move of a finger, not on press in. + // On iOS event on "Began" is not delivered. + state === (_reactNative.Platform.OS !== 'android' ? _State.State.ACTIVE : _State.State.BEGAN) && this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + // Moving inside requires + this.handlePressIn(); + } else if (state === _State.State.END) { + const shouldCallOnPress = !this.longPressDetected && this.STATE !== TOUCHABLE_STATE.MOVED_OUTSIDE && this.pressOutTimeout === null; + this.handleGoToUndetermined(); + + if (shouldCallOnPress) { + var _this$props$onPress, _this$props; + + // Calls only inside component whether no long press was called previously + (_this$props$onPress = (_this$props = this.props).onPress) === null || _this$props$onPress === void 0 ? void 0 : _this$props$onPress.call(_this$props); + } + } + }); + + _defineProperty(this, "onLongPressDetected", () => { + var _this$props$onLongPre, _this$props2; + + this.longPressDetected = true; // checked for in the caller of `onLongPressDetected`, but better to check twice + + (_this$props$onLongPre = (_this$props2 = this.props).onLongPress) === null || _this$props$onLongPre === void 0 ? void 0 : _this$props$onLongPre.call(_this$props2); + }); + } + + // handlePressIn in called on first touch on traveling inside component. + // Handles state transition with delay. + handlePressIn() { + if (this.props.delayPressIn) { + this.pressInTimeout = setTimeout(() => { + this.moveToState(TOUCHABLE_STATE.BEGAN); + this.pressInTimeout = null; + }, this.props.delayPressIn); + } else { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + + if (this.props.onLongPress) { + const time = (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0); + this.longPressTimeout = setTimeout(this.onLongPressDetected, time); + } + } // handleMoveOutside in called on traveling outside component. + // Handles state transition with delay. + + + handleMoveOutside() { + if (this.props.delayPressOut) { + this.pressOutTimeout = this.pressOutTimeout || setTimeout(() => { + this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE); + this.pressOutTimeout = null; + }, this.props.delayPressOut); + } else { + this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE); + } + } // handleGoToUndetermined transits to UNDETERMINED state with proper delay + + + handleGoToUndetermined() { + clearTimeout(this.pressOutTimeout); // TODO: maybe it can be undefined + + if (this.props.delayPressOut) { + this.pressOutTimeout = setTimeout(() => { + if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + this.pressOutTimeout = null; + }, this.props.delayPressOut); + } else { + if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + } + } + + componentDidMount() { + this.reset(); + } // reset timeout to prevent memory leaks. + + + reset() { + this.longPressDetected = false; + this.pointerInside = true; + clearTimeout(this.pressInTimeout); + clearTimeout(this.pressOutTimeout); + clearTimeout(this.longPressTimeout); + this.pressOutTimeout = null; + this.longPressTimeout = null; + this.pressInTimeout = null; + } // All states' transitions are defined here. + + + moveToState(newState) { + var _this$props$onStateCh, _this$props6; + + if (newState === this.STATE) { + // Ignore dummy transitions + return; + } + + if (newState === TOUCHABLE_STATE.BEGAN) { + var _this$props$onPressIn, _this$props3; + + // First touch and moving inside + (_this$props$onPressIn = (_this$props3 = this.props).onPressIn) === null || _this$props$onPressIn === void 0 ? void 0 : _this$props$onPressIn.call(_this$props3); + } else if (newState === TOUCHABLE_STATE.MOVED_OUTSIDE) { + var _this$props$onPressOu, _this$props4; + + // Moving outside + (_this$props$onPressOu = (_this$props4 = this.props).onPressOut) === null || _this$props$onPressOu === void 0 ? void 0 : _this$props$onPressOu.call(_this$props4); + } else if (newState === TOUCHABLE_STATE.UNDETERMINED) { + // Need to reset each time on transition to UNDETERMINED + this.reset(); + + if (this.STATE === TOUCHABLE_STATE.BEGAN) { + var _this$props$onPressOu2, _this$props5; + + // ... and if it happens inside button. + (_this$props$onPressOu2 = (_this$props5 = this.props).onPressOut) === null || _this$props$onPressOu2 === void 0 ? void 0 : _this$props$onPressOu2.call(_this$props5); + } + } // Finally call lister (used by subclasses) + + + (_this$props$onStateCh = (_this$props6 = this.props).onStateChange) === null || _this$props$onStateCh === void 0 ? void 0 : _this$props$onStateCh.call(_this$props6, this.STATE, newState); // ... and make transition. + + this.STATE = newState; + } + + componentWillUnmount() { + // to prevent memory leaks + this.reset(); + } + + onMoveIn() { + if (this.STATE === TOUCHABLE_STATE.MOVED_OUTSIDE) { + // This call is not throttled with delays (like in RN's implementation). + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + } + + onMoveOut() { + // long press should no longer be detected + clearTimeout(this.longPressTimeout); + this.longPressTimeout = null; + + if (this.STATE === TOUCHABLE_STATE.BEGAN) { + this.handleMoveOutside(); + } + } + + render() { + var _this$props$touchSoun; + + const coreProps = { + accessible: this.props.accessible !== false, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityHint: this.props.accessibilityHint, + accessibilityRole: this.props.accessibilityRole, + // TODO: check if changed to no 's' correctly, also removed 2 props that are no longer available: `accessibilityComponentType` and `accessibilityTraits`, + // would be good to check if it is ok for sure, see: https://github.com/facebook/react-native/issues/24016 + accessibilityState: this.props.accessibilityState, + accessibilityActions: this.props.accessibilityActions, + onAccessibilityAction: this.props.onAccessibilityAction, + nativeID: this.props.nativeID, + onLayout: this.props.onLayout, + hitSlop: this.props.hitSlop + }; + return /*#__PURE__*/React.createElement(_GestureButtons.BaseButton, _extends({ + style: this.props.containerStyle, + onHandlerStateChange: // TODO: not sure if it can be undefined instead of null + this.props.disabled ? undefined : this.onHandlerStateChange, + onGestureEvent: this.onGestureEvent, + hitSlop: this.props.hitSlop, + shouldActivateOnStart: this.props.shouldActivateOnStart, + disallowInterruption: this.props.disallowInterruption, + testID: this.props.testID, + touchSoundDisabled: (_this$props$touchSoun = this.props.touchSoundDisabled) !== null && _this$props$touchSoun !== void 0 ? _this$props$touchSoun : false, + enabled: !this.props.disabled + }, this.props.extraButtonProps), /*#__PURE__*/React.createElement(_reactNative.Animated.View, _extends({}, coreProps, { + style: this.props.style + }), this.props.children)); + } + +} + +exports.default = GenericTouchable; + +_defineProperty(GenericTouchable, "defaultProps", { + delayLongPress: 600, + extraButtonProps: { + rippleColor: 'transparent', + exclusive: true + } +}); +//# sourceMappingURL=GenericTouchable.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js.map new file mode 100644 index 00000000..1be1d934 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/GenericTouchable.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GenericTouchable.tsx"],"names":["TOUCHABLE_STATE","UNDETERMINED","BEGAN","MOVED_OUTSIDE","GenericTouchable","Component","nativeEvent","pointerInside","onMoveIn","onMoveOut","state","State","CANCELLED","FAILED","moveToState","Platform","OS","ACTIVE","STATE","handlePressIn","END","shouldCallOnPress","longPressDetected","pressOutTimeout","handleGoToUndetermined","props","onPress","onLongPress","delayPressIn","pressInTimeout","setTimeout","time","delayLongPress","longPressTimeout","onLongPressDetected","handleMoveOutside","delayPressOut","clearTimeout","componentDidMount","reset","newState","onPressIn","onPressOut","onStateChange","componentWillUnmount","render","coreProps","accessible","accessibilityLabel","accessibilityHint","accessibilityRole","accessibilityState","accessibilityActions","onAccessibilityAction","nativeID","onLayout","hitSlop","containerStyle","disabled","undefined","onHandlerStateChange","onGestureEvent","shouldActivateOnStart","disallowInterruption","testID","touchSoundDisabled","extraButtonProps","style","children","rippleColor","exclusive"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n Platform,\n StyleProp,\n ViewStyle,\n TouchableWithoutFeedbackProps,\n} from 'react-native';\n\nimport { State } from '../../State';\nimport { BaseButton } from '../GestureButtons';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../../handlers/gestureHandlerCommon';\nimport { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler';\nimport { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android';\n\n/**\n * Each touchable is a states' machine which preforms transitions.\n * On very beginning (and on the very end or recognition) touchable is\n * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger\n * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition\n * finishes in UNDETERMINED state.\n */\nexport const TOUCHABLE_STATE = {\n UNDETERMINED: 0,\n BEGAN: 1,\n MOVED_OUTSIDE: 2,\n} as const;\n\ntype TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE];\n\nexport interface GenericTouchableProps extends TouchableWithoutFeedbackProps {\n // Decided to drop not used fields from RN's implementation.\n // e.g. onBlur and onFocus as well as deprecated props. - TODO: this comment may be unuseful in this moment\n\n // TODO: in RN these events get native event parameter, which prolly could be used in our implementation too\n onPress?: () => void;\n onPressIn?: () => void;\n onPressOut?: () => void;\n onLongPress?: () => void;\n\n nativeID?: string;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n\n containerStyle?: StyleProp;\n}\n\ninterface InternalProps {\n extraButtonProps: TouchableNativeFeedbackExtraProps;\n onStateChange?: (oldState: TouchableState, newState: TouchableState) => void;\n}\n\n// TODO: maybe can be better\n// TODO: all clearTimeout have ! added, maybe they shouldn't ?\ntype Timeout = ReturnType | null | undefined;\n\n/**\n * GenericTouchable is not intented to be used as it is.\n * Should be treated as a source for the rest of touchables\n */\n\nexport default class GenericTouchable extends Component<\n GenericTouchableProps & InternalProps\n> {\n static defaultProps = {\n delayLongPress: 600,\n extraButtonProps: {\n rippleColor: 'transparent',\n exclusive: true,\n },\n };\n\n // timeout handlers\n pressInTimeout: Timeout;\n pressOutTimeout: Timeout;\n longPressTimeout: Timeout;\n\n // This flag is required since recognition of longPress implies not-invoking onPress\n longPressDetected = false;\n\n pointerInside = true;\n\n // State of touchable\n STATE: TouchableState = TOUCHABLE_STATE.UNDETERMINED;\n\n // handlePressIn in called on first touch on traveling inside component.\n // Handles state transition with delay.\n handlePressIn() {\n if (this.props.delayPressIn) {\n this.pressInTimeout = setTimeout(() => {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n this.pressInTimeout = null;\n }, this.props.delayPressIn);\n } else {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n if (this.props.onLongPress) {\n const time =\n (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0);\n this.longPressTimeout = setTimeout(this.onLongPressDetected, time);\n }\n }\n // handleMoveOutside in called on traveling outside component.\n // Handles state transition with delay.\n handleMoveOutside() {\n if (this.props.delayPressOut) {\n this.pressOutTimeout =\n this.pressOutTimeout ||\n setTimeout(() => {\n this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE);\n this.pressOutTimeout = null;\n }, this.props.delayPressOut);\n } else {\n this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE);\n }\n }\n\n // handleGoToUndetermined transits to UNDETERMINED state with proper delay\n handleGoToUndetermined() {\n clearTimeout(this.pressOutTimeout!); // TODO: maybe it can be undefined\n if (this.props.delayPressOut) {\n this.pressOutTimeout = setTimeout(() => {\n if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n this.pressOutTimeout = null;\n }, this.props.delayPressOut);\n } else {\n if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n }\n }\n\n componentDidMount() {\n this.reset();\n }\n // reset timeout to prevent memory leaks.\n reset() {\n this.longPressDetected = false;\n this.pointerInside = true;\n clearTimeout(this.pressInTimeout!);\n clearTimeout(this.pressOutTimeout!);\n clearTimeout(this.longPressTimeout!);\n this.pressOutTimeout = null;\n this.longPressTimeout = null;\n this.pressInTimeout = null;\n }\n\n // All states' transitions are defined here.\n moveToState(newState: TouchableState) {\n if (newState === this.STATE) {\n // Ignore dummy transitions\n return;\n }\n if (newState === TOUCHABLE_STATE.BEGAN) {\n // First touch and moving inside\n this.props.onPressIn?.();\n } else if (newState === TOUCHABLE_STATE.MOVED_OUTSIDE) {\n // Moving outside\n this.props.onPressOut?.();\n } else if (newState === TOUCHABLE_STATE.UNDETERMINED) {\n // Need to reset each time on transition to UNDETERMINED\n this.reset();\n if (this.STATE === TOUCHABLE_STATE.BEGAN) {\n // ... and if it happens inside button.\n this.props.onPressOut?.();\n }\n }\n // Finally call lister (used by subclasses)\n this.props.onStateChange?.(this.STATE, newState);\n // ... and make transition.\n this.STATE = newState;\n }\n\n onGestureEvent = ({\n nativeEvent: { pointerInside },\n }: GestureEvent) => {\n if (this.pointerInside !== pointerInside) {\n if (pointerInside) {\n this.onMoveIn();\n } else {\n this.onMoveOut();\n }\n }\n this.pointerInside = pointerInside;\n };\n\n onHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n const { state } = nativeEvent;\n if (state === State.CANCELLED || state === State.FAILED) {\n // Need to handle case with external cancellation (e.g. by ScrollView)\n this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n } else if (\n // This platform check is an implication of slightly different behavior of handlers on different platform.\n // And Android \"Active\" state is achieving on first move of a finger, not on press in.\n // On iOS event on \"Began\" is not delivered.\n state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&\n this.STATE === TOUCHABLE_STATE.UNDETERMINED\n ) {\n // Moving inside requires\n this.handlePressIn();\n } else if (state === State.END) {\n const shouldCallOnPress =\n !this.longPressDetected &&\n this.STATE !== TOUCHABLE_STATE.MOVED_OUTSIDE &&\n this.pressOutTimeout === null;\n this.handleGoToUndetermined();\n if (shouldCallOnPress) {\n // Calls only inside component whether no long press was called previously\n this.props.onPress?.();\n }\n }\n };\n\n onLongPressDetected = () => {\n this.longPressDetected = true;\n // checked for in the caller of `onLongPressDetected`, but better to check twice\n this.props.onLongPress?.();\n };\n\n componentWillUnmount() {\n // to prevent memory leaks\n this.reset();\n }\n\n onMoveIn() {\n if (this.STATE === TOUCHABLE_STATE.MOVED_OUTSIDE) {\n // This call is not throttled with delays (like in RN's implementation).\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n }\n\n onMoveOut() {\n // long press should no longer be detected\n clearTimeout(this.longPressTimeout!);\n this.longPressTimeout = null;\n if (this.STATE === TOUCHABLE_STATE.BEGAN) {\n this.handleMoveOutside();\n }\n }\n\n render() {\n const coreProps = {\n accessible: this.props.accessible !== false,\n accessibilityLabel: this.props.accessibilityLabel,\n accessibilityHint: this.props.accessibilityHint,\n accessibilityRole: this.props.accessibilityRole,\n // TODO: check if changed to no 's' correctly, also removed 2 props that are no longer available: `accessibilityComponentType` and `accessibilityTraits`,\n // would be good to check if it is ok for sure, see: https://github.com/facebook/react-native/issues/24016\n accessibilityState: this.props.accessibilityState,\n accessibilityActions: this.props.accessibilityActions,\n onAccessibilityAction: this.props.onAccessibilityAction,\n nativeID: this.props.nativeID,\n onLayout: this.props.onLayout,\n hitSlop: this.props.hitSlop,\n };\n\n return (\n \n \n {this.props.children}\n \n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js new file mode 100644 index 00000000..c792c981 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js @@ -0,0 +1,109 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _GenericTouchable = _interopRequireWildcard(require("./GenericTouchable")); + +var _reactNative = require("react-native"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/** + * TouchableHighlight follows RN's implementation + */ +class TouchableHighlight extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "showUnderlay", () => { + var _this$props$onShowUnd, _this$props; + + if (!this.hasPressHandler()) { + return; + } + + this.setState({ + extraChildStyle: { + opacity: this.props.activeOpacity + }, + extraUnderlayStyle: { + backgroundColor: this.props.underlayColor + } + }); + (_this$props$onShowUnd = (_this$props = this.props).onShowUnderlay) === null || _this$props$onShowUnd === void 0 ? void 0 : _this$props$onShowUnd.call(_this$props); + }); + + _defineProperty(this, "hasPressHandler", () => this.props.onPress || this.props.onPressIn || this.props.onPressOut || this.props.onLongPress); + + _defineProperty(this, "hideUnderlay", () => { + var _this$props$onHideUnd, _this$props2; + + this.setState({ + extraChildStyle: null, + extraUnderlayStyle: null + }); + (_this$props$onHideUnd = (_this$props2 = this.props).onHideUnderlay) === null || _this$props$onHideUnd === void 0 ? void 0 : _this$props$onHideUnd.call(_this$props2); + }); + + _defineProperty(this, "onStateChange", (_from, to) => { + if (to === _GenericTouchable.TOUCHABLE_STATE.BEGAN) { + this.showUnderlay(); + } else if (to === _GenericTouchable.TOUCHABLE_STATE.UNDETERMINED || to === _GenericTouchable.TOUCHABLE_STATE.MOVED_OUTSIDE) { + this.hideUnderlay(); + } + }); + + this.state = { + extraChildStyle: null, + extraUnderlayStyle: null + }; + } // Copied from RN + + + renderChildren() { + if (!this.props.children) { + return /*#__PURE__*/React.createElement(_reactNative.View, null); + } + + const child = React.Children.only(this.props.children); // TODO: not sure if OK but fixes error + + return /*#__PURE__*/React.cloneElement(child, { + style: _reactNative.StyleSheet.compose(child.props.style, this.state.extraChildStyle) + }); + } + + render() { + const { + style = {}, + ...rest + } = this.props; + const { + extraUnderlayStyle + } = this.state; + return /*#__PURE__*/React.createElement(_GenericTouchable.default, _extends({}, rest, { + style: [style, extraUnderlayStyle], + onStateChange: this.onStateChange + }), this.renderChildren()); + } + +} + +exports.default = TouchableHighlight; + +_defineProperty(TouchableHighlight, "defaultProps", { ..._GenericTouchable.default.defaultProps, + activeOpacity: 0.85, + delayPressOut: 100, + underlayColor: 'black' +}); +//# sourceMappingURL=TouchableHighlight.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js.map new file mode 100644 index 00000000..d4c47d31 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableHighlight.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableHighlight.tsx"],"names":["TouchableHighlight","Component","constructor","props","hasPressHandler","setState","extraChildStyle","opacity","activeOpacity","extraUnderlayStyle","backgroundColor","underlayColor","onShowUnderlay","onPress","onPressIn","onPressOut","onLongPress","onHideUnderlay","_from","to","TOUCHABLE_STATE","BEGAN","showUnderlay","UNDETERMINED","MOVED_OUTSIDE","hideUnderlay","state","renderChildren","children","child","React","Children","only","cloneElement","style","StyleSheet","compose","render","rest","onStateChange","GenericTouchable","defaultProps","delayPressOut"],"mappings":";;;;;;;AAAA;;AAEA;;AAIA;;;;;;;;;;AAiBA;AACA;AACA;AACe,MAAMA,kBAAN,SAAiCC,eAAjC,CAGb;AAQAC,EAAAA,WAAW,CAACC,KAAD,EAAyD;AAClE,UAAMA,KAAN;;AADkE,0CASrD,MAAM;AAAA;;AACnB,UAAI,CAAC,KAAKC,eAAL,EAAL,EAA6B;AAC3B;AACD;;AACD,WAAKC,QAAL,CAAc;AACZC,QAAAA,eAAe,EAAE;AACfC,UAAAA,OAAO,EAAE,KAAKJ,KAAL,CAAWK;AADL,SADL;AAIZC,QAAAA,kBAAkB,EAAE;AAClBC,UAAAA,eAAe,EAAE,KAAKP,KAAL,CAAWQ;AADV;AAJR,OAAd;AAQA,mDAAKR,KAAL,EAAWS,cAAX;AACD,KAtBmE;;AAAA,6CAwBlD,MAChB,KAAKT,KAAL,CAAWU,OAAX,IACA,KAAKV,KAAL,CAAWW,SADX,IAEA,KAAKX,KAAL,CAAWY,UAFX,IAGA,KAAKZ,KAAL,CAAWa,WA5BuD;;AAAA,0CA8BrD,MAAM;AAAA;;AACnB,WAAKX,QAAL,CAAc;AACZC,QAAAA,eAAe,EAAE,IADL;AAEZG,QAAAA,kBAAkB,EAAE;AAFR,OAAd;AAIA,oDAAKN,KAAL,EAAWc,cAAX;AACD,KApCmE;;AAAA,2CAmDpD,CAACC,KAAD,EAAgBC,EAAhB,KAA+B;AAC7C,UAAIA,EAAE,KAAKC,kCAAgBC,KAA3B,EAAkC;AAChC,aAAKC,YAAL;AACD,OAFD,MAEO,IACLH,EAAE,KAAKC,kCAAgBG,YAAvB,IACAJ,EAAE,KAAKC,kCAAgBI,aAFlB,EAGL;AACA,aAAKC,YAAL;AACD;AACF,KA5DmE;;AAElE,SAAKC,KAAL,GAAa;AACXpB,MAAAA,eAAe,EAAE,IADN;AAEXG,MAAAA,kBAAkB,EAAE;AAFT,KAAb;AAID,GAdD,CAgBA;;;AA8BAkB,EAAAA,cAAc,GAAG;AACf,QAAI,CAAC,KAAKxB,KAAL,CAAWyB,QAAhB,EAA0B;AACxB,0BAAO,oBAAC,iBAAD,OAAP;AACD;;AAED,UAAMC,KAAK,GAAGC,KAAK,CAACC,QAAN,CAAeC,IAAf,CACZ,KAAK7B,KAAL,CAAWyB,QADC,CAAd,CALe,CAOqB;;AACpC,wBAAOE,KAAK,CAACG,YAAN,CAAmBJ,KAAnB,EAA0B;AAC/BK,MAAAA,KAAK,EAAEC,wBAAWC,OAAX,CAAmBP,KAAK,CAAC1B,KAAN,CAAY+B,KAA/B,EAAsC,KAAKR,KAAL,CAAWpB,eAAjD;AADwB,KAA1B,CAAP;AAGD;;AAaD+B,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEH,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGI;AAAjB,QAA0B,KAAKnC,KAArC;AACA,UAAM;AAAEM,MAAAA;AAAF,QAAyB,KAAKiB,KAApC;AACA,wBACE,oBAAC,yBAAD,eACMY,IADN;AAEE,MAAA,KAAK,EAAE,CAACJ,KAAD,EAAQzB,kBAAR,CAFT;AAGE,MAAA,aAAa,EAAE,KAAK8B;AAHtB,QAIG,KAAKZ,cAAL,EAJH,CADF;AAQD;;AAjFD;;;;gBAHmB3B,kB,kBAIG,EACpB,GAAGwC,0BAAiBC,YADA;AAEpBjC,EAAAA,aAAa,EAAE,IAFK;AAGpBkC,EAAAA,aAAa,EAAE,GAHK;AAIpB/B,EAAAA,aAAa,EAAE;AAJK,C","sourcesContent":["import * as React from 'react';\nimport { Component } from 'react';\nimport GenericTouchable, {\n GenericTouchableProps,\n TOUCHABLE_STATE,\n} from './GenericTouchable';\nimport {\n StyleSheet,\n View,\n TouchableHighlightProps,\n ColorValue,\n ViewProps,\n} from 'react-native';\n\ninterface State {\n extraChildStyle: null | {\n opacity?: number;\n };\n extraUnderlayStyle: null | {\n backgroundColor?: ColorValue;\n };\n}\n\n/**\n * TouchableHighlight follows RN's implementation\n */\nexport default class TouchableHighlight extends Component<\n TouchableHighlightProps & GenericTouchableProps,\n State\n> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n activeOpacity: 0.85,\n delayPressOut: 100,\n underlayColor: 'black',\n };\n\n constructor(props: TouchableHighlightProps & GenericTouchableProps) {\n super(props);\n this.state = {\n extraChildStyle: null,\n extraUnderlayStyle: null,\n };\n }\n\n // Copied from RN\n showUnderlay = () => {\n if (!this.hasPressHandler()) {\n return;\n }\n this.setState({\n extraChildStyle: {\n opacity: this.props.activeOpacity,\n },\n extraUnderlayStyle: {\n backgroundColor: this.props.underlayColor,\n },\n });\n this.props.onShowUnderlay?.();\n };\n\n hasPressHandler = () =>\n this.props.onPress ||\n this.props.onPressIn ||\n this.props.onPressOut ||\n this.props.onLongPress;\n\n hideUnderlay = () => {\n this.setState({\n extraChildStyle: null,\n extraUnderlayStyle: null,\n });\n this.props.onHideUnderlay?.();\n };\n\n renderChildren() {\n if (!this.props.children) {\n return ;\n }\n\n const child = React.Children.only(\n this.props.children\n ) as React.ReactElement; // TODO: not sure if OK but fixes error\n return React.cloneElement(child, {\n style: StyleSheet.compose(child.props.style, this.state.extraChildStyle),\n });\n }\n\n onStateChange = (_from: number, to: number) => {\n if (to === TOUCHABLE_STATE.BEGAN) {\n this.showUnderlay();\n } else if (\n to === TOUCHABLE_STATE.UNDETERMINED ||\n to === TOUCHABLE_STATE.MOVED_OUTSIDE\n ) {\n this.hideUnderlay();\n }\n };\n\n render() {\n const { style = {}, ...rest } = this.props;\n const { extraUnderlayStyle } = this.state;\n return (\n \n {this.renderChildren()}\n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js new file mode 100644 index 00000000..c07b4e98 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js @@ -0,0 +1,100 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var React = _interopRequireWildcard(require("react")); + +var _GenericTouchable = _interopRequireDefault(require("./GenericTouchable")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/** + * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback. + * There's small difference with handling long press ripple since RN's implementation calls + * ripple animation via bridge. This solution leaves all animations' handling for native components so + * it follows native behaviours. + */ +class TouchableNativeFeedback extends React.Component { + // could be taken as RNTouchableNativeFeedback.SelectableBackground etc. but the API may change + getExtraButtonProps() { + const extraProps = {}; + const { + background + } = this.props; + + if (background) { + // I changed type values to match those used in RN + // TODO(TS): check if it works the same as previous implementation - looks like it works the same as RN component, so it should be ok + if (background.type === 'RippleAndroid') { + extraProps['borderless'] = background.borderless; + extraProps['rippleColor'] = background.color; + } else if (background.type === 'ThemeAttrAndroid') { + extraProps['borderless'] = background.attribute === 'selectableItemBackgroundBorderless'; + } // I moved it from above since it should be available in all options + + + extraProps['rippleRadius'] = background.rippleRadius; + } + + extraProps['foreground'] = this.props.useForeground; + return extraProps; + } + + render() { + const { + style = {}, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(_GenericTouchable.default, _extends({}, rest, { + style: style, + extraButtonProps: this.getExtraButtonProps() + })); + } + +} + +exports.default = TouchableNativeFeedback; + +_defineProperty(TouchableNativeFeedback, "defaultProps", { ..._GenericTouchable.default.defaultProps, + useForeground: true, + extraButtonProps: { + // Disable hiding ripple on Android + rippleColor: null + } +}); + +_defineProperty(TouchableNativeFeedback, "SelectableBackground", rippleRadius => ({ + type: 'ThemeAttrAndroid', + // I added `attribute` prop to clone the implementation of RN and be able to use only 2 types + attribute: 'selectableItemBackground', + rippleRadius +})); + +_defineProperty(TouchableNativeFeedback, "SelectableBackgroundBorderless", rippleRadius => ({ + type: 'ThemeAttrAndroid', + attribute: 'selectableItemBackgroundBorderless', + rippleRadius +})); + +_defineProperty(TouchableNativeFeedback, "Ripple", (color, borderless, rippleRadius) => ({ + type: 'RippleAndroid', + color, + borderless, + rippleRadius +})); + +_defineProperty(TouchableNativeFeedback, "canUseNativeForeground", () => _reactNative.Platform.Version >= 23); +//# sourceMappingURL=TouchableNativeFeedback.android.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map new file mode 100644 index 00000000..e7a57eba --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableNativeFeedback.android.tsx"],"names":["TouchableNativeFeedback","Component","getExtraButtonProps","extraProps","background","props","type","borderless","color","attribute","rippleRadius","useForeground","render","style","rest","GenericTouchable","defaultProps","extraButtonProps","rippleColor","Platform","Version"],"mappings":";;;;;;;AAAA;;AAKA;;AAEA;;;;;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMA,uBAAN,SAAsCC,eAAtC,CAEb;AAUA;AAyBAC,EAAAA,mBAAmB,GAAG;AACpB,UAAMC,UAA6C,GAAG,EAAtD;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAiB,KAAKC,KAA5B;;AACA,QAAID,UAAJ,EAAgB;AACd;AACA;AACA,UAAIA,UAAU,CAACE,IAAX,KAAoB,eAAxB,EAAyC;AACvCH,QAAAA,UAAU,CAAC,YAAD,CAAV,GAA2BC,UAAU,CAACG,UAAtC;AACAJ,QAAAA,UAAU,CAAC,aAAD,CAAV,GAA4BC,UAAU,CAACI,KAAvC;AACD,OAHD,MAGO,IAAIJ,UAAU,CAACE,IAAX,KAAoB,kBAAxB,EAA4C;AACjDH,QAAAA,UAAU,CAAC,YAAD,CAAV,GACEC,UAAU,CAACK,SAAX,KAAyB,oCAD3B;AAED,OATa,CAUd;;;AACAN,MAAAA,UAAU,CAAC,cAAD,CAAV,GAA6BC,UAAU,CAACM,YAAxC;AACD;;AACDP,IAAAA,UAAU,CAAC,YAAD,CAAV,GAA2B,KAAKE,KAAL,CAAWM,aAAtC;AACA,WAAOR,UAAP;AACD;;AACDS,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGC;AAAjB,QAA0B,KAAKT,KAArC;AACA,wBACE,oBAAC,yBAAD,eACMS,IADN;AAEE,MAAA,KAAK,EAAED,KAFT;AAGE,MAAA,gBAAgB,EAAE,KAAKX,mBAAL;AAHpB,OADF;AAOD;;AA/DD;;;;gBAFmBF,uB,kBAGG,EACpB,GAAGe,0BAAiBC,YADA;AAEpBL,EAAAA,aAAa,EAAE,IAFK;AAGpBM,EAAAA,gBAAgB,EAAE;AAChB;AACAC,IAAAA,WAAW,EAAE;AAFG;AAHE,C;;gBAHHlB,uB,0BAaYU,YAAD,KAA4B;AACxDJ,EAAAA,IAAI,EAAE,kBADkD;AAExD;AACAG,EAAAA,SAAS,EAAE,0BAH6C;AAIxDC,EAAAA;AAJwD,CAA5B,C;;gBAbXV,uB,oCAmBsBU,YAAD,KAA4B;AAClEJ,EAAAA,IAAI,EAAE,kBAD4D;AAElEG,EAAAA,SAAS,EAAE,oCAFuD;AAGlEC,EAAAA;AAHkE,CAA5B,C;;gBAnBrBV,uB,YAwBH,CACdQ,KADc,EAEdD,UAFc,EAGdG,YAHc,MAIV;AACJJ,EAAAA,IAAI,EAAE,eADF;AAEJE,EAAAA,KAFI;AAGJD,EAAAA,UAHI;AAIJG,EAAAA;AAJI,CAJU,C;;gBAxBGV,uB,4BAmCa,MAAMmB,sBAASC,OAAT,IAAoB,E","sourcesContent":["import {\n Platform,\n TouchableNativeFeedbackProps,\n ColorValue,\n} from 'react-native';\nimport * as React from 'react';\nimport { Component } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nexport type TouchableNativeFeedbackExtraProps = {\n borderless?: boolean;\n rippleColor?: number | null;\n rippleRadius?: number | null;\n foreground?: boolean;\n};\n\n/**\n * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback.\n * There's small difference with handling long press ripple since RN's implementation calls\n * ripple animation via bridge. This solution leaves all animations' handling for native components so\n * it follows native behaviours.\n */\nexport default class TouchableNativeFeedback extends Component<\n TouchableNativeFeedbackProps & GenericTouchableProps\n> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n useForeground: true,\n extraButtonProps: {\n // Disable hiding ripple on Android\n rippleColor: null,\n },\n };\n\n // could be taken as RNTouchableNativeFeedback.SelectableBackground etc. but the API may change\n static SelectableBackground = (rippleRadius?: number) => ({\n type: 'ThemeAttrAndroid',\n // I added `attribute` prop to clone the implementation of RN and be able to use only 2 types\n attribute: 'selectableItemBackground',\n rippleRadius,\n });\n static SelectableBackgroundBorderless = (rippleRadius?: number) => ({\n type: 'ThemeAttrAndroid',\n attribute: 'selectableItemBackgroundBorderless',\n rippleRadius,\n });\n static Ripple = (\n color: ColorValue,\n borderless: boolean,\n rippleRadius?: number\n ) => ({\n type: 'RippleAndroid',\n color,\n borderless,\n rippleRadius,\n });\n\n static canUseNativeForeground = () => Platform.Version >= 23;\n\n getExtraButtonProps() {\n const extraProps: TouchableNativeFeedbackExtraProps = {};\n const { background } = this.props;\n if (background) {\n // I changed type values to match those used in RN\n // TODO(TS): check if it works the same as previous implementation - looks like it works the same as RN component, so it should be ok\n if (background.type === 'RippleAndroid') {\n extraProps['borderless'] = background.borderless;\n extraProps['rippleColor'] = background.color;\n } else if (background.type === 'ThemeAttrAndroid') {\n extraProps['borderless'] =\n background.attribute === 'selectableItemBackgroundBorderless';\n }\n // I moved it from above since it should be available in all options\n extraProps['rippleRadius'] = background.rippleRadius;\n }\n extraProps['foreground'] = this.props.useForeground;\n return extraProps;\n }\n render() {\n const { style = {}, ...rest } = this.props;\n return (\n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js new file mode 100644 index 00000000..419cc6e4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _default = _reactNative.TouchableNativeFeedback; +exports.default = _default; +//# sourceMappingURL=TouchableNativeFeedback.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map new file mode 100644 index 00000000..fb781ea4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableNativeFeedback.tsx"],"names":["TouchableNativeFeedback"],"mappings":";;;;;;;AAAA;;eAEeA,oC","sourcesContent":["import { TouchableNativeFeedback } from 'react-native';\n\nexport default TouchableNativeFeedback;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js new file mode 100644 index 00000000..f95681ec --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js @@ -0,0 +1,77 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _GenericTouchable = _interopRequireWildcard(require("./GenericTouchable")); + +var React = _interopRequireWildcard(require("react")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/** + * TouchableOpacity bases on timing animation which has been used in RN's core + */ +class TouchableOpacity extends React.Component { + constructor(...args) { + super(...args); + + _defineProperty(this, "getChildStyleOpacityWithDefault", () => { + const childStyle = _reactNative.StyleSheet.flatten(this.props.style) || {}; + return childStyle.opacity == null ? 1 : childStyle.opacity; + }); + + _defineProperty(this, "opacity", new _reactNative.Animated.Value(this.getChildStyleOpacityWithDefault())); + + _defineProperty(this, "setOpacityTo", (value, duration) => { + var _this$props$useNative; + + _reactNative.Animated.timing(this.opacity, { + toValue: value, + duration: duration, + easing: _reactNative.Easing.inOut(_reactNative.Easing.quad), + useNativeDriver: (_this$props$useNative = this.props.useNativeAnimations) !== null && _this$props$useNative !== void 0 ? _this$props$useNative : true + }).start(); + }); + + _defineProperty(this, "onStateChange", (_from, to) => { + if (to === _GenericTouchable.TOUCHABLE_STATE.BEGAN) { + this.setOpacityTo(this.props.activeOpacity, 0); + } else if (to === _GenericTouchable.TOUCHABLE_STATE.UNDETERMINED || to === _GenericTouchable.TOUCHABLE_STATE.MOVED_OUTSIDE) { + this.setOpacityTo(this.getChildStyleOpacityWithDefault(), 150); + } + }); + } + + render() { + const { + style = {}, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(_GenericTouchable.default, _extends({}, rest, { + style: [style, { + opacity: this.opacity // TODO: fix this + + }], + onStateChange: this.onStateChange + }), this.props.children ? this.props.children : /*#__PURE__*/React.createElement(_reactNative.View, null)); + } + +} + +exports.default = TouchableOpacity; + +_defineProperty(TouchableOpacity, "defaultProps", { ..._GenericTouchable.default.defaultProps, + activeOpacity: 0.2 +}); +//# sourceMappingURL=TouchableOpacity.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js.map new file mode 100644 index 00000000..80762bca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableOpacity.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableOpacity.tsx"],"names":["TouchableOpacity","Component","childStyle","StyleSheet","flatten","props","style","opacity","Animated","Value","getChildStyleOpacityWithDefault","value","duration","timing","toValue","easing","Easing","inOut","quad","useNativeDriver","useNativeAnimations","start","_from","to","TOUCHABLE_STATE","BEGAN","setOpacityTo","activeOpacity","UNDETERMINED","MOVED_OUTSIDE","render","rest","onStateChange","children","GenericTouchable","defaultProps"],"mappings":";;;;;;;AAAA;;AAOA;;AAIA;;;;;;;;;;AAOA;AACA;AACA;AACe,MAAMA,gBAAN,SAA+BC,eAA/B,CAEb;AAAA;AAAA;;AAAA,6DAOkC,MAAM;AACtC,YAAMC,UAAU,GAAGC,wBAAWC,OAAX,CAAmB,KAAKC,KAAL,CAAWC,KAA9B,KAAwC,EAA3D;AACA,aAAOJ,UAAU,CAACK,OAAX,IAAsB,IAAtB,GAA6B,CAA7B,GAAiCL,UAAU,CAACK,OAAnD;AACD,KAVD;;AAAA,qCAYU,IAAIC,sBAASC,KAAb,CAAmB,KAAKC,+BAAL,EAAnB,CAZV;;AAAA,0CAce,CAACC,KAAD,EAAgBC,QAAhB,KAAqC;AAAA;;AAClDJ,4BAASK,MAAT,CAAgB,KAAKN,OAArB,EAA8B;AAC5BO,QAAAA,OAAO,EAAEH,KADmB;AAE5BC,QAAAA,QAAQ,EAAEA,QAFkB;AAG5BG,QAAAA,MAAM,EAAEC,oBAAOC,KAAP,CAAaD,oBAAOE,IAApB,CAHoB;AAI5BC,QAAAA,eAAe,2BAAE,KAAKd,KAAL,CAAWe,mBAAb,yEAAoC;AAJvB,OAA9B,EAKGC,KALH;AAMD,KArBD;;AAAA,2CAuBgB,CAACC,KAAD,EAAgBC,EAAhB,KAA+B;AAC7C,UAAIA,EAAE,KAAKC,kCAAgBC,KAA3B,EAAkC;AAChC,aAAKC,YAAL,CAAkB,KAAKrB,KAAL,CAAWsB,aAA7B,EAA6C,CAA7C;AACD,OAFD,MAEO,IACLJ,EAAE,KAAKC,kCAAgBI,YAAvB,IACAL,EAAE,KAAKC,kCAAgBK,aAFlB,EAGL;AACA,aAAKH,YAAL,CAAkB,KAAKhB,+BAAL,EAAlB,EAA0D,GAA1D;AACD;AACF,KAhCD;AAAA;;AAkCAoB,EAAAA,MAAM,GAAG;AACP,UAAM;AAAExB,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGyB;AAAjB,QAA0B,KAAK1B,KAArC;AACA,wBACE,oBAAC,yBAAD,eACM0B,IADN;AAEE,MAAA,KAAK,EAAE,CACLzB,KADK,EAEL;AACEC,QAAAA,OAAO,EAAE,KAAKA,OADhB,CAC8C;;AAD9C,OAFK,CAFT;AAQE,MAAA,aAAa,EAAE,KAAKyB;AARtB,QASG,KAAK3B,KAAL,CAAW4B,QAAX,GAAsB,KAAK5B,KAAL,CAAW4B,QAAjC,gBAA4C,oBAAC,iBAAD,OAT/C,CADF;AAaD;;AAjDD;;;;gBAFmBjC,gB,kBAGG,EACpB,GAAGkC,0BAAiBC,YADA;AAEpBR,EAAAA,aAAa,EAAE;AAFK,C","sourcesContent":["import {\n Animated,\n Easing,\n StyleSheet,\n View,\n TouchableOpacityProps,\n} from 'react-native';\nimport GenericTouchable, {\n TOUCHABLE_STATE,\n GenericTouchableProps,\n} from './GenericTouchable';\nimport * as React from 'react';\nimport { Component } from 'react';\n\ninterface GHTouchableOpacityProps {\n useNativeAnimations?: boolean;\n}\n\n/**\n * TouchableOpacity bases on timing animation which has been used in RN's core\n */\nexport default class TouchableOpacity extends Component<\n TouchableOpacityProps & GenericTouchableProps & GHTouchableOpacityProps\n> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n activeOpacity: 0.2,\n };\n\n // opacity is 1 one by default but could be overwritten\n getChildStyleOpacityWithDefault = () => {\n const childStyle = StyleSheet.flatten(this.props.style) || {};\n return childStyle.opacity == null ? 1 : childStyle.opacity;\n };\n\n opacity = new Animated.Value(this.getChildStyleOpacityWithDefault());\n\n setOpacityTo = (value: number, duration: number) => {\n Animated.timing(this.opacity, {\n toValue: value,\n duration: duration,\n easing: Easing.inOut(Easing.quad),\n useNativeDriver: this.props.useNativeAnimations ?? true,\n }).start();\n };\n\n onStateChange = (_from: number, to: number) => {\n if (to === TOUCHABLE_STATE.BEGAN) {\n this.setOpacityTo(this.props.activeOpacity!, 0);\n } else if (\n to === TOUCHABLE_STATE.UNDETERMINED ||\n to === TOUCHABLE_STATE.MOVED_OUTSIDE\n ) {\n this.setOpacityTo(this.getChildStyleOpacityWithDefault(), 150);\n }\n };\n\n render() {\n const { style = {}, ...rest } = this.props;\n return (\n \n {this.props.children ? this.props.children : }\n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js new file mode 100644 index 00000000..f81a0886 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _GenericTouchable = _interopRequireDefault(require("./GenericTouchable")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +const TouchableWithoutFeedback = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(_GenericTouchable.default, _extends({ + ref: ref +}, props))); +TouchableWithoutFeedback.defaultProps = _GenericTouchable.default.defaultProps; +var _default = TouchableWithoutFeedback; +exports.default = _default; +//# sourceMappingURL=TouchableWithoutFeedback.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map new file mode 100644 index 00000000..bc21870f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableWithoutFeedback.tsx"],"names":["TouchableWithoutFeedback","React","forwardRef","props","ref","defaultProps","GenericTouchable"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;;AAEA,MAAMA,wBAAwB,gBAAGC,KAAK,CAACC,UAAN,CAG/B,CAACC,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,yBAAD;AAAkB,EAAA,GAAG,EAAEA;AAAvB,GAAgCD,KAAhC,EAHe,CAAjC;AAKAH,wBAAwB,CAACK,YAAzB,GAAwCC,0BAAiBD,YAAzD;eAEeL,wB","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nconst TouchableWithoutFeedback = React.forwardRef<\n GenericTouchable,\n PropsWithChildren\n>((props, ref) => );\n\nTouchableWithoutFeedback.defaultProps = GenericTouchable.defaultProps;\n\nexport default TouchableWithoutFeedback;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js new file mode 100644 index 00000000..7ea96ef6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "TouchableNativeFeedback", { + enumerable: true, + get: function () { + return _TouchableNativeFeedback.default; + } +}); +Object.defineProperty(exports, "TouchableWithoutFeedback", { + enumerable: true, + get: function () { + return _TouchableWithoutFeedback.default; + } +}); +Object.defineProperty(exports, "TouchableOpacity", { + enumerable: true, + get: function () { + return _TouchableOpacity.default; + } +}); +Object.defineProperty(exports, "TouchableHighlight", { + enumerable: true, + get: function () { + return _TouchableHighlight.default; + } +}); + +var _TouchableNativeFeedback = _interopRequireDefault(require("./TouchableNativeFeedback")); + +var _TouchableWithoutFeedback = _interopRequireDefault(require("./TouchableWithoutFeedback")); + +var _TouchableOpacity = _interopRequireDefault(require("./TouchableOpacity")); + +var _TouchableHighlight = _interopRequireDefault(require("./TouchableHighlight")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js.map new file mode 100644 index 00000000..215407f3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/components/touchables/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA","sourcesContent":["export { default as TouchableNativeFeedback } from './TouchableNativeFeedback';\nexport { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback';\nexport { default as TouchableOpacity } from './TouchableOpacity';\nexport { default as TouchableHighlight } from './TouchableHighlight';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js new file mode 100644 index 00000000..34888e0c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _default = (0, _codegenNativeComponent.default)('RNGestureHandlerButton'); + +exports.default = _default; +//# sourceMappingURL=RNGestureHandlerButtonNativeComponent.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map new file mode 100644 index 00000000..70bfc400 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerButtonNativeComponent.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;eAiBe,qCAAoC,wBAApC,C","sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type {\n Int32,\n WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport type { ViewProps, ColorValue } from 'react-native';\n\ninterface NativeProps extends ViewProps {\n exclusive?: WithDefault;\n foreground?: boolean;\n borderless?: boolean;\n enabled?: WithDefault;\n rippleColor?: ColorValue;\n rippleRadius?: Int32;\n touchSoundDisabled?: WithDefault;\n}\n\nexport default codegenNativeComponent('RNGestureHandlerButton');\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js new file mode 100644 index 00000000..62d7eaf2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _default = (0, _codegenNativeComponent.default)('RNGestureHandlerRootView'); + +exports.default = _default; +//# sourceMappingURL=RNGestureHandlerRootViewNativeComponent.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map new file mode 100644 index 00000000..4cbee5fd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerRootViewNativeComponent.ts"],"names":[],"mappings":";;;;;;;AAAA;;;;eAKe,qCAAoC,0BAApC,C","sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\ninterface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent('RNGestureHandlerRootView');\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js new file mode 100644 index 00000000..1252ab9e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = gestureHandlerRootHOC; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics")); + +var _GestureHandlerRootView = _interopRequireDefault(require("./GestureHandlerRootView")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function gestureHandlerRootHOC(Component, containerStyles) { + function Wrapper(props) { + return /*#__PURE__*/React.createElement(_GestureHandlerRootView.default, { + style: [styles.container, containerStyles] + }, /*#__PURE__*/React.createElement(Component, props)); + } + + Wrapper.displayName = `gestureHandlerRootHOC(${Component.displayName || Component.name})`; // @ts-ignore - hoistNonReactStatics uses old version of @types/react + + (0, _hoistNonReactStatics.default)(Wrapper, Component); + return Wrapper; +} + +const styles = _reactNative.StyleSheet.create({ + container: { + flex: 1 + } +}); +//# sourceMappingURL=gestureHandlerRootHOC.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js.map new file mode 100644 index 00000000..5fb4e713 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/gestureHandlerRootHOC.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureHandlerRootHOC.tsx"],"names":["gestureHandlerRootHOC","Component","containerStyles","Wrapper","props","styles","container","displayName","name","StyleSheet","create","flex"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEe,SAASA,qBAAT,CAGbC,SAHa,EAIbC,eAJa,EAKW;AACxB,WAASC,OAAT,CAAiBC,KAAjB,EAA2B;AACzB,wBACE,oBAAC,+BAAD;AAAwB,MAAA,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmBJ,eAAnB;AAA/B,oBACE,oBAAC,SAAD,EAAeE,KAAf,CADF,CADF;AAKD;;AAEDD,EAAAA,OAAO,CAACI,WAAR,GAAuB,yBACrBN,SAAS,CAACM,WAAV,IAAyBN,SAAS,CAACO,IACpC,GAFD,CATwB,CAaxB;;AACA,qCAAqBL,OAArB,EAA8BF,SAA9B;AAEA,SAAOE,OAAP;AACD;;AAED,MAAME,MAAM,GAAGI,wBAAWC,MAAX,CAAkB;AAC/BJ,EAAAA,SAAS,EAAE;AAAEK,IAAAA,IAAI,EAAE;AAAR;AADoB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport GestureHandlerRootView from './GestureHandlerRootView';\n\nexport default function gestureHandlerRootHOC<\n P extends JSX.IntrinsicAttributes\n>(\n Component: React.ComponentType

,\n containerStyles?: StyleProp\n): React.ComponentType

{\n function Wrapper(props: P) {\n return (\n \n \n \n );\n }\n\n Wrapper.displayName = `gestureHandlerRootHOC(${\n Component.displayName || Component.name\n })`;\n\n // @ts-ignore - hoistNonReactStatics uses old version of @types/react\n hoistNonReactStatics(Wrapper, Component);\n\n return Wrapper;\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js new file mode 100644 index 00000000..05984798 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getShadowNodeFromRef = getShadowNodeFromRef; +// Used by GestureDetector (unsupported on web at the moment) to check whether the +// attached view may get flattened on Fabric. This implementation causes errors +// on web due to the static resolution of `require` statements by webpack breaking +// the conditional importing. Solved by making .web file. +let findHostInstance_DEPRECATED; + +function getShadowNodeFromRef(ref) { + // load findHostInstance_DEPRECATED lazily because it may not be available before render + if (findHostInstance_DEPRECATED === undefined) { + try { + findHostInstance_DEPRECATED = // eslint-disable-next-line @typescript-eslint/no-var-requires + require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED; + } catch (e) { + findHostInstance_DEPRECATED = _ref => null; + } + } // @ts-ignore Fabric + + + return findHostInstance_DEPRECATED(ref)._internalInstanceHandle.stateNode.node; +} +//# sourceMappingURL=getShadowNodeFromRef.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js.map new file mode 100644 index 00000000..e6a0bd75 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["getShadowNodeFromRef.ts"],"names":["findHostInstance_DEPRECATED","getShadowNodeFromRef","ref","undefined","require","e","_ref","_internalInstanceHandle","stateNode","node"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA,IAAIA,2BAAJ;;AAEO,SAASC,oBAAT,CAA8BC,GAA9B,EAAwC;AAC7C;AACA,MAAIF,2BAA2B,KAAKG,SAApC,EAA+C;AAC7C,QAAI;AACFH,MAAAA,2BAA2B,GACzB;AACAI,MAAAA,OAAO,CAAC,mDAAD,CAAP,CAA6DJ,2BAF/D;AAGD,KAJD,CAIE,OAAOK,CAAP,EAAU;AACVL,MAAAA,2BAA2B,GAAIM,IAAD,IAAe,IAA7C;AACD;AACF,GAV4C,CAY7C;;;AACA,SAAON,2BAA2B,CAACE,GAAD,CAA3B,CAAiCK,uBAAjC,CAAyDC,SAAzD,CACJC,IADH;AAED","sourcesContent":["// Used by GestureDetector (unsupported on web at the moment) to check whether the\n// attached view may get flattened on Fabric. This implementation causes errors\n// on web due to the static resolution of `require` statements by webpack breaking\n// the conditional importing. Solved by making .web file.\nlet findHostInstance_DEPRECATED: (ref: any) => void;\n\nexport function getShadowNodeFromRef(ref: any) {\n // load findHostInstance_DEPRECATED lazily because it may not be available before render\n if (findHostInstance_DEPRECATED === undefined) {\n try {\n findHostInstance_DEPRECATED =\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED;\n } catch (e) {\n findHostInstance_DEPRECATED = (_ref: any) => null;\n }\n }\n\n // @ts-ignore Fabric\n return findHostInstance_DEPRECATED(ref)._internalInstanceHandle.stateNode\n .node;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js new file mode 100644 index 00000000..113067d0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getShadowNodeFromRef = getShadowNodeFromRef; + +// Used by GestureDetector (unsupported on web at the moment) to check whether the +// attached view may get flattened on Fabric. Original implementation causes errors +// on web due to the static resolution of `require` statements by webpack breaking +// the conditional importing. +function getShadowNodeFromRef(_ref) { + return null; +} +//# sourceMappingURL=getShadowNodeFromRef.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js.map new file mode 100644 index 00000000..a22a0db4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/getShadowNodeFromRef.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["getShadowNodeFromRef.web.ts"],"names":["getShadowNodeFromRef","_ref"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACO,SAASA,oBAAT,CAA8BC,IAA9B,EAAyC;AAC9C,SAAO,IAAP;AACD","sourcesContent":["// Used by GestureDetector (unsupported on web at the moment) to check whether the\n// attached view may get flattened on Fabric. Original implementation causes errors\n// on web due to the static resolution of `require` statements by webpack breaking\n// the conditional importing.\nexport function getShadowNodeFromRef(_ref: any) {\n return null;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js new file mode 100644 index 00000000..2d8c632c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FlingGestureHandler = exports.flingHandlerName = exports.flingGestureHandlerProps = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const flingGestureHandlerProps = ['numberOfPointers', 'direction']; +exports.flingGestureHandlerProps = flingGestureHandlerProps; +const flingHandlerName = 'FlingGestureHandler'; +exports.flingHandlerName = flingHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const FlingGestureHandler = (0, _createHandler.default)({ + name: flingHandlerName, + allowedProps: [..._gestureHandlerCommon.baseGestureHandlerProps, ...flingGestureHandlerProps], + config: {} +}); +exports.FlingGestureHandler = FlingGestureHandler; +//# sourceMappingURL=FlingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js.map new file mode 100644 index 00000000..e4a62476 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/FlingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["FlingGestureHandler.ts"],"names":["flingGestureHandlerProps","flingHandlerName","FlingGestureHandler","name","allowedProps","baseGestureHandlerProps","config"],"mappings":";;;;;;;AAAA;;AACA;;;;AAKO,MAAMA,wBAAwB,GAAG,CACtC,kBADsC,EAEtC,WAFsC,CAAjC;;AAsCA,MAAMC,gBAAgB,GAAG,qBAAzB;;AAGP;AACO,MAAMC,mBAAmB,GAAG,4BAGjC;AACAC,EAAAA,IAAI,EAAEF,gBADN;AAEAG,EAAAA,YAAY,EAAE,CACZ,GAAGC,6CADS,EAEZ,GAAGL,wBAFS,CAFd;AAMAM,EAAAA,MAAM,EAAE;AANR,CAHiC,CAA5B","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const flingGestureHandlerProps = [\n 'numberOfPointers',\n 'direction',\n] as const;\n\nexport type FlingGestureHandlerEventPayload = {\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\nexport interface FlingGestureConfig {\n /**\n * Expressed allowed direction of movement. It's possible to pass one or many\n * directions in one parameter:\n *\n * ```js\n * direction={Directions.RIGHT | Directions.LEFT}\n * ```\n *\n * or\n *\n * ```js\n * direction={Directions.DOWN}\n * ```\n */\n direction?: number;\n\n /**\n * Determine exact number of points required to handle the fling gesture.\n */\n numberOfPointers?: number;\n}\n\nexport interface FlingGestureHandlerProps\n extends BaseGestureHandlerProps,\n FlingGestureConfig {}\n\nexport const flingHandlerName = 'FlingGestureHandler';\n\nexport type FlingGestureHandler = typeof FlingGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const FlingGestureHandler = createHandler<\n FlingGestureHandlerProps,\n FlingGestureHandlerEventPayload\n>({\n name: flingHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...flingGestureHandlerProps,\n ] as const,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js new file mode 100644 index 00000000..27b92551 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js @@ -0,0 +1,49 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ForceTouchGestureHandler = exports.forceTouchHandlerName = exports.forceTouchGestureHandlerProps = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _utils = require("../utils"); + +var _PlatformConstants = _interopRequireDefault(require("../PlatformConstants")); + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const forceTouchGestureHandlerProps = ['minForce', 'maxForce', 'feedbackOnActivation']; // implicit `children` prop has been removed in @types/react^18.0.0 + +exports.forceTouchGestureHandlerProps = forceTouchGestureHandlerProps; + +class ForceTouchFallback extends _react.default.Component { + componentDidMount() { + console.warn((0, _utils.tagMessage)('ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase')); + } + + render() { + return this.props.children; + } + +} + +_defineProperty(ForceTouchFallback, "forceTouchAvailable", false); + +const forceTouchHandlerName = 'ForceTouchGestureHandler'; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file + +exports.forceTouchHandlerName = forceTouchHandlerName; +const ForceTouchGestureHandler = _PlatformConstants.default !== null && _PlatformConstants.default !== void 0 && _PlatformConstants.default.forceTouchAvailable ? (0, _createHandler.default)({ + name: forceTouchHandlerName, + allowedProps: [..._gestureHandlerCommon.baseGestureHandlerProps, ...forceTouchGestureHandlerProps], + config: {} +}) : ForceTouchFallback; +exports.ForceTouchGestureHandler = ForceTouchGestureHandler; +ForceTouchGestureHandler.forceTouchAvailable = (_PlatformConstants.default === null || _PlatformConstants.default === void 0 ? void 0 : _PlatformConstants.default.forceTouchAvailable) || false; +//# sourceMappingURL=ForceTouchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js.map new file mode 100644 index 00000000..7292e20d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/ForceTouchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ForceTouchGestureHandler.ts"],"names":["forceTouchGestureHandlerProps","ForceTouchFallback","React","Component","componentDidMount","console","warn","render","props","children","forceTouchHandlerName","ForceTouchGestureHandler","PlatformConstants","forceTouchAvailable","name","allowedProps","baseGestureHandlerProps","config"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;AAKO,MAAMA,6BAA6B,GAAG,CAC3C,UAD2C,EAE3C,UAF2C,EAG3C,sBAH2C,CAAtC,C,CAMP;;;;AACA,MAAMC,kBAAN,SAAiCC,eAAMC,SAAvC,CAA6E;AAE3EC,EAAAA,iBAAiB,GAAG;AAClBC,IAAAA,OAAO,CAACC,IAAR,CACE,uBACE,8NADF,CADF;AAKD;;AACDC,EAAAA,MAAM,GAAG;AACP,WAAO,KAAKC,KAAL,CAAWC,QAAlB;AACD;;AAX0E;;gBAAvER,kB,yBACyB,K;;AAsDxB,MAAMS,qBAAqB,GAAG,0BAA9B,C,CAEP;;;AACO,MAAMC,wBAAwB,GAAGC,2GAAmBC,mBAAnB,GACpC,4BAGE;AACAC,EAAAA,IAAI,EAAEJ,qBADN;AAEAK,EAAAA,YAAY,EAAE,CACZ,GAAGC,6CADS,EAEZ,GAAGhB,6BAFS,CAFd;AAMAiB,EAAAA,MAAM,EAAE;AANR,CAHF,CADoC,GAYpChB,kBAZG;;AAcNU,wBAAD,CAAuDE,mBAAvD,GACE,oHAAmBA,mBAAnB,KAA0C,KAD5C","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { tagMessage } from '../utils';\nimport PlatformConstants from '../PlatformConstants';\nimport createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const forceTouchGestureHandlerProps = [\n 'minForce',\n 'maxForce',\n 'feedbackOnActivation',\n] as const;\n\n// implicit `children` prop has been removed in @types/react^18.0.0\nclass ForceTouchFallback extends React.Component> {\n static forceTouchAvailable = false;\n componentDidMount() {\n console.warn(\n tagMessage(\n 'ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase'\n )\n );\n }\n render() {\n return this.props.children;\n }\n}\n\nexport type ForceTouchGestureHandlerEventPayload = {\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n\n /**\n * The pressure of a touch.\n */\n force: number;\n};\n\nexport interface ForceTouchGestureConfig {\n /**\n *\n * A minimal pressure that is required before handler can activate. Should be a\n * value from range `[0.0, 1.0]`. Default is `0.2`.\n */\n minForce?: number;\n\n /**\n * A maximal pressure that could be applied for handler. If the pressure is\n * greater, handler fails. Should be a value from range `[0.0, 1.0]`.\n */\n maxForce?: number;\n\n /**\n * Boolean value defining if haptic feedback has to be performed on\n * activation.\n */\n feedbackOnActivation?: boolean;\n}\n\nexport interface ForceTouchGestureHandlerProps\n extends BaseGestureHandlerProps,\n ForceTouchGestureConfig {}\n\nexport type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {\n forceTouchAvailable: boolean;\n};\n\nexport const forceTouchHandlerName = 'ForceTouchGestureHandler';\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const ForceTouchGestureHandler = PlatformConstants?.forceTouchAvailable\n ? createHandler<\n ForceTouchGestureHandlerProps,\n ForceTouchGestureHandlerEventPayload\n >({\n name: forceTouchHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...forceTouchGestureHandlerProps,\n ] as const,\n config: {},\n })\n : ForceTouchFallback;\n\n(ForceTouchGestureHandler as ForceTouchGestureHandler).forceTouchAvailable =\n PlatformConstants?.forceTouchAvailable || false;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js new file mode 100644 index 00000000..5d4935c3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.LongPressGestureHandler = exports.longPressHandlerName = exports.longPressGestureHandlerProps = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const longPressGestureHandlerProps = ['minDurationMs', 'maxDist']; +exports.longPressGestureHandlerProps = longPressGestureHandlerProps; +const longPressHandlerName = 'LongPressGestureHandler'; +exports.longPressHandlerName = longPressHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const LongPressGestureHandler = (0, _createHandler.default)({ + name: longPressHandlerName, + allowedProps: [..._gestureHandlerCommon.baseGestureHandlerProps, ...longPressGestureHandlerProps], + config: { + shouldCancelWhenOutside: true + } +}); +exports.LongPressGestureHandler = LongPressGestureHandler; +//# sourceMappingURL=LongPressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js.map new file mode 100644 index 00000000..c2a311e5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/LongPressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["longPressGestureHandlerProps","longPressHandlerName","LongPressGestureHandler","name","allowedProps","baseGestureHandlerProps","config","shouldCancelWhenOutside"],"mappings":";;;;;;;AAAA;;AACA;;;;AAKO,MAAMA,4BAA4B,GAAG,CAC1C,eAD0C,EAE1C,SAF0C,CAArC;;AAiEA,MAAMC,oBAAoB,GAAG,yBAA7B;;AAGP;AACO,MAAMC,uBAAuB,GAAG,4BAGrC;AACAC,EAAAA,IAAI,EAAEF,oBADN;AAEAG,EAAAA,YAAY,EAAE,CACZ,GAAGC,6CADS,EAEZ,GAAGL,4BAFS,CAFd;AAMAM,EAAAA,MAAM,EAAE;AACNC,IAAAA,uBAAuB,EAAE;AADnB;AANR,CAHqC,CAAhC","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const longPressGestureHandlerProps = [\n 'minDurationMs',\n 'maxDist',\n] as const;\n\nexport type LongPressGestureHandlerEventPayload = {\n /**\n * X coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the view attached to the handler.\n */\n x: number;\n\n /**\n * Y coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the view attached to the handler.\n */\n y: number;\n\n /**\n * X coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the window. It is recommended to use `absoluteX` instead of\n * `x` in cases when the view attached to the handler can be transformed as an\n * effect of the gesture.\n */\n absoluteX: number;\n\n /**\n * Y coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the window. It is recommended to use `absoluteY` instead of\n * `y` in cases when the view attached to the handler can be transformed as an\n * effect of the gesture.\n */\n absoluteY: number;\n\n /**\n * Duration of the long press (time since the start of the event), expressed\n * in milliseconds.\n */\n duration: number;\n};\n\nexport interface LongPressGestureConfig {\n /**\n * Minimum time, expressed in milliseconds, that a finger must remain pressed on\n * the corresponding view. The default value is 500.\n */\n minDurationMs?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel during a long press gesture. If the finger travels\n * further than the defined distance and the handler hasn't yet activated, it\n * will fail to recognize the gesture. The default value is 10.\n */\n maxDist?: number;\n}\n\nexport interface LongPressGestureHandlerProps\n extends BaseGestureHandlerProps,\n LongPressGestureConfig {}\n\nexport const longPressHandlerName = 'LongPressGestureHandler';\n\nexport type LongPressGestureHandler = typeof LongPressGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const LongPressGestureHandler = createHandler<\n LongPressGestureHandlerProps,\n LongPressGestureHandlerEventPayload\n>({\n name: longPressHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...longPressGestureHandlerProps,\n ] as const,\n config: {\n shouldCancelWhenOutside: true,\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js new file mode 100644 index 00000000..0726db7c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NativeViewGestureHandler = exports.nativeViewHandlerName = exports.nativeViewProps = exports.nativeViewGestureHandlerProps = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const nativeViewGestureHandlerProps = ['shouldActivateOnStart', 'disallowInterruption']; +exports.nativeViewGestureHandlerProps = nativeViewGestureHandlerProps; +const nativeViewProps = [..._gestureHandlerCommon.baseGestureHandlerProps, ...nativeViewGestureHandlerProps]; +exports.nativeViewProps = nativeViewProps; +const nativeViewHandlerName = 'NativeViewGestureHandler'; +exports.nativeViewHandlerName = nativeViewHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const NativeViewGestureHandler = (0, _createHandler.default)({ + name: nativeViewHandlerName, + allowedProps: nativeViewProps, + config: {} +}); +exports.NativeViewGestureHandler = NativeViewGestureHandler; +//# sourceMappingURL=NativeViewGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js.map new file mode 100644 index 00000000..22c470a2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/NativeViewGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["nativeViewGestureHandlerProps","nativeViewProps","baseGestureHandlerProps","nativeViewHandlerName","NativeViewGestureHandler","name","allowedProps","config"],"mappings":";;;;;;;AAAA;;AACA;;;;AAKO,MAAMA,6BAA6B,GAAG,CAC3C,uBAD2C,EAE3C,sBAF2C,CAAtC;;AAgCA,MAAMC,eAAe,GAAG,CAC7B,GAAGC,6CAD0B,EAE7B,GAAGF,6BAF0B,CAAxB;;AAKA,MAAMG,qBAAqB,GAAG,0BAA9B;;AAGP;AACO,MAAMC,wBAAwB,GAAG,4BAGtC;AACAC,EAAAA,IAAI,EAAEF,qBADN;AAEAG,EAAAA,YAAY,EAAEL,eAFd;AAGAM,EAAAA,MAAM,EAAE;AAHR,CAHsC,CAAjC","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const nativeViewGestureHandlerProps = [\n 'shouldActivateOnStart',\n 'disallowInterruption',\n] as const;\n\nexport interface NativeViewGestureConfig {\n /**\n * Android only.\n *\n * Determines whether the handler should check for an existing touch event on\n * instantiation.\n */\n shouldActivateOnStart?: boolean;\n\n /**\n * When `true`, cancels all other gesture handlers when this\n * `NativeViewGestureHandler` receives an `ACTIVE` state event.\n */\n disallowInterruption?: boolean;\n}\n\nexport interface NativeViewGestureHandlerProps\n extends BaseGestureHandlerProps,\n NativeViewGestureConfig {}\n\nexport type NativeViewGestureHandlerPayload = {\n /**\n * True if gesture was performed inside of containing view, false otherwise.\n */\n pointerInside: boolean;\n};\n\nexport const nativeViewProps = [\n ...baseGestureHandlerProps,\n ...nativeViewGestureHandlerProps,\n] as const;\n\nexport const nativeViewHandlerName = 'NativeViewGestureHandler';\n\nexport type NativeViewGestureHandler = typeof NativeViewGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const NativeViewGestureHandler = createHandler<\n NativeViewGestureHandlerProps,\n NativeViewGestureHandlerPayload\n>({\n name: nativeViewHandlerName,\n allowedProps: nativeViewProps,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js new file mode 100644 index 00000000..e9bf4308 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js @@ -0,0 +1,123 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.managePanProps = managePanProps; +exports.PanGestureHandler = exports.panHandlerName = exports.panGestureHandlerCustomNativeProps = exports.panGestureHandlerProps = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const panGestureHandlerProps = ['activeOffsetY', 'activeOffsetX', 'failOffsetY', 'failOffsetX', 'minDist', 'minVelocity', 'minVelocityX', 'minVelocityY', 'minPointers', 'maxPointers', 'avgTouches', 'enableTrackpadTwoFingerGesture', 'activateAfterLongPress']; +exports.panGestureHandlerProps = panGestureHandlerProps; +const panGestureHandlerCustomNativeProps = ['activeOffsetYStart', 'activeOffsetYEnd', 'activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetYStart', 'failOffsetYEnd', 'failOffsetXStart', 'failOffsetXEnd']; +exports.panGestureHandlerCustomNativeProps = panGestureHandlerCustomNativeProps; +const panHandlerName = 'PanGestureHandler'; +exports.panHandlerName = panHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const PanGestureHandler = (0, _createHandler.default)({ + name: panHandlerName, + allowedProps: [..._gestureHandlerCommon.baseGestureHandlerProps, ...panGestureHandlerProps], + config: {}, + transformProps: managePanProps, + customNativeProps: panGestureHandlerCustomNativeProps +}); +exports.PanGestureHandler = PanGestureHandler; + +function validatePanGestureHandlerProps(props) { + if (Array.isArray(props.activeOffsetX) && (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)) { + throw new Error(`First element of activeOffsetX should be negative, a the second one should be positive`); + } + + if (Array.isArray(props.activeOffsetY) && (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)) { + throw new Error(`First element of activeOffsetY should be negative, a the second one should be positive`); + } + + if (Array.isArray(props.failOffsetX) && (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)) { + throw new Error(`First element of failOffsetX should be negative, a the second one should be positive`); + } + + if (Array.isArray(props.failOffsetY) && (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)) { + throw new Error(`First element of failOffsetY should be negative, a the second one should be positive`); + } + + if (props.minDist && (props.failOffsetX || props.failOffsetY)) { + throw new Error(`It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`); + } + + if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) { + throw new Error(`It is not supported to use minDist with activeOffsetX or activeOffsetY`); + } +} + +function transformPanGestureHandlerProps(props) { + const res = { ...props + }; + + if (props.activeOffsetX !== undefined) { + delete res.activeOffsetX; + + if (Array.isArray(props.activeOffsetX)) { + res.activeOffsetXStart = props.activeOffsetX[0]; + res.activeOffsetXEnd = props.activeOffsetX[1]; + } else if (props.activeOffsetX < 0) { + res.activeOffsetXStart = props.activeOffsetX; + } else { + res.activeOffsetXEnd = props.activeOffsetX; + } + } + + if (props.activeOffsetY !== undefined) { + delete res.activeOffsetY; + + if (Array.isArray(props.activeOffsetY)) { + res.activeOffsetYStart = props.activeOffsetY[0]; + res.activeOffsetYEnd = props.activeOffsetY[1]; + } else if (props.activeOffsetY < 0) { + res.activeOffsetYStart = props.activeOffsetY; + } else { + res.activeOffsetYEnd = props.activeOffsetY; + } + } + + if (props.failOffsetX !== undefined) { + delete res.failOffsetX; + + if (Array.isArray(props.failOffsetX)) { + res.failOffsetXStart = props.failOffsetX[0]; + res.failOffsetXEnd = props.failOffsetX[1]; + } else if (props.failOffsetX < 0) { + res.failOffsetXStart = props.failOffsetX; + } else { + res.failOffsetXEnd = props.failOffsetX; + } + } + + if (props.failOffsetY !== undefined) { + delete res.failOffsetY; + + if (Array.isArray(props.failOffsetY)) { + res.failOffsetYStart = props.failOffsetY[0]; + res.failOffsetYEnd = props.failOffsetY[1]; + } else if (props.failOffsetY < 0) { + res.failOffsetYStart = props.failOffsetY; + } else { + res.failOffsetYEnd = props.failOffsetY; + } + } + + return res; +} + +function managePanProps(props) { + if (__DEV__) { + validatePanGestureHandlerProps(props); + } + + return transformPanGestureHandlerProps(props); +} +//# sourceMappingURL=PanGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js.map new file mode 100644 index 00000000..bcedb8e3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PanGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PanGestureHandler.ts"],"names":["panGestureHandlerProps","panGestureHandlerCustomNativeProps","panHandlerName","PanGestureHandler","name","allowedProps","baseGestureHandlerProps","config","transformProps","managePanProps","customNativeProps","validatePanGestureHandlerProps","props","Array","isArray","activeOffsetX","Error","activeOffsetY","failOffsetX","failOffsetY","minDist","transformPanGestureHandlerProps","res","undefined","activeOffsetXStart","activeOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetXStart","failOffsetXEnd","failOffsetYStart","failOffsetYEnd","__DEV__"],"mappings":"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","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const panGestureHandlerProps = [\n 'activeOffsetY',\n 'activeOffsetX',\n 'failOffsetY',\n 'failOffsetX',\n 'minDist',\n 'minVelocity',\n 'minVelocityX',\n 'minVelocityY',\n 'minPointers',\n 'maxPointers',\n 'avgTouches',\n 'enableTrackpadTwoFingerGesture',\n 'activateAfterLongPress',\n] as const;\n\nexport const panGestureHandlerCustomNativeProps = [\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n] as const;\n\nexport type PanGestureHandlerEventPayload = {\n /**\n * X coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the view\n * attached to the handler. Expressed in point units.\n */\n x: number;\n\n /**\n * Y coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the view\n * attached to the handler. Expressed in point units.\n */\n y: number;\n\n /**\n * X coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the window.\n * The value is expressed in point units. It is recommended to use it instead\n * of `x` in cases when the original view can be transformed as an effect of\n * the gesture.\n */\n absoluteX: number;\n\n /**\n * Y coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the window.\n * The value is expressed in point units. It is recommended to use it instead\n * of `y` in cases when the original view can be transformed as an\n * effect of the gesture.\n */\n absoluteY: number;\n\n /**\n * Translation of the pan gesture along X axis accumulated over the time of\n * the gesture. The value is expressed in the point units.\n */\n translationX: number;\n\n /**\n * Translation of the pan gesture along Y axis accumulated over the time of\n * the gesture. The value is expressed in the point units.\n */\n translationY: number;\n\n /**\n * Velocity of the pan gesture along the X axis in the current moment. The\n * value is expressed in point units per second.\n */\n velocityX: number;\n\n /**\n * Velocity of the pan gesture along the Y axis in the current moment. The\n * value is expressed in point units per second.\n */\n velocityY: number;\n};\n\ninterface CommonPanProperties {\n /**\n * Minimum distance the finger (or multiple finger) need to travel before the\n * handler activates. Expressed in points.\n */\n minDist?: number;\n\n /**\n * Android only.\n */\n avgTouches?: boolean;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * A number of fingers that is required to be placed before handler can\n * activate. Should be a higher or equal to 0 integer.\n */\n minPointers?: number;\n\n /**\n * When the given number of fingers is placed on the screen and handler hasn't\n * yet activated it will fail recognizing the gesture. Should be a higher or\n * equal to 0 integer.\n */\n maxPointers?: number;\n\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n activateAfterLongPress?: number;\n}\n\nexport interface PanGestureConfig extends CommonPanProperties {\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n failOffsetYStart?: number;\n failOffsetYEnd?: number;\n failOffsetXStart?: number;\n failOffsetXEnd?: number;\n}\n\nexport interface PanGestureHandlerProps\n extends BaseGestureHandlerProps,\n CommonPanProperties {\n /**\n * Range along X axis (in points) where fingers travels without activation of\n * handler. Moving outside of this range implies activation of handler. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n activeOffsetY?: number | number[];\n\n /**\n * Range along X axis (in points) where fingers travels without activation of\n * handler. Moving outside of this range implies activation of handler. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n activeOffsetX?: number | number[];\n\n /**\n * When the finger moves outside this range (in points) along Y axis and\n * handler hasn't yet activated it will fail recognizing the gesture. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n failOffsetY?: number | number[];\n\n /**\n * When the finger moves outside this range (in points) along X axis and\n * handler hasn't yet activated it will fail recognizing the gesture. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n failOffsetX?: number | number[];\n}\n\nexport const panHandlerName = 'PanGestureHandler';\n\nexport type PanGestureHandler = typeof PanGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const PanGestureHandler = createHandler<\n PanGestureHandlerProps,\n PanGestureHandlerEventPayload\n>({\n name: panHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...panGestureHandlerProps,\n ] as const,\n config: {},\n transformProps: managePanProps,\n customNativeProps: panGestureHandlerCustomNativeProps,\n});\n\nfunction validatePanGestureHandlerProps(props: PanGestureHandlerProps) {\n if (\n Array.isArray(props.activeOffsetX) &&\n (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)\n ) {\n throw new Error(\n `First element of activeOffsetX should be negative, a the second one should be positive`\n );\n }\n\n if (\n Array.isArray(props.activeOffsetY) &&\n (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)\n ) {\n throw new Error(\n `First element of activeOffsetY should be negative, a the second one should be positive`\n );\n }\n\n if (\n Array.isArray(props.failOffsetX) &&\n (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)\n ) {\n throw new Error(\n `First element of failOffsetX should be negative, a the second one should be positive`\n );\n }\n\n if (\n Array.isArray(props.failOffsetY) &&\n (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)\n ) {\n throw new Error(\n `First element of failOffsetY should be negative, a the second one should be positive`\n );\n }\n\n if (props.minDist && (props.failOffsetX || props.failOffsetY)) {\n throw new Error(\n `It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`\n );\n }\n\n if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) {\n throw new Error(\n `It is not supported to use minDist with activeOffsetX or activeOffsetY`\n );\n }\n}\n\nfunction transformPanGestureHandlerProps(props: PanGestureHandlerProps) {\n type InternalPanGHKeys =\n | 'activeOffsetXStart'\n | 'activeOffsetXEnd'\n | 'failOffsetXStart'\n | 'failOffsetXEnd'\n | 'activeOffsetYStart'\n | 'activeOffsetYEnd'\n | 'failOffsetYStart'\n | 'failOffsetYEnd';\n type PanGestureHandlerInternalProps = PanGestureHandlerProps &\n Partial>;\n\n const res: PanGestureHandlerInternalProps = { ...props };\n\n if (props.activeOffsetX !== undefined) {\n delete res.activeOffsetX;\n if (Array.isArray(props.activeOffsetX)) {\n res.activeOffsetXStart = props.activeOffsetX[0];\n res.activeOffsetXEnd = props.activeOffsetX[1];\n } else if (props.activeOffsetX < 0) {\n res.activeOffsetXStart = props.activeOffsetX;\n } else {\n res.activeOffsetXEnd = props.activeOffsetX;\n }\n }\n\n if (props.activeOffsetY !== undefined) {\n delete res.activeOffsetY;\n if (Array.isArray(props.activeOffsetY)) {\n res.activeOffsetYStart = props.activeOffsetY[0];\n res.activeOffsetYEnd = props.activeOffsetY[1];\n } else if (props.activeOffsetY < 0) {\n res.activeOffsetYStart = props.activeOffsetY;\n } else {\n res.activeOffsetYEnd = props.activeOffsetY;\n }\n }\n\n if (props.failOffsetX !== undefined) {\n delete res.failOffsetX;\n if (Array.isArray(props.failOffsetX)) {\n res.failOffsetXStart = props.failOffsetX[0];\n res.failOffsetXEnd = props.failOffsetX[1];\n } else if (props.failOffsetX < 0) {\n res.failOffsetXStart = props.failOffsetX;\n } else {\n res.failOffsetXEnd = props.failOffsetX;\n }\n }\n\n if (props.failOffsetY !== undefined) {\n delete res.failOffsetY;\n if (Array.isArray(props.failOffsetY)) {\n res.failOffsetYStart = props.failOffsetY[0];\n res.failOffsetYEnd = props.failOffsetY[1];\n } else if (props.failOffsetY < 0) {\n res.failOffsetYStart = props.failOffsetY;\n } else {\n res.failOffsetYEnd = props.failOffsetY;\n }\n }\n\n return res;\n}\n\nexport function managePanProps(props: PanGestureHandlerProps) {\n if (__DEV__) {\n validatePanGestureHandlerProps(props);\n }\n return transformPanGestureHandlerProps(props);\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js new file mode 100644 index 00000000..41f06cf4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PinchGestureHandler = exports.pinchHandlerName = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const pinchHandlerName = 'PinchGestureHandler'; +exports.pinchHandlerName = pinchHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const PinchGestureHandler = (0, _createHandler.default)({ + name: pinchHandlerName, + allowedProps: _gestureHandlerCommon.baseGestureHandlerProps, + config: {} +}); +exports.PinchGestureHandler = PinchGestureHandler; +//# sourceMappingURL=PinchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js.map new file mode 100644 index 00000000..e4ae64de --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PinchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PinchGestureHandler.ts"],"names":["pinchHandlerName","PinchGestureHandler","name","allowedProps","baseGestureHandlerProps","config"],"mappings":";;;;;;;AAAA;;AACA;;;;AAmCO,MAAMA,gBAAgB,GAAG,qBAAzB;;AAGP;AACO,MAAMC,mBAAmB,GAAG,4BAGjC;AACAC,EAAAA,IAAI,EAAEF,gBADN;AAEAG,EAAAA,YAAY,EAAEC,6CAFd;AAGAC,EAAAA,MAAM,EAAE;AAHR,CAHiC,CAA5B","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport type PinchGestureHandlerEventPayload = {\n /**\n * The scale factor relative to the points of the two touches in screen\n * coordinates.\n */\n scale: number;\n\n /**\n * Position expressed in points along X axis of center anchor point of\n * gesture.\n */\n focalX: number;\n\n /**\n * Position expressed in points along Y axis of center anchor point of\n * gesture.\n */\n focalY: number;\n\n /**\n *\n * Velocity of the pan gesture the current moment. The value is expressed in\n * point units per second.\n */\n velocity: number;\n};\n\nexport interface PinchGestureHandlerProps\n extends BaseGestureHandlerProps {}\n\nexport const pinchHandlerName = 'PinchGestureHandler';\n\nexport type PinchGestureHandler = typeof PinchGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const PinchGestureHandler = createHandler<\n PinchGestureHandlerProps,\n PinchGestureHandlerEventPayload\n>({\n name: pinchHandlerName,\n allowedProps: baseGestureHandlerProps,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js new file mode 100644 index 00000000..dfb9dcce --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "PressabilityDebugView", { + enumerable: true, + get: function () { + return _PressabilityDebug.PressabilityDebugView; + } +}); + +var _PressabilityDebug = require("react-native/Libraries/Pressability/PressabilityDebug"); +//# sourceMappingURL=PressabilityDebugView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js.map new file mode 100644 index 00000000..6c331e73 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PressabilityDebugView.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA","sourcesContent":["// @ts-ignore it's not exported so we need to import it from path\nexport { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js new file mode 100644 index 00000000..bc4c96a9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PressabilityDebugView = PressabilityDebugView; + +// PressabilityDebugView is not implemented in react-native-web +function PressabilityDebugView() { + return null; +} +//# sourceMappingURL=PressabilityDebugView.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js.map new file mode 100644 index 00000000..9a5b80bd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/PressabilityDebugView.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PressabilityDebugView.web.tsx"],"names":["PressabilityDebugView"],"mappings":";;;;;;;AAAA;AACO,SAASA,qBAAT,GAAiC;AACtC,SAAO,IAAP;AACD","sourcesContent":["// PressabilityDebugView is not implemented in react-native-web\nexport function PressabilityDebugView() {\n return null;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js new file mode 100644 index 00000000..dbf6e01c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RotationGestureHandler = exports.rotationHandlerName = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rotationHandlerName = 'RotationGestureHandler'; +exports.rotationHandlerName = rotationHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const RotationGestureHandler = (0, _createHandler.default)({ + name: rotationHandlerName, + allowedProps: _gestureHandlerCommon.baseGestureHandlerProps, + config: {} +}); +exports.RotationGestureHandler = RotationGestureHandler; +//# sourceMappingURL=RotationGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js.map new file mode 100644 index 00000000..57a8a2c2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/RotationGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureHandler.ts"],"names":["rotationHandlerName","RotationGestureHandler","name","allowedProps","baseGestureHandlerProps","config"],"mappings":";;;;;;;AAAA;;AACA;;;;AAmCO,MAAMA,mBAAmB,GAAG,wBAA5B;;AAGP;AACO,MAAMC,sBAAsB,GAAG,4BAGpC;AACAC,EAAAA,IAAI,EAAEF,mBADN;AAEAG,EAAAA,YAAY,EAAEC,6CAFd;AAGAC,EAAAA,MAAM,EAAE;AAHR,CAHoC,CAA/B","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport type RotationGestureHandlerEventPayload = {\n /**\n * Amount rotated, expressed in radians, from the gesture's focal point\n * (anchor).\n */\n rotation: number;\n\n /**\n * X coordinate, expressed in points, of the gesture's central focal point\n * (anchor).\n */\n anchorX: number;\n\n /**\n * Y coordinate, expressed in points, of the gesture's central focal point\n * (anchor).\n */\n anchorY: number;\n\n /**\n *\n * Instantaneous velocity, expressed in point units per second, of the\n * gesture.\n */\n velocity: number;\n};\n\nexport interface RotationGestureHandlerProps\n extends BaseGestureHandlerProps {}\n\nexport const rotationHandlerName = 'RotationGestureHandler';\n\nexport type RotationGestureHandler = typeof RotationGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const RotationGestureHandler = createHandler<\n RotationGestureHandlerProps,\n RotationGestureHandlerEventPayload\n>({\n name: rotationHandlerName,\n allowedProps: baseGestureHandlerProps,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js new file mode 100644 index 00000000..04094374 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TapGestureHandler = exports.tapHandlerName = exports.tapGestureHandlerProps = void 0; + +var _createHandler = _interopRequireDefault(require("./createHandler")); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const tapGestureHandlerProps = ['maxDurationMs', 'maxDelayMs', 'numberOfTaps', 'maxDeltaX', 'maxDeltaY', 'maxDist', 'minPointers']; +exports.tapGestureHandlerProps = tapGestureHandlerProps; +const tapHandlerName = 'TapGestureHandler'; +exports.tapHandlerName = tapHandlerName; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +const TapGestureHandler = (0, _createHandler.default)({ + name: tapHandlerName, + allowedProps: [..._gestureHandlerCommon.baseGestureHandlerProps, ...tapGestureHandlerProps], + config: { + shouldCancelWhenOutside: true + } +}); +exports.TapGestureHandler = TapGestureHandler; +//# sourceMappingURL=TapGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js.map new file mode 100644 index 00000000..791479e4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/TapGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TapGestureHandler.ts"],"names":["tapGestureHandlerProps","tapHandlerName","TapGestureHandler","name","allowedProps","baseGestureHandlerProps","config","shouldCancelWhenOutside"],"mappings":";;;;;;;AAAA;;AACA;;;;AAKO,MAAMA,sBAAsB,GAAG,CACpC,eADoC,EAEpC,YAFoC,EAGpC,cAHoC,EAIpC,WAJoC,EAKpC,WALoC,EAMpC,SANoC,EAOpC,aAPoC,CAA/B;;AAuEA,MAAMC,cAAc,GAAG,mBAAvB;;AAGP;AACO,MAAMC,iBAAiB,GAAG,4BAG/B;AACAC,EAAAA,IAAI,EAAEF,cADN;AAEAG,EAAAA,YAAY,EAAE,CACZ,GAAGC,6CADS,EAEZ,GAAGL,sBAFS,CAFd;AAMAM,EAAAA,MAAM,EAAE;AACNC,IAAAA,uBAAuB,EAAE;AADnB;AANR,CAH+B,CAA1B","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const tapGestureHandlerProps = [\n 'maxDurationMs',\n 'maxDelayMs',\n 'numberOfTaps',\n 'maxDeltaX',\n 'maxDeltaY',\n 'maxDist',\n 'minPointers',\n] as const;\n\nexport type TapGestureHandlerEventPayload = {\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\nexport interface TapGestureConfig {\n /**\n * Minimum number of pointers (fingers) required to be placed before the\n * handler activates. Should be a positive integer.\n * The default value is 1.\n */\n minPointers?: number;\n\n /**\n * Maximum time, expressed in milliseconds, that defines how fast a finger\n * must be released after a touch. The default value is 500.\n */\n maxDurationMs?: number;\n\n /**\n * Maximum time, expressed in milliseconds, that can pass before the next tap\n * if many taps are required. The default value is 500.\n */\n maxDelayMs?: number;\n\n /**\n * Number of tap gestures required to activate the handler. The default value\n * is 1.\n */\n numberOfTaps?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel along the X axis during a tap gesture. If the finger\n * travels further than the defined distance along the X axis and the handler\n * hasn't yet activated, it will fail to recognize the gesture.\n */\n maxDeltaX?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel along the Y axis during a tap gesture. If the finger\n * travels further than the defined distance along the Y axis and the handler\n * hasn't yet activated, it will fail to recognize the gesture.\n */\n maxDeltaY?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel during a tap gesture. If the finger travels further than\n * the defined distance and the handler hasn't yet\n * activated, it will fail to recognize the gesture.\n */\n maxDist?: number;\n}\n\nexport interface TapGestureHandlerProps\n extends BaseGestureHandlerProps,\n TapGestureConfig {}\n\nexport const tapHandlerName = 'TapGestureHandler';\n\nexport type TapGestureHandler = typeof TapGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const TapGestureHandler = createHandler<\n TapGestureHandlerProps,\n TapGestureHandlerEventPayload\n>({\n name: tapHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...tapGestureHandlerProps,\n ] as const,\n config: {\n shouldCancelWhenOutside: true,\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js new file mode 100644 index 00000000..07455e9b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js @@ -0,0 +1,454 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createHandler; + +var React = _interopRequireWildcard(require("react")); + +var _reactNative = require("react-native"); + +var _isEqual = _interopRequireDefault(require("lodash/isEqual")); + +var _RNGestureHandlerModule = _interopRequireDefault(require("../RNGestureHandlerModule")); + +var _State = require("../State"); + +var _handlersRegistry = require("./handlersRegistry"); + +var _gestureHandlerCommon = require("./gestureHandlerCommon"); + +var _utils = require("../utils"); + +var _ActionType = require("../ActionType"); + +var _PressabilityDebugView = require("./PressabilityDebugView"); + +var _UIManagerAny$getView, _UIManagerAny$getView2, _UIManagerAny$getCons; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const UIManagerAny = _reactNative.UIManager; +const customGHEventsConfigFabricAndroid = { + topOnGestureHandlerEvent: { + registrationName: 'onGestureHandlerEvent' + }, + topOnGestureHandlerStateChange: { + registrationName: 'onGestureHandlerStateChange' + } +}; +const customGHEventsConfig = { + onGestureHandlerEvent: { + registrationName: 'onGestureHandlerEvent' + }, + onGestureHandlerStateChange: { + registrationName: 'onGestureHandlerStateChange' + }, + // When using React Native Gesture Handler for Animated.event with useNativeDriver: true + // on Android with Fabric enabled, the native part still sends the native events to JS + // but prefixed with "top". We cannot simply rename the events above so they are prefixed + // with "top" instead of "on" because in such case Animated.events would not be registered. + // That's why we need to register another pair of event names. + // The incoming events will be queued but never handled. + // Without this piece of code below, you'll get the following JS error: + // Unsupported top level event type "topOnGestureHandlerEvent" dispatched + ...((0, _utils.isFabric)() && _reactNative.Platform.OS === 'android' && customGHEventsConfigFabricAndroid) +}; // Add gesture specific events to genericDirectEventTypes object exported from UIManager +// native module. +// Once new event types are registered with react it is possible to dispatch these +// events to all kind of native views. + +UIManagerAny.genericDirectEventTypes = { ...UIManagerAny.genericDirectEventTypes, + ...customGHEventsConfig +}; // In newer versions of RN the `genericDirectEventTypes` is located in the object +// returned by UIManager.getViewManagerConfig('getConstants') or in older RN UIManager.getConstants(), we need to add it there as well to make +// it compatible with RN 61+ + +const UIManagerConstants = (_UIManagerAny$getView = (_UIManagerAny$getView2 = UIManagerAny.getViewManagerConfig) === null || _UIManagerAny$getView2 === void 0 ? void 0 : _UIManagerAny$getView2.call(UIManagerAny, 'getConstants')) !== null && _UIManagerAny$getView !== void 0 ? _UIManagerAny$getView : (_UIManagerAny$getCons = UIManagerAny.getConstants) === null || _UIManagerAny$getCons === void 0 ? void 0 : _UIManagerAny$getCons.call(UIManagerAny); + +if (UIManagerConstants) { + UIManagerConstants.genericDirectEventTypes = { ...UIManagerConstants.genericDirectEventTypes, + ...customGHEventsConfig + }; +} // Wrap JS responder calls and notify gesture handler manager + + +const { + setJSResponder: oldSetJSResponder = () => {//no operation + }, + clearJSResponder: oldClearJSResponder = () => {//no operation + } +} = UIManagerAny; + +UIManagerAny.setJSResponder = (tag, blockNativeResponder) => { + _RNGestureHandlerModule.default.handleSetJSResponder(tag, blockNativeResponder); + + oldSetJSResponder(tag, blockNativeResponder); +}; + +UIManagerAny.clearJSResponder = () => { + _RNGestureHandlerModule.default.handleClearJSResponder(); + + oldClearJSResponder(); +}; + +let allowTouches = true; +const DEV_ON_ANDROID = __DEV__ && _reactNative.Platform.OS === 'android'; // Toggled inspector blocks touch events in order to allow inspecting on Android +// This needs to be a global variable in order to set initial state for `allowTouches` property in Handler component + +if (DEV_ON_ANDROID) { + _reactNative.DeviceEventEmitter.addListener('toggleElementInspector', () => { + allowTouches = !allowTouches; + }); +} + +function hasUnresolvedRefs(props) { + // TODO(TS) - add type for extract arg + const extract = refs => { + if (!Array.isArray(refs)) { + return refs && refs.current === null; + } + + return refs.some(r => r && r.current === null); + }; + + return extract(props['simultaneousHandlers']) || extract(props['waitFor']); +} + +const stateToPropMappings = { + [_State.State.UNDETERMINED]: undefined, + [_State.State.BEGAN]: 'onBegan', + [_State.State.FAILED]: 'onFailed', + [_State.State.CANCELLED]: 'onCancelled', + [_State.State.ACTIVE]: 'onActivated', + [_State.State.END]: 'onEnded' +}; +const UNRESOLVED_REFS_RETRY_LIMIT = 1; // TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties. + +function createHandler({ + name, + allowedProps = [], + config = {}, + transformProps, + customNativeProps = [] +}) { + class Handler extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "handlerTag", void 0); + + _defineProperty(this, "config", void 0); + + _defineProperty(this, "propsRef", void 0); + + _defineProperty(this, "viewNode", void 0); + + _defineProperty(this, "viewTag", void 0); + + _defineProperty(this, "updateEnqueued", null); + + _defineProperty(this, "inspectorToggleListener", void 0); + + _defineProperty(this, "onGestureHandlerEvent", event => { + if (event.nativeEvent.handlerTag === this.handlerTag) { + if (typeof this.props.onGestureEvent === 'function') { + var _this$props$onGesture, _this$props; + + (_this$props$onGesture = (_this$props = this.props).onGestureEvent) === null || _this$props$onGesture === void 0 ? void 0 : _this$props$onGesture.call(_this$props, event); + } + } else { + var _this$props$onGesture2, _this$props2; + + (_this$props$onGesture2 = (_this$props2 = this.props).onGestureHandlerEvent) === null || _this$props$onGesture2 === void 0 ? void 0 : _this$props$onGesture2.call(_this$props2, event); + } + }); + + _defineProperty(this, "onGestureHandlerStateChange", event => { + if (event.nativeEvent.handlerTag === this.handlerTag) { + if (typeof this.props.onHandlerStateChange === 'function') { + var _this$props$onHandler, _this$props3; + + (_this$props$onHandler = (_this$props3 = this.props).onHandlerStateChange) === null || _this$props$onHandler === void 0 ? void 0 : _this$props$onHandler.call(_this$props3, event); + } + + const state = event.nativeEvent.state; + const stateEventName = stateToPropMappings[state]; + const eventHandler = stateEventName && this.props[stateEventName]; + + if (eventHandler && typeof eventHandler === 'function') { + eventHandler(event); + } + } else { + var _this$props$onGesture3, _this$props4; + + (_this$props$onGesture3 = (_this$props4 = this.props).onGestureHandlerStateChange) === null || _this$props$onGesture3 === void 0 ? void 0 : _this$props$onGesture3.call(_this$props4, event); + } + }); + + _defineProperty(this, "refHandler", node => { + this.viewNode = node; + const child = React.Children.only(this.props.children); // TODO(TS) fix ref type + + const { + ref + } = child; + + if (ref !== null) { + if (typeof ref === 'function') { + ref(node); + } else { + ref.current = node; + } + } + }); + + _defineProperty(this, "createGestureHandler", newConfig => { + this.config = newConfig; + + _RNGestureHandlerModule.default.createGestureHandler(name, this.handlerTag, newConfig); + }); + + _defineProperty(this, "attachGestureHandler", newViewTag => { + this.viewTag = newViewTag; + + if (_reactNative.Platform.OS === 'web') { + // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch + _RNGestureHandlerModule.default.attachGestureHandler(this.handlerTag, newViewTag, _ActionType.ActionType.JS_FUNCTION_OLD_API, // ignored on web + this.propsRef); + } else { + (0, _handlersRegistry.registerOldGestureHandler)(this.handlerTag, { + onGestureEvent: this.onGestureHandlerEvent, + onGestureStateChange: this.onGestureHandlerStateChange + }); + + const actionType = (() => { + var _this$props5, _this$props6; + + if ((_this$props5 = this.props) !== null && _this$props5 !== void 0 && _this$props5.onGestureEvent && 'current' in this.props.onGestureEvent) { + // Reanimated worklet + return _ActionType.ActionType.REANIMATED_WORKLET; + } else if ((_this$props6 = this.props) !== null && _this$props6 !== void 0 && _this$props6.onGestureEvent && '__isNative' in this.props.onGestureEvent) { + // Animated.event with useNativeDriver: true + return _ActionType.ActionType.NATIVE_ANIMATED_EVENT; + } else { + // JS callback or Animated.event with useNativeDriver: false + return _ActionType.ActionType.JS_FUNCTION_OLD_API; + } + })(); + + _RNGestureHandlerModule.default.attachGestureHandler(this.handlerTag, newViewTag, actionType); + } + + (0, _gestureHandlerCommon.scheduleFlushOperations)(); + }); + + _defineProperty(this, "updateGestureHandler", newConfig => { + this.config = newConfig; + + _RNGestureHandlerModule.default.updateGestureHandler(this.handlerTag, newConfig); + + (0, _gestureHandlerCommon.scheduleFlushOperations)(); + }); + + this.handlerTag = (0, _handlersRegistry.getNextHandlerTag)(); + this.config = {}; + this.propsRef = /*#__PURE__*/React.createRef(); + this.state = { + allowTouches + }; + + if (props.id) { + if (_handlersRegistry.handlerIDToTag[props.id] !== undefined) { + throw new Error(`Handler with ID "${props.id}" already registered`); + } + + _handlersRegistry.handlerIDToTag[props.id] = this.handlerTag; + } + } + + componentDidMount() { + const props = this.props; + + if (DEV_ON_ANDROID) { + this.inspectorToggleListener = _reactNative.DeviceEventEmitter.addListener('toggleElementInspector', () => { + this.setState(_ => ({ + allowTouches + })); + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + }); + } + + if (hasUnresolvedRefs(props)) { + // If there are unresolved refs (e.g. ".current" has not yet been set) + // passed as `simultaneousHandlers` or `waitFor`, we enqueue a call to + // _update method that will try to update native handler props using + // setImmediate. This makes it so update() function gets called after all + // react components are mounted and we expect the missing ref object to + // be resolved by then. + this.updateEnqueued = setImmediate(() => { + this.updateEnqueued = null; + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + }); + } + + this.createGestureHandler((0, _gestureHandlerCommon.filterConfig)(transformProps ? transformProps(this.props) : this.props, [...allowedProps, ...customNativeProps], config)); + this.attachGestureHandler((0, _gestureHandlerCommon.findNodeHandle)(this.viewNode)); // TODO(TS) - check if this can be null + } + + componentDidUpdate() { + const viewTag = (0, _gestureHandlerCommon.findNodeHandle)(this.viewNode); + + if (this.viewTag !== viewTag) { + this.attachGestureHandler(viewTag); // TODO(TS) - check interaction between _viewTag & findNodeHandle + } + + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + } + + componentWillUnmount() { + var _this$inspectorToggle; + + (_this$inspectorToggle = this.inspectorToggleListener) === null || _this$inspectorToggle === void 0 ? void 0 : _this$inspectorToggle.remove(); + + _RNGestureHandlerModule.default.dropGestureHandler(this.handlerTag); + + (0, _gestureHandlerCommon.scheduleFlushOperations)(); + + if (this.updateEnqueued) { + clearImmediate(this.updateEnqueued); + } // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context + + + const handlerID = this.props.id; + + if (handlerID) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete _handlersRegistry.handlerIDToTag[handlerID]; + } + } + + update(remainingTries) { + const props = this.props; // When ref is set via a function i.e. `ref={(r) => refObject.current = r}` instead of + // `ref={refObject}` it's possible that it won't be resolved in time. Seems like trying + // again is easy enough fix. + + if (hasUnresolvedRefs(props) && remainingTries > 0) { + this.updateEnqueued = setImmediate(() => { + this.updateEnqueued = null; + this.update(remainingTries - 1); + }); + } else { + const newConfig = (0, _gestureHandlerCommon.filterConfig)(transformProps ? transformProps(this.props) : this.props, [...allowedProps, ...customNativeProps], config); + + if (!(0, _isEqual.default)(this.config, newConfig)) { + this.updateGestureHandler(newConfig); + } + } + } + + setNativeProps(updates) { + const mergedProps = { ...this.props, + ...updates + }; + const newConfig = (0, _gestureHandlerCommon.filterConfig)(transformProps ? transformProps(mergedProps) : mergedProps, [...allowedProps, ...customNativeProps], config); + this.updateGestureHandler(newConfig); + } + + render() { + var _this$props$testID; + + let gestureEventHandler = this.onGestureHandlerEvent; // Another instance of https://github.com/microsoft/TypeScript/issues/13995 + + const { + onGestureEvent, + onGestureHandlerEvent + } = this.props; + + if (onGestureEvent && typeof onGestureEvent !== 'function') { + // If it's not a method it should be an native Animated.event + // object. We set it directly as the handler for the view + // In this case nested handlers are not going to be supported + if (onGestureHandlerEvent) { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + + gestureEventHandler = onGestureEvent; + } else { + if (onGestureHandlerEvent && typeof onGestureHandlerEvent !== 'function') { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + } + + let gestureStateEventHandler = this.onGestureHandlerStateChange; // Another instance of https://github.com/microsoft/TypeScript/issues/13995 + + const { + onHandlerStateChange, + onGestureHandlerStateChange + } = this.props; + + if (onHandlerStateChange && typeof onHandlerStateChange !== 'function') { + // If it's not a method it should be an native Animated.event + // object. We set it directly as the handler for the view + // In this case nested handlers are not going to be supported + if (onGestureHandlerStateChange) { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + + gestureStateEventHandler = onHandlerStateChange; + } else { + if (onGestureHandlerStateChange && typeof onGestureHandlerStateChange !== 'function') { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + } + + const events = { + onGestureHandlerEvent: this.state.allowTouches ? gestureEventHandler : undefined, + onGestureHandlerStateChange: this.state.allowTouches ? gestureStateEventHandler : undefined + }; + this.propsRef.current = events; + let child = null; + + try { + child = React.Children.only(this.props.children); + } catch (e) { + throw new Error((0, _utils.tagMessage)(`${name} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`)); + } + + let grandChildren = child.props.children; + + if (__DEV__ && child.type && (child.type === 'RNGestureHandlerButton' || child.type.name === 'View' || child.type.displayName === 'View')) { + grandChildren = React.Children.toArray(grandChildren); + grandChildren.push( /*#__PURE__*/React.createElement(_PressabilityDebugView.PressabilityDebugView, { + key: "pressabilityDebugView", + color: "mediumspringgreen", + hitSlop: child.props.hitSlop + })); + } + + return /*#__PURE__*/React.cloneElement(child, { + ref: this.refHandler, + collapsable: false, + ...((0, _utils.isJestEnv)() ? { + handlerType: name, + handlerTag: this.handlerTag + } : {}), + testID: (_this$props$testID = this.props.testID) !== null && _this$props$testID !== void 0 ? _this$props$testID : child.props.testID, + ...events + }, grandChildren); + } + + } + + _defineProperty(Handler, "displayName", name); + + return Handler; +} +//# sourceMappingURL=createHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js.map new file mode 100644 index 00000000..b2635c65 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["createHandler.tsx"],"names":["UIManagerAny","UIManager","customGHEventsConfigFabricAndroid","topOnGestureHandlerEvent","registrationName","topOnGestureHandlerStateChange","customGHEventsConfig","onGestureHandlerEvent","onGestureHandlerStateChange","Platform","OS","genericDirectEventTypes","UIManagerConstants","getViewManagerConfig","getConstants","setJSResponder","oldSetJSResponder","clearJSResponder","oldClearJSResponder","tag","blockNativeResponder","RNGestureHandlerModule","handleSetJSResponder","handleClearJSResponder","allowTouches","DEV_ON_ANDROID","__DEV__","DeviceEventEmitter","addListener","hasUnresolvedRefs","props","extract","refs","Array","isArray","current","some","r","stateToPropMappings","State","UNDETERMINED","undefined","BEGAN","FAILED","CANCELLED","ACTIVE","END","UNRESOLVED_REFS_RETRY_LIMIT","createHandler","name","allowedProps","config","transformProps","customNativeProps","Handler","React","Component","constructor","event","nativeEvent","handlerTag","onGestureEvent","onHandlerStateChange","state","stateEventName","eventHandler","node","viewNode","child","Children","only","children","ref","newConfig","createGestureHandler","newViewTag","viewTag","attachGestureHandler","ActionType","JS_FUNCTION_OLD_API","propsRef","onGestureStateChange","actionType","REANIMATED_WORKLET","NATIVE_ANIMATED_EVENT","updateGestureHandler","createRef","id","handlerIDToTag","Error","componentDidMount","inspectorToggleListener","setState","_","update","updateEnqueued","setImmediate","componentDidUpdate","componentWillUnmount","remove","dropGestureHandler","clearImmediate","handlerID","remainingTries","setNativeProps","updates","mergedProps","render","gestureEventHandler","gestureStateEventHandler","events","e","grandChildren","type","displayName","toArray","push","hitSlop","cloneElement","refHandler","collapsable","handlerType","testID"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n UIManager,\n DeviceEventEmitter,\n EmitterSubscription,\n} from 'react-native';\n// @ts-ignore - it isn't typed by TS & don't have definitelyTyped types\nimport deepEqual from 'lodash/isEqual';\nimport RNGestureHandlerModule from '../RNGestureHandlerModule';\nimport type RNGestureHandlerModuleWeb from '../RNGestureHandlerModule.web';\nimport { State } from '../State';\nimport {\n handlerIDToTag,\n getNextHandlerTag,\n registerOldGestureHandler,\n} from './handlersRegistry';\n\nimport {\n BaseGestureHandlerProps,\n filterConfig,\n GestureEvent,\n HandlerStateChangeEvent,\n findNodeHandle,\n scheduleFlushOperations,\n} from './gestureHandlerCommon';\nimport { ValueOf } from '../typeUtils';\nimport { isFabric, isJestEnv, tagMessage } from '../utils';\nimport { ActionType } from '../ActionType';\nimport { PressabilityDebugView } from './PressabilityDebugView';\n\nconst UIManagerAny = UIManager as any;\n\nconst customGHEventsConfigFabricAndroid = {\n topOnGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' },\n topOnGestureHandlerStateChange: {\n registrationName: 'onGestureHandlerStateChange',\n },\n};\n\nconst customGHEventsConfig = {\n onGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' },\n onGestureHandlerStateChange: {\n registrationName: 'onGestureHandlerStateChange',\n },\n\n // When using React Native Gesture Handler for Animated.event with useNativeDriver: true\n // on Android with Fabric enabled, the native part still sends the native events to JS\n // but prefixed with \"top\". We cannot simply rename the events above so they are prefixed\n // with \"top\" instead of \"on\" because in such case Animated.events would not be registered.\n // That's why we need to register another pair of event names.\n // The incoming events will be queued but never handled.\n // Without this piece of code below, you'll get the following JS error:\n // Unsupported top level event type \"topOnGestureHandlerEvent\" dispatched\n ...(isFabric() &&\n Platform.OS === 'android' &&\n customGHEventsConfigFabricAndroid),\n};\n\n// Add gesture specific events to genericDirectEventTypes object exported from UIManager\n// native module.\n// Once new event types are registered with react it is possible to dispatch these\n// events to all kind of native views.\nUIManagerAny.genericDirectEventTypes = {\n ...UIManagerAny.genericDirectEventTypes,\n ...customGHEventsConfig,\n};\n// In newer versions of RN the `genericDirectEventTypes` is located in the object\n// returned by UIManager.getViewManagerConfig('getConstants') or in older RN UIManager.getConstants(), we need to add it there as well to make\n// it compatible with RN 61+\nconst UIManagerConstants =\n UIManagerAny.getViewManagerConfig?.('getConstants') ??\n UIManagerAny.getConstants?.();\n\nif (UIManagerConstants) {\n UIManagerConstants.genericDirectEventTypes = {\n ...UIManagerConstants.genericDirectEventTypes,\n ...customGHEventsConfig,\n };\n}\n\n// Wrap JS responder calls and notify gesture handler manager\nconst {\n setJSResponder: oldSetJSResponder = () => {\n //no operation\n },\n clearJSResponder: oldClearJSResponder = () => {\n //no operation\n },\n} = UIManagerAny;\nUIManagerAny.setJSResponder = (tag: number, blockNativeResponder: boolean) => {\n RNGestureHandlerModule.handleSetJSResponder(tag, blockNativeResponder);\n oldSetJSResponder(tag, blockNativeResponder);\n};\nUIManagerAny.clearJSResponder = () => {\n RNGestureHandlerModule.handleClearJSResponder();\n oldClearJSResponder();\n};\n\nlet allowTouches = true;\nconst DEV_ON_ANDROID = __DEV__ && Platform.OS === 'android';\n// Toggled inspector blocks touch events in order to allow inspecting on Android\n// This needs to be a global variable in order to set initial state for `allowTouches` property in Handler component\nif (DEV_ON_ANDROID) {\n DeviceEventEmitter.addListener('toggleElementInspector', () => {\n allowTouches = !allowTouches;\n });\n}\n\ntype HandlerProps> = Readonly<\n React.PropsWithChildren>\n>;\nfunction hasUnresolvedRefs>(\n props: HandlerProps\n) {\n // TODO(TS) - add type for extract arg\n const extract = (refs: any | any[]) => {\n if (!Array.isArray(refs)) {\n return refs && refs.current === null;\n }\n return refs.some((r) => r && r.current === null);\n };\n return extract(props['simultaneousHandlers']) || extract(props['waitFor']);\n}\n\nconst stateToPropMappings = {\n [State.UNDETERMINED]: undefined,\n [State.BEGAN]: 'onBegan',\n [State.FAILED]: 'onFailed',\n [State.CANCELLED]: 'onCancelled',\n [State.ACTIVE]: 'onActivated',\n [State.END]: 'onEnded',\n} as const;\n\ntype CreateHandlerArgs> =\n Readonly<{\n name: string;\n allowedProps: Readonly[]>;\n config: Readonly>;\n transformProps?: (props: HandlerPropsT) => HandlerPropsT;\n customNativeProps?: Readonly;\n }>;\n\n// TODO(TS) fix event types\ntype InternalEventHandlers = {\n onGestureHandlerEvent?: (event: any) => void;\n onGestureHandlerStateChange?: (event: any) => void;\n};\n\nconst UNRESOLVED_REFS_RETRY_LIMIT = 1;\n\n// TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties.\nexport default function createHandler<\n T extends BaseGestureHandlerProps,\n U extends Record\n>({\n name,\n allowedProps = [],\n config = {},\n transformProps,\n customNativeProps = [],\n}: CreateHandlerArgs): React.ComponentType> {\n interface HandlerState {\n allowTouches: boolean;\n }\n class Handler extends React.Component<\n T & InternalEventHandlers,\n HandlerState\n > {\n static displayName = name;\n\n private handlerTag: number;\n private config: Record;\n private propsRef: React.MutableRefObject;\n private viewNode: any;\n private viewTag?: number;\n private updateEnqueued: ReturnType | null = null;\n private inspectorToggleListener?: EmitterSubscription;\n\n constructor(props: T & InternalEventHandlers) {\n super(props);\n this.handlerTag = getNextHandlerTag();\n this.config = {};\n this.propsRef = React.createRef();\n this.state = { allowTouches };\n if (props.id) {\n if (handlerIDToTag[props.id] !== undefined) {\n throw new Error(`Handler with ID \"${props.id}\" already registered`);\n }\n handlerIDToTag[props.id] = this.handlerTag;\n }\n }\n\n componentDidMount() {\n const props: HandlerProps = this.props;\n\n if (DEV_ON_ANDROID) {\n this.inspectorToggleListener = DeviceEventEmitter.addListener(\n 'toggleElementInspector',\n () => {\n this.setState((_) => ({ allowTouches }));\n this.update(UNRESOLVED_REFS_RETRY_LIMIT);\n }\n );\n }\n if (hasUnresolvedRefs(props)) {\n // If there are unresolved refs (e.g. \".current\" has not yet been set)\n // passed as `simultaneousHandlers` or `waitFor`, we enqueue a call to\n // _update method that will try to update native handler props using\n // setImmediate. This makes it so update() function gets called after all\n // react components are mounted and we expect the missing ref object to\n // be resolved by then.\n this.updateEnqueued = setImmediate(() => {\n this.updateEnqueued = null;\n this.update(UNRESOLVED_REFS_RETRY_LIMIT);\n });\n }\n\n this.createGestureHandler(\n filterConfig(\n transformProps ? transformProps(this.props) : this.props,\n [...allowedProps, ...customNativeProps],\n config\n )\n );\n\n this.attachGestureHandler(findNodeHandle(this.viewNode) as number); // TODO(TS) - check if this can be null\n }\n\n componentDidUpdate() {\n const viewTag = findNodeHandle(this.viewNode);\n if (this.viewTag !== viewTag) {\n this.attachGestureHandler(viewTag as number); // TODO(TS) - check interaction between _viewTag & findNodeHandle\n }\n this.update(UNRESOLVED_REFS_RETRY_LIMIT);\n }\n\n componentWillUnmount() {\n this.inspectorToggleListener?.remove();\n RNGestureHandlerModule.dropGestureHandler(this.handlerTag);\n scheduleFlushOperations();\n if (this.updateEnqueued) {\n clearImmediate(this.updateEnqueued);\n }\n // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context\n const handlerID: string | undefined = this.props.id;\n if (handlerID) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete handlerIDToTag[handlerID];\n }\n }\n\n private onGestureHandlerEvent = (event: GestureEvent) => {\n if (event.nativeEvent.handlerTag === this.handlerTag) {\n if (typeof this.props.onGestureEvent === 'function') {\n this.props.onGestureEvent?.(event);\n }\n } else {\n this.props.onGestureHandlerEvent?.(event);\n }\n };\n\n // TODO(TS) - make sure this is right type for event\n private onGestureHandlerStateChange = (\n event: HandlerStateChangeEvent\n ) => {\n if (event.nativeEvent.handlerTag === this.handlerTag) {\n if (typeof this.props.onHandlerStateChange === 'function') {\n this.props.onHandlerStateChange?.(event);\n }\n\n const state: ValueOf = event.nativeEvent.state;\n const stateEventName = stateToPropMappings[state];\n const eventHandler = stateEventName && this.props[stateEventName];\n if (eventHandler && typeof eventHandler === 'function') {\n eventHandler(event);\n }\n } else {\n this.props.onGestureHandlerStateChange?.(event);\n }\n };\n\n private refHandler = (node: any) => {\n this.viewNode = node;\n\n const child = React.Children.only(this.props.children);\n // TODO(TS) fix ref type\n const { ref }: any = child;\n if (ref !== null) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n };\n\n private createGestureHandler = (\n newConfig: Readonly>\n ) => {\n this.config = newConfig;\n\n RNGestureHandlerModule.createGestureHandler(\n name,\n this.handlerTag,\n newConfig\n );\n };\n\n private attachGestureHandler = (newViewTag: number) => {\n this.viewTag = newViewTag;\n\n if (Platform.OS === 'web') {\n // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch\n (\n RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler\n )(\n this.handlerTag,\n newViewTag,\n ActionType.JS_FUNCTION_OLD_API, // ignored on web\n this.propsRef\n );\n } else {\n registerOldGestureHandler(this.handlerTag, {\n onGestureEvent: this.onGestureHandlerEvent,\n onGestureStateChange: this.onGestureHandlerStateChange,\n });\n\n const actionType = (() => {\n if (\n this.props?.onGestureEvent &&\n 'current' in this.props.onGestureEvent\n ) {\n // Reanimated worklet\n return ActionType.REANIMATED_WORKLET;\n } else if (\n this.props?.onGestureEvent &&\n '__isNative' in this.props.onGestureEvent\n ) {\n // Animated.event with useNativeDriver: true\n return ActionType.NATIVE_ANIMATED_EVENT;\n } else {\n // JS callback or Animated.event with useNativeDriver: false\n return ActionType.JS_FUNCTION_OLD_API;\n }\n })();\n\n RNGestureHandlerModule.attachGestureHandler(\n this.handlerTag,\n newViewTag,\n actionType\n );\n }\n\n scheduleFlushOperations();\n };\n\n private updateGestureHandler = (\n newConfig: Readonly>\n ) => {\n this.config = newConfig;\n\n RNGestureHandlerModule.updateGestureHandler(this.handlerTag, newConfig);\n scheduleFlushOperations();\n };\n\n private update(remainingTries: number) {\n const props: HandlerProps = this.props;\n\n // When ref is set via a function i.e. `ref={(r) => refObject.current = r}` instead of\n // `ref={refObject}` it's possible that it won't be resolved in time. Seems like trying\n // again is easy enough fix.\n if (hasUnresolvedRefs(props) && remainingTries > 0) {\n this.updateEnqueued = setImmediate(() => {\n this.updateEnqueued = null;\n this.update(remainingTries - 1);\n });\n } else {\n const newConfig = filterConfig(\n transformProps ? transformProps(this.props) : this.props,\n [...allowedProps, ...customNativeProps],\n config\n );\n if (!deepEqual(this.config, newConfig)) {\n this.updateGestureHandler(newConfig);\n }\n }\n }\n\n setNativeProps(updates: any) {\n const mergedProps = { ...this.props, ...updates };\n const newConfig = filterConfig(\n transformProps ? transformProps(mergedProps) : mergedProps,\n [...allowedProps, ...customNativeProps],\n config\n );\n this.updateGestureHandler(newConfig);\n }\n\n render() {\n let gestureEventHandler = this.onGestureHandlerEvent;\n // Another instance of https://github.com/microsoft/TypeScript/issues/13995\n type OnGestureEventHandlers = {\n onGestureEvent?: BaseGestureHandlerProps['onGestureEvent'];\n onGestureHandlerEvent?: InternalEventHandlers['onGestureHandlerEvent'];\n };\n const { onGestureEvent, onGestureHandlerEvent }: OnGestureEventHandlers =\n this.props;\n if (onGestureEvent && typeof onGestureEvent !== 'function') {\n // If it's not a method it should be an native Animated.event\n // object. We set it directly as the handler for the view\n // In this case nested handlers are not going to be supported\n if (onGestureHandlerEvent) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n gestureEventHandler = onGestureEvent;\n } else {\n if (\n onGestureHandlerEvent &&\n typeof onGestureHandlerEvent !== 'function'\n ) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n }\n\n let gestureStateEventHandler = this.onGestureHandlerStateChange;\n // Another instance of https://github.com/microsoft/TypeScript/issues/13995\n type OnGestureStateChangeHandlers = {\n onHandlerStateChange?: BaseGestureHandlerProps['onHandlerStateChange'];\n onGestureHandlerStateChange?: InternalEventHandlers['onGestureHandlerStateChange'];\n };\n const {\n onHandlerStateChange,\n onGestureHandlerStateChange,\n }: OnGestureStateChangeHandlers = this.props;\n if (onHandlerStateChange && typeof onHandlerStateChange !== 'function') {\n // If it's not a method it should be an native Animated.event\n // object. We set it directly as the handler for the view\n // In this case nested handlers are not going to be supported\n if (onGestureHandlerStateChange) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n gestureStateEventHandler = onHandlerStateChange;\n } else {\n if (\n onGestureHandlerStateChange &&\n typeof onGestureHandlerStateChange !== 'function'\n ) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n }\n const events = {\n onGestureHandlerEvent: this.state.allowTouches\n ? gestureEventHandler\n : undefined,\n onGestureHandlerStateChange: this.state.allowTouches\n ? gestureStateEventHandler\n : undefined,\n };\n\n this.propsRef.current = events;\n\n let child: any = null;\n try {\n child = React.Children.only(this.props.children);\n } catch (e) {\n throw new Error(\n tagMessage(\n `${name} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`\n )\n );\n }\n\n let grandChildren = child.props.children;\n if (\n __DEV__ &&\n child.type &&\n (child.type === 'RNGestureHandlerButton' ||\n child.type.name === 'View' ||\n child.type.displayName === 'View')\n ) {\n grandChildren = React.Children.toArray(grandChildren);\n grandChildren.push(\n \n );\n }\n\n return React.cloneElement(\n child,\n {\n ref: this.refHandler,\n collapsable: false,\n ...(isJestEnv()\n ? {\n handlerType: name,\n handlerTag: this.handlerTag,\n }\n : {}),\n testID: this.props.testID ?? child.props.testID,\n ...events,\n },\n grandChildren\n );\n }\n }\n return Handler;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js new file mode 100644 index 00000000..a2a7fca3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js @@ -0,0 +1,74 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createNativeWrapper; + +var React = _interopRequireWildcard(require("react")); + +var _NativeViewGestureHandler = require("./NativeViewGestureHandler"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +/* + * This array should consist of: + * - All keys in propTypes from NativeGestureHandler + * (and all keys in GestureHandlerPropTypes) + * - 'onGestureHandlerEvent' + * - 'onGestureHandlerStateChange' + */ +const NATIVE_WRAPPER_PROPS_FILTER = [..._NativeViewGestureHandler.nativeViewProps, 'onGestureHandlerEvent', 'onGestureHandlerStateChange']; + +function createNativeWrapper(Component, config = {}) { + var _Component$render; + + const ComponentWrapper = /*#__PURE__*/React.forwardRef((props, ref) => { + // filter out props that should be passed to gesture handler wrapper + const gestureHandlerProps = Object.keys(props).reduce((res, key) => { + // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info + const allowedKeys = NATIVE_WRAPPER_PROPS_FILTER; + + if (allowedKeys.includes(key)) { + // @ts-ignore FIXME(TS) + res[key] = props[key]; + } + + return res; + }, { ...config + } // watch out not to modify config + ); + + const _ref = (0, React.useRef)(); + + const _gestureHandlerRef = (0, React.useRef)(); + + (0, React.useImperativeHandle)(ref, // @ts-ignore TODO(TS) decide how nulls work in this context + () => { + const node = _gestureHandlerRef.current; // add handlerTag for relations config + + if (_ref.current && node) { + // @ts-ignore FIXME(TS) think about createHandler return type + _ref.current.handlerTag = node.handlerTag; + return _ref.current; + } + + return null; + }, [_ref, _gestureHandlerRef]); + return /*#__PURE__*/React.createElement(_NativeViewGestureHandler.NativeViewGestureHandler, _extends({}, gestureHandlerProps, { + // @ts-ignore TODO(TS) + ref: _gestureHandlerRef + }), /*#__PURE__*/React.createElement(Component, _extends({}, props, { + ref: _ref + }))); + }); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + ComponentWrapper.displayName = (Component === null || Component === void 0 ? void 0 : Component.displayName) || ( // @ts-ignore if render doesn't exist it will return undefined and go further + Component === null || Component === void 0 ? void 0 : (_Component$render = Component.render) === null || _Component$render === void 0 ? void 0 : _Component$render.name) || typeof Component === 'string' && Component || 'ComponentWrapper'; + return ComponentWrapper; +} +//# sourceMappingURL=createNativeWrapper.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js.map new file mode 100644 index 00000000..2050180b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/createNativeWrapper.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["createNativeWrapper.tsx"],"names":["NATIVE_WRAPPER_PROPS_FILTER","nativeViewProps","createNativeWrapper","Component","config","ComponentWrapper","React","forwardRef","props","ref","gestureHandlerProps","Object","keys","reduce","res","key","allowedKeys","includes","_ref","_gestureHandlerRef","node","current","handlerTag","displayName","render","name"],"mappings":";;;;;;;AAAA;;AAGA;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,2BAA2B,GAAG,CAClC,GAAGC,yCAD+B,EAElC,uBAFkC,EAGlC,6BAHkC,CAApC;;AAMe,SAASC,mBAAT,CACbC,SADa,EAEbC,MAA+C,GAAG,EAFrC,EAGb;AAAA;;AACA,QAAMC,gBAAgB,gBAAGC,KAAK,CAACC,UAAN,CAGvB,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAChB;AACA,UAAMC,mBAAmB,GAAGC,MAAM,CAACC,IAAP,CAAYJ,KAAZ,EAAmBK,MAAnB,CAC1B,CAACC,GAAD,EAAMC,GAAN,KAAc;AACZ;AACA,YAAMC,WAA8B,GAAGhB,2BAAvC;;AACA,UAAIgB,WAAW,CAACC,QAAZ,CAAqBF,GAArB,CAAJ,EAA+B;AAC7B;AACAD,QAAAA,GAAG,CAACC,GAAD,CAAH,GAAWP,KAAK,CAACO,GAAD,CAAhB;AACD;;AACD,aAAOD,GAAP;AACD,KATyB,EAU1B,EAAE,GAAGV;AAAL,KAV0B,CAUZ;AAVY,KAA5B;;AAYA,UAAMc,IAAI,GAAG,mBAAb;;AACA,UAAMC,kBAAkB,GAAG,mBAA3B;;AACA,mCACEV,GADF,EAEE;AACA,UAAM;AACJ,YAAMW,IAAI,GAAGD,kBAAkB,CAACE,OAAhC,CADI,CAEJ;;AACA,UAAIH,IAAI,CAACG,OAAL,IAAgBD,IAApB,EAA0B;AACxB;AACAF,QAAAA,IAAI,CAACG,OAAL,CAAaC,UAAb,GAA0BF,IAAI,CAACE,UAA/B;AACA,eAAOJ,IAAI,CAACG,OAAZ;AACD;;AACD,aAAO,IAAP;AACD,KAZH,EAaE,CAACH,IAAD,EAAOC,kBAAP,CAbF;AAeA,wBACE,oBAAC,kDAAD,eACMT,mBADN;AAEE;AACA,MAAA,GAAG,EAAES;AAHP,qBAIE,oBAAC,SAAD,eAAeX,KAAf;AAAsB,MAAA,GAAG,EAAEU;AAA3B,OAJF,CADF;AAQD,GA1CwB,CAAzB,CADA,CA6CA;;AACAb,EAAAA,gBAAgB,CAACkB,WAAjB,GACE,CAAApB,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEoB,WAAX,OACA;AACApB,EAAAA,SAFA,aAEAA,SAFA,4CAEAA,SAAS,CAAEqB,MAFX,sDAEA,kBAAmBC,IAFnB,KAGC,OAAOtB,SAAP,KAAqB,QAArB,IAAiCA,SAHlC,IAIA,kBALF;AAOA,SAAOE,gBAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { useImperativeHandle, useRef } from 'react';\n\nimport {\n NativeViewGestureHandler,\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from './NativeViewGestureHandler';\n\n/*\n * This array should consist of:\n * - All keys in propTypes from NativeGestureHandler\n * (and all keys in GestureHandlerPropTypes)\n * - 'onGestureHandlerEvent'\n * - 'onGestureHandlerStateChange'\n */\nconst NATIVE_WRAPPER_PROPS_FILTER = [\n ...nativeViewProps,\n 'onGestureHandlerEvent',\n 'onGestureHandlerStateChange',\n] as const;\n\nexport default function createNativeWrapper

(\n Component: React.ComponentType

,\n config: Readonly = {}\n) {\n const ComponentWrapper = React.forwardRef<\n React.ComponentType,\n P & NativeViewGestureHandlerProps\n >((props, ref) => {\n // filter out props that should be passed to gesture handler wrapper\n const gestureHandlerProps = Object.keys(props).reduce(\n (res, key) => {\n // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info\n const allowedKeys: readonly string[] = NATIVE_WRAPPER_PROPS_FILTER;\n if (allowedKeys.includes(key)) {\n // @ts-ignore FIXME(TS)\n res[key] = props[key];\n }\n return res;\n },\n { ...config } // watch out not to modify config\n );\n const _ref = useRef>();\n const _gestureHandlerRef = useRef>();\n useImperativeHandle(\n ref,\n // @ts-ignore TODO(TS) decide how nulls work in this context\n () => {\n const node = _gestureHandlerRef.current;\n // add handlerTag for relations config\n if (_ref.current && node) {\n // @ts-ignore FIXME(TS) think about createHandler return type\n _ref.current.handlerTag = node.handlerTag;\n return _ref.current;\n }\n return null;\n },\n [_ref, _gestureHandlerRef]\n );\n return (\n \n \n \n );\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ComponentWrapper.displayName =\n Component?.displayName ||\n // @ts-ignore if render doesn't exist it will return undefined and go further\n Component?.render?.name ||\n (typeof Component === 'string' && Component) ||\n 'ComponentWrapper';\n\n return ComponentWrapper;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js new file mode 100644 index 00000000..0ce347a5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js @@ -0,0 +1,100 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.filterConfig = filterConfig; +exports.findNodeHandle = findNodeHandle; +exports.scheduleFlushOperations = scheduleFlushOperations; +exports.baseGestureHandlerWithMonitorProps = exports.baseGestureHandlerProps = void 0; + +var _reactNative = require("react-native"); + +var _handlersRegistry = require("./handlersRegistry"); + +var _utils = require("../utils"); + +var _RNGestureHandlerModule = _interopRequireDefault(require("../RNGestureHandlerModule")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class. +// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof +// e.g. React.createRef -> React.createRef. +// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference. +const commonProps = ['id', 'enabled', 'shouldCancelWhenOutside', 'hitSlop', 'cancelsTouchesInView', 'userSelect']; +const componentInteractionProps = ['waitFor', 'simultaneousHandlers']; +const baseGestureHandlerProps = [...commonProps, ...componentInteractionProps, 'onBegan', 'onFailed', 'onCancelled', 'onActivated', 'onEnded', 'onGestureEvent', 'onHandlerStateChange']; +exports.baseGestureHandlerProps = baseGestureHandlerProps; +const baseGestureHandlerWithMonitorProps = [...commonProps, 'needsPointerData', 'manualActivation']; +exports.baseGestureHandlerWithMonitorProps = baseGestureHandlerWithMonitorProps; + +function isConfigParam(param, name) { + // param !== Object(param) returns false if `param` is a function + // or an object and returns true if `param` is null + return param !== undefined && (param !== Object(param) || !('__isNative' in param)) && name !== 'onHandlerStateChange' && name !== 'onGestureEvent'; +} + +function filterConfig(props, validProps, defaults = {}) { + const filteredConfig = { ...defaults + }; + + for (const key of validProps) { + let value = props[key]; + + if (isConfigParam(value, key)) { + if (key === 'simultaneousHandlers' || key === 'waitFor') { + value = transformIntoHandlerTags(props[key]); + } else if (key === 'hitSlop' && typeof value !== 'object') { + value = { + top: value, + left: value, + bottom: value, + right: value + }; + } + + filteredConfig[key] = value; + } + } + + return filteredConfig; +} + +function transformIntoHandlerTags(handlerIDs) { + handlerIDs = (0, _utils.toArray)(handlerIDs); + + if (_reactNative.Platform.OS === 'web') { + return handlerIDs.map(({ + current + }) => current).filter(handle => handle); + } // converts handler string IDs into their numeric tags + + + return handlerIDs.map(handlerID => { + var _handlerID$current; + + return _handlersRegistry.handlerIDToTag[handlerID] || ((_handlerID$current = handlerID.current) === null || _handlerID$current === void 0 ? void 0 : _handlerID$current.handlerTag) || -1; + }).filter(handlerTag => handlerTag > 0); +} + +function findNodeHandle(node) { + if (_reactNative.Platform.OS === 'web') { + return node; + } + + return (0, _reactNative.findNodeHandle)(node); +} + +let scheduledFlushOperationsId = null; + +function scheduleFlushOperations() { + if (scheduledFlushOperationsId === null) { + scheduledFlushOperationsId = requestAnimationFrame(() => { + _RNGestureHandlerModule.default.flushOperations(); + + scheduledFlushOperationsId = null; + }); + } +} +//# sourceMappingURL=gestureHandlerCommon.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js.map new file mode 100644 index 00000000..5bb45c53 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerCommon.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureHandlerCommon.ts"],"names":["commonProps","componentInteractionProps","baseGestureHandlerProps","baseGestureHandlerWithMonitorProps","isConfigParam","param","name","undefined","Object","filterConfig","props","validProps","defaults","filteredConfig","key","value","transformIntoHandlerTags","top","left","bottom","right","handlerIDs","Platform","OS","map","current","filter","handle","handlerID","handlerIDToTag","handlerTag","findNodeHandle","node","scheduledFlushOperationsId","scheduleFlushOperations","requestAnimationFrame","RNGestureHandlerModule","flushOperations"],"mappings":"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","sourcesContent":["// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class.\n// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof\n// e.g. React.createRef -> React.createRef.\n// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.\nimport * as React from 'react';\nimport { Platform, findNodeHandle as findNodeHandleRN } from 'react-native';\n\nimport { State } from '../State';\nimport { TouchEventType } from '../TouchEventType';\nimport { ValueOf } from '../typeUtils';\nimport { handlerIDToTag } from './handlersRegistry';\nimport { toArray } from '../utils';\nimport RNGestureHandlerModule from '../RNGestureHandlerModule';\n\nconst commonProps = [\n 'id',\n 'enabled',\n 'shouldCancelWhenOutside',\n 'hitSlop',\n 'cancelsTouchesInView',\n 'userSelect',\n] as const;\n\nconst componentInteractionProps = ['waitFor', 'simultaneousHandlers'] as const;\n\nexport const baseGestureHandlerProps = [\n ...commonProps,\n ...componentInteractionProps,\n 'onBegan',\n 'onFailed',\n 'onCancelled',\n 'onActivated',\n 'onEnded',\n 'onGestureEvent',\n 'onHandlerStateChange',\n] as const;\n\nexport const baseGestureHandlerWithMonitorProps = [\n ...commonProps,\n 'needsPointerData',\n 'manualActivation',\n];\n\nexport interface GestureEventPayload {\n handlerTag: number;\n numberOfPointers: number;\n state: ValueOf;\n}\nexport interface HandlerStateChangeEventPayload extends GestureEventPayload {\n oldState: ValueOf;\n}\n\nexport type HitSlop =\n | number\n | Partial<\n Record<\n 'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal',\n number\n >\n >\n | Record<'width' | 'left', number>\n | Record<'width' | 'right', number>\n | Record<'height' | 'top', number>\n | Record<'height' | 'bottom', number>;\n\nexport type UserSelect = 'none' | 'auto' | 'text';\n\n//TODO(TS) events in handlers\n\nexport interface GestureEvent> {\n nativeEvent: Readonly;\n}\nexport interface HandlerStateChangeEvent<\n ExtraEventPayloadT = Record\n> {\n nativeEvent: Readonly;\n}\n\nexport type TouchData = {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\n\nexport type GestureTouchEvent = {\n handlerTag: number;\n numberOfTouches: number;\n state: ValueOf;\n eventType: TouchEventType;\n allTouches: TouchData[];\n changedTouches: TouchData[];\n};\n\nexport type GestureUpdateEvent> =\n GestureEventPayload & GestureEventPayloadT;\n\nexport type GestureStateChangeEvent<\n GestureStateChangeEventPayloadT = Record\n> = HandlerStateChangeEventPayload & GestureStateChangeEventPayloadT;\n\nexport type CommonGestureConfig = {\n enabled?: boolean;\n shouldCancelWhenOutside?: boolean;\n hitSlop?: HitSlop;\n userSelect?: UserSelect;\n};\n\n// Events payloads are types instead of interfaces due to TS limitation.\n// See https://github.com/microsoft/TypeScript/issues/15300 for more info.\nexport type BaseGestureHandlerProps<\n ExtraEventPayloadT extends Record = Record\n> = CommonGestureConfig & {\n id?: string;\n waitFor?: React.Ref | React.Ref[];\n simultaneousHandlers?: React.Ref | React.Ref[];\n testID?: string;\n cancelsTouchesInView?: boolean;\n // TODO(TS) - fix event types\n onBegan?: (event: HandlerStateChangeEvent) => void;\n onFailed?: (event: HandlerStateChangeEvent) => void;\n onCancelled?: (event: HandlerStateChangeEvent) => void;\n onActivated?: (event: HandlerStateChangeEvent) => void;\n onEnded?: (event: HandlerStateChangeEvent) => void;\n\n //TODO(TS) consider using NativeSyntheticEvent\n onGestureEvent?: (event: GestureEvent) => void;\n onHandlerStateChange?: (\n event: HandlerStateChangeEvent\n ) => void;\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?: React.ReactNode;\n};\n\nfunction isConfigParam(param: unknown, name: string) {\n // param !== Object(param) returns false if `param` is a function\n // or an object and returns true if `param` is null\n return (\n param !== undefined &&\n (param !== Object(param) ||\n !('__isNative' in (param as Record))) &&\n name !== 'onHandlerStateChange' &&\n name !== 'onGestureEvent'\n );\n}\n\nexport function filterConfig(\n props: Record,\n validProps: string[],\n defaults: Record = {}\n) {\n const filteredConfig = { ...defaults };\n for (const key of validProps) {\n let value = props[key];\n if (isConfigParam(value, key)) {\n if (key === 'simultaneousHandlers' || key === 'waitFor') {\n value = transformIntoHandlerTags(props[key]);\n } else if (key === 'hitSlop' && typeof value !== 'object') {\n value = { top: value, left: value, bottom: value, right: value };\n }\n filteredConfig[key] = value;\n }\n }\n return filteredConfig;\n}\n\nfunction transformIntoHandlerTags(handlerIDs: any) {\n handlerIDs = toArray(handlerIDs);\n\n if (Platform.OS === 'web') {\n return handlerIDs\n .map(({ current }: { current: any }) => current)\n .filter((handle: any) => handle);\n }\n // converts handler string IDs into their numeric tags\n return handlerIDs\n .map(\n (handlerID: any) =>\n handlerIDToTag[handlerID] || handlerID.current?.handlerTag || -1\n )\n .filter((handlerTag: number) => handlerTag > 0);\n}\n\nexport function findNodeHandle(\n node: null | number | React.Component | React.ComponentClass\n): null | number | React.Component | React.ComponentClass {\n if (Platform.OS === 'web') {\n return node;\n }\n return findNodeHandleRN(node);\n}\n\nlet scheduledFlushOperationsId: ReturnType<\n typeof requestAnimationFrame\n> | null = null;\n\nexport function scheduleFlushOperations() {\n if (scheduledFlushOperationsId === null) {\n scheduledFlushOperationsId = requestAnimationFrame(() => {\n RNGestureHandlerModule.flushOperations();\n\n scheduledFlushOperationsId = null;\n });\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js new file mode 100644 index 00000000..900d2652 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js @@ -0,0 +1,6 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +//# sourceMappingURL=gestureHandlerTypesCompat.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map new file mode 100644 index 00000000..9ffd4b22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js new file mode 100644 index 00000000..4556d109 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js @@ -0,0 +1,645 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GestureDetector = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _gesture = require("./gesture"); + +var _reanimatedWrapper = require("./reanimatedWrapper"); + +var _handlersRegistry = require("../handlersRegistry"); + +var _RNGestureHandlerModule = _interopRequireDefault(require("../../RNGestureHandlerModule")); + +var _gestureHandlerCommon = require("../gestureHandlerCommon"); + +var _gestureStateManager = require("./gestureStateManager"); + +var _FlingGestureHandler = require("../FlingGestureHandler"); + +var _ForceTouchGestureHandler = require("../ForceTouchGestureHandler"); + +var _LongPressGestureHandler = require("../LongPressGestureHandler"); + +var _PanGestureHandler = require("../PanGestureHandler"); + +var _TapGestureHandler = require("../TapGestureHandler"); + +var _State = require("../../State"); + +var _TouchEventType = require("../../TouchEventType"); + +var _ActionType = require("../../ActionType"); + +var _utils = require("../../utils"); + +var _getShadowNodeFromRef = require("../../getShadowNodeFromRef"); + +var _reactNative = require("react-native"); + +var _eventReceiver = require("./eventReceiver"); + +var _RNRenderer = require("../../RNRenderer"); + +var _EnableExperimentalWebImplementation = require("../../EnableExperimentalWebImplementation"); + +var _Reanimated$default$c, _Reanimated$default; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +const ALLOWED_PROPS = [..._gestureHandlerCommon.baseGestureHandlerWithMonitorProps, ..._TapGestureHandler.tapGestureHandlerProps, ..._PanGestureHandler.panGestureHandlerProps, ..._PanGestureHandler.panGestureHandlerCustomNativeProps, ..._LongPressGestureHandler.longPressGestureHandlerProps, ..._ForceTouchGestureHandler.forceTouchGestureHandlerProps, ..._FlingGestureHandler.flingGestureHandlerProps]; + +function convertToHandlerTag(ref) { + if (typeof ref === 'number') { + return ref; + } else if (ref instanceof _gesture.BaseGesture) { + return ref.handlerTag; + } else { + var _ref$current$handlerT, _ref$current; + + // @ts-ignore in this case it should be a ref either to gesture object or + // a gesture handler component, in both cases handlerTag property exists + return (_ref$current$handlerT = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.handlerTag) !== null && _ref$current$handlerT !== void 0 ? _ref$current$handlerT : -1; + } +} + +function extractValidHandlerTags(interactionGroup) { + var _interactionGroup$map, _interactionGroup$map2; + + return (_interactionGroup$map = interactionGroup === null || interactionGroup === void 0 ? void 0 : (_interactionGroup$map2 = interactionGroup.map(convertToHandlerTag)) === null || _interactionGroup$map2 === void 0 ? void 0 : _interactionGroup$map2.filter(tag => tag > 0)) !== null && _interactionGroup$map !== void 0 ? _interactionGroup$map : []; +} + +function dropHandlers(preparedGesture) { + for (const handler of preparedGesture.config) { + _RNGestureHandlerModule.default.dropGestureHandler(handler.handlerTag); + + (0, _handlersRegistry.unregisterHandler)(handler.handlerTag, handler.config.testId); + } + + (0, _gestureHandlerCommon.scheduleFlushOperations)(); +} + +function checkGestureCallbacksForWorklets(gesture) { + // if a gesture is explicitly marked to run on the JS thread there is no need to check + // if callbacks are worklets as the user is aware they will be ran on the JS thread + if (gesture.config.runOnJS) { + return; + } + + const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false); + const areSomeWorklets = gesture.handlers.isWorklet.includes(true); // if some of the callbacks are worklets and some are not, and the gesture is not + // explicitly marked with `.runOnJS(true)` show an error + + if (areSomeNotWorklets && areSomeWorklets) { + console.error((0, _utils.tagMessage)(`Some of the callbacks in the gesture are worklets and some are not. Either make sure that all calbacks are marked as 'worklet' if you wish to run them on the UI thread or use '.runOnJS(true)' modifier on the gesture explicitly to run all callbacks on the JS thread.`)); + } +} + +function attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + viewTag, + webEventHandlersRef, + mountedRef +}) { + if (!preparedGesture.firstExecution) { + gestureConfig.initialize(); + } else { + preparedGesture.firstExecution = false; + } // use setImmediate to extract handlerTags, because all refs should be initialized + // when it's ran + + + setImmediate(() => { + if (!mountedRef.current) { + return; + } + + gestureConfig.prepare(); + }); + + for (const handler of gesture) { + checkGestureCallbacksForWorklets(handler); + + _RNGestureHandlerModule.default.createGestureHandler(handler.handlerName, handler.handlerTag, (0, _gestureHandlerCommon.filterConfig)(handler.config, ALLOWED_PROPS)); + + (0, _handlersRegistry.registerHandler)(handler.handlerTag, handler, handler.config.testId); + } // use setImmediate to extract handlerTags, because all refs should be initialized + // when it's ran + + + setImmediate(() => { + if (!mountedRef.current) { + return; + } + + for (const handler of gesture) { + let requireToFail = []; + + if (handler.config.requireToFail) { + requireToFail = extractValidHandlerTags(handler.config.requireToFail); + } + + let simultaneousWith = []; + + if (handler.config.simultaneousWith) { + simultaneousWith = extractValidHandlerTags(handler.config.simultaneousWith); + } + + _RNGestureHandlerModule.default.updateGestureHandler(handler.handlerTag, (0, _gestureHandlerCommon.filterConfig)(handler.config, ALLOWED_PROPS, { + simultaneousHandlers: simultaneousWith, + waitFor: requireToFail + })); + } + + (0, _gestureHandlerCommon.scheduleFlushOperations)(); + }); + preparedGesture.config = gesture; + + for (const gesture of preparedGesture.config) { + const actionType = gesture.shouldUseReanimated ? _ActionType.ActionType.REANIMATED_WORKLET : _ActionType.ActionType.JS_FUNCTION_NEW_API; + + if (_reactNative.Platform.OS === 'web') { + _RNGestureHandlerModule.default.attachGestureHandler(gesture.handlerTag, viewTag, _ActionType.ActionType.JS_FUNCTION_OLD_API, // ignored on web + webEventHandlersRef); + } else { + _RNGestureHandlerModule.default.attachGestureHandler(gesture.handlerTag, viewTag, actionType); + } + } + + if (preparedGesture.animatedHandlers) { + const isAnimatedGesture = g => g.shouldUseReanimated; + + preparedGesture.animatedHandlers.value = gesture.filter(isAnimatedGesture).map(g => g.handlers); + } +} + +function updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef) { + gestureConfig.prepare(); + + for (let i = 0; i < gesture.length; i++) { + const handler = preparedGesture.config[i]; + checkGestureCallbacksForWorklets(handler); // only update handlerTag when it's actually different, it may be the same + // if gesture config object is wrapped with useMemo + + if (gesture[i].handlerTag !== handler.handlerTag) { + gesture[i].handlerTag = handler.handlerTag; + gesture[i].handlers.handlerTag = handler.handlerTag; + } + } // use setImmediate to extract handlerTags, because when it's ran, all refs should be updated + // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait + // in case of external relations) + + + setImmediate(() => { + if (!mountedRef.current) { + return; + } + + for (let i = 0; i < gesture.length; i++) { + const handler = preparedGesture.config[i]; + handler.config = gesture[i].config; + handler.handlers = gesture[i].handlers; + const requireToFail = extractValidHandlerTags(handler.config.requireToFail); + const simultaneousWith = extractValidHandlerTags(handler.config.simultaneousWith); + + _RNGestureHandlerModule.default.updateGestureHandler(handler.handlerTag, (0, _gestureHandlerCommon.filterConfig)(handler.config, ALLOWED_PROPS, { + simultaneousHandlers: simultaneousWith, + waitFor: requireToFail + })); + + (0, _handlersRegistry.registerHandler)(handler.handlerTag, handler, handler.config.testId); + } + + if (preparedGesture.animatedHandlers) { + var _preparedGesture$anim; + + const previousHandlersValue = (_preparedGesture$anim = preparedGesture.animatedHandlers.value) !== null && _preparedGesture$anim !== void 0 ? _preparedGesture$anim : []; + const newHandlersValue = preparedGesture.config.filter(g => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI + .map(g => g.handlers); // if amount of gesture configs changes, we need to update the callbacks in shared value + + let shouldUpdateSharedValue = previousHandlersValue.length !== newHandlersValue.length; + + if (!shouldUpdateSharedValue) { + // if the amount is the same, we need to check if any of the configs inside has changed + for (let i = 0; i < newHandlersValue.length; i++) { + if ( // we can use the `gestureId` prop as it's unique for every config instance + newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId) { + shouldUpdateSharedValue = true; + break; + } + } + } + + if (shouldUpdateSharedValue) { + preparedGesture.animatedHandlers.value = newHandlersValue; + } + } + + (0, _gestureHandlerCommon.scheduleFlushOperations)(); + }); +} + +function needsToReattach(preparedGesture, gesture) { + if (gesture.length !== preparedGesture.config.length) { + return true; + } + + for (let i = 0; i < gesture.length; i++) { + if (gesture[i].handlerName !== preparedGesture.config[i].handlerName || gesture[i].shouldUseReanimated !== preparedGesture.config[i].shouldUseReanimated) { + return true; + } + } + + return false; +} + +function isStateChangeEvent(event) { + 'worklet'; // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point + + return event.oldState != null; +} + +function isTouchEvent(event) { + 'worklet'; + + return event.eventType != null; +} + +function getHandler(type, gesture) { + 'worklet'; + + switch (type) { + case _gesture.CALLBACK_TYPE.BEGAN: + return gesture.onBegin; + + case _gesture.CALLBACK_TYPE.START: + return gesture.onStart; + + case _gesture.CALLBACK_TYPE.UPDATE: + return gesture.onUpdate; + + case _gesture.CALLBACK_TYPE.CHANGE: + return gesture.onChange; + + case _gesture.CALLBACK_TYPE.END: + return gesture.onEnd; + + case _gesture.CALLBACK_TYPE.FINALIZE: + return gesture.onFinalize; + + case _gesture.CALLBACK_TYPE.TOUCHES_DOWN: + return gesture.onTouchesDown; + + case _gesture.CALLBACK_TYPE.TOUCHES_MOVE: + return gesture.onTouchesMove; + + case _gesture.CALLBACK_TYPE.TOUCHES_UP: + return gesture.onTouchesUp; + + case _gesture.CALLBACK_TYPE.TOUCHES_CANCELLED: + return gesture.onTouchesCancelled; + } +} + +function touchEventTypeToCallbackType(eventType) { + 'worklet'; + + switch (eventType) { + case _TouchEventType.TouchEventType.TOUCHES_DOWN: + return _gesture.CALLBACK_TYPE.TOUCHES_DOWN; + + case _TouchEventType.TouchEventType.TOUCHES_MOVE: + return _gesture.CALLBACK_TYPE.TOUCHES_MOVE; + + case _TouchEventType.TouchEventType.TOUCHES_UP: + return _gesture.CALLBACK_TYPE.TOUCHES_UP; + + case _TouchEventType.TouchEventType.TOUCHES_CANCELLED: + return _gesture.CALLBACK_TYPE.TOUCHES_CANCELLED; + } + + return _gesture.CALLBACK_TYPE.UNDEFINED; +} + +function runWorklet(type, gesture, event, ...args) { + 'worklet'; + + const handler = getHandler(type, gesture); + + if (gesture.isWorklet[type]) { + // @ts-ignore Logic below makes sure the correct event is send to the + // correct handler. + handler === null || handler === void 0 ? void 0 : handler(event, ...args); + } else if (handler) { + console.warn((0, _utils.tagMessage)('Animated gesture callback must be a worklet')); + } +} + +function useAnimatedGesture(preparedGesture, needsRebuild) { + if (!_reanimatedWrapper.Reanimated) { + return; + } // Hooks are called conditionally, but the condition is whether the + // react-native-reanimated is installed, which shouldn't change while running + // eslint-disable-next-line react-hooks/rules-of-hooks + + + const sharedHandlersCallbacks = _reanimatedWrapper.Reanimated.useSharedValue(null); // eslint-disable-next-line react-hooks/rules-of-hooks + + + const lastUpdateEvent = _reanimatedWrapper.Reanimated.useSharedValue([]); // not every gesture needs a state controller, init them lazily + + + const stateControllers = []; + + const callback = event => { + 'worklet'; + + const currentCallback = sharedHandlersCallbacks.value; + + if (!currentCallback) { + return; + } + + for (let i = 0; i < currentCallback.length; i++) { + const gesture = currentCallback[i]; + + if (event.handlerTag === gesture.handlerTag) { + if (isStateChangeEvent(event)) { + if (event.oldState === _State.State.UNDETERMINED && event.state === _State.State.BEGAN) { + runWorklet(_gesture.CALLBACK_TYPE.BEGAN, gesture, event); + } else if ((event.oldState === _State.State.BEGAN || event.oldState === _State.State.UNDETERMINED) && event.state === _State.State.ACTIVE) { + runWorklet(_gesture.CALLBACK_TYPE.START, gesture, event); + lastUpdateEvent.value[gesture.handlerTag] = undefined; + } else if (event.oldState !== event.state && event.state === _State.State.END) { + if (event.oldState === _State.State.ACTIVE) { + runWorklet(_gesture.CALLBACK_TYPE.END, gesture, event, true); + } + + runWorklet(_gesture.CALLBACK_TYPE.FINALIZE, gesture, event, true); + } else if ((event.state === _State.State.FAILED || event.state === _State.State.CANCELLED) && event.state !== event.oldState) { + if (event.oldState === _State.State.ACTIVE) { + runWorklet(_gesture.CALLBACK_TYPE.END, gesture, event, false); + } + + runWorklet(_gesture.CALLBACK_TYPE.FINALIZE, gesture, event, false); + } + } else if (isTouchEvent(event)) { + if (!stateControllers[i]) { + stateControllers[i] = _gestureStateManager.GestureStateManager.create(event.handlerTag); + } + + if (event.eventType !== _TouchEventType.TouchEventType.UNDETERMINED) { + runWorklet(touchEventTypeToCallbackType(event.eventType), gesture, event, stateControllers[i]); + } + } else { + runWorklet(_gesture.CALLBACK_TYPE.UPDATE, gesture, event); + + if (gesture.onChange && gesture.changeEventCalculator) { + var _gesture$changeEventC; + + runWorklet(_gesture.CALLBACK_TYPE.CHANGE, gesture, (_gesture$changeEventC = gesture.changeEventCalculator) === null || _gesture$changeEventC === void 0 ? void 0 : _gesture$changeEventC.call(gesture, event, lastUpdateEvent.value[gesture.handlerTag])); + lastUpdateEvent.value[gesture.handlerTag] = event; + } + } + } + } + }; // eslint-disable-next-line react-hooks/rules-of-hooks + + + const event = _reanimatedWrapper.Reanimated.useEvent(callback, ['onGestureHandlerStateChange', 'onGestureHandlerEvent'], needsRebuild); + + preparedGesture.animatedEventHandler = event; + preparedGesture.animatedHandlers = sharedHandlersCallbacks; +} // eslint-disable-next-line @typescript-eslint/no-explicit-any + + +function validateDetectorChildren(ref) { + // finds the first native view under the Wrap component and traverses the fiber tree upwards + // to check whether there is more than one native view as a pseudo-direct child of GestureDetector + // i.e. this is not ok: + // Wrap + // | + // / \ + // / \ + // / \ + // / \ + // NativeView NativeView + // + // but this is fine: + // Wrap + // | + // NativeView + // | + // / \ + // / \ + // / \ + // / \ + // NativeView NativeView + if (__DEV__ && _reactNative.Platform.OS !== 'web') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const wrapType = _utils.REACT_NATIVE_VERSION.minor > 63 || _utils.REACT_NATIVE_VERSION.major > 0 ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + ref._reactInternals.elementType : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + ref._reactInternalFiber.elementType; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + let instance = _RNRenderer.RNRenderer.findHostInstance_DEPRECATED(ref)._internalFiberInstanceHandleDEV; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + + + while (instance && instance.elementType !== wrapType) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (instance.sibling) { + throw new Error('GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a or .'); + } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + + + instance = instance.return; + } + } +} + +const applyUserSelectProp = (userSelect, gesture) => { + for (const g of gesture.toGestureArray()) { + g.config.userSelect = userSelect; + } +}; + +const GestureDetector = props => { + const gestureConfig = props.gesture; + + if (props.userSelect) { + applyUserSelectProp(props.userSelect, gestureConfig); + } + + const gesture = gestureConfig.toGestureArray(); + const useReanimatedHook = gesture.some(g => g.shouldUseReanimated); // store state in ref to prevent unnecessary renders + + const state = (0, _react.useRef)({ + firstRender: true, + viewRef: null, + previousViewTag: -1, + forceReattach: false + }).current; + const mountedRef = (0, _react.useRef)(false); + const webEventHandlersRef = (0, _react.useRef)({ + onGestureHandlerEvent: e => { + (0, _eventReceiver.onGestureHandlerEvent)(e.nativeEvent); + }, + onGestureHandlerStateChange: (0, _EnableExperimentalWebImplementation.isExperimentalWebImplementationEnabled)() ? e => { + (0, _eventReceiver.onGestureHandlerEvent)(e.nativeEvent); + } : undefined + }); + const [renderState, setRenderState] = (0, _react.useState)(false); + + function forceRender() { + setRenderState(!renderState); + } + + const preparedGesture = _react.default.useRef({ + config: gesture, + animatedEventHandler: null, + animatedHandlers: null, + firstExecution: true, + useReanimatedHook: useReanimatedHook + }).current; + + if (useReanimatedHook !== preparedGesture.useReanimatedHook) { + throw new Error((0, _utils.tagMessage)('You cannot change the thread the callbacks are ran on while the app is running')); + } + + function onHandlersUpdate(skipConfigUpdate) { + // if the underlying view has changed we need to reattach handlers to the new view + const viewTag = (0, _gestureHandlerCommon.findNodeHandle)(state.viewRef); + const forceReattach = viewTag !== state.previousViewTag; + + if (forceReattach || needsToReattach(preparedGesture, gesture)) { + validateDetectorChildren(state.viewRef); + dropHandlers(preparedGesture); + attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + webEventHandlersRef, + viewTag, + mountedRef + }); + state.previousViewTag = viewTag; + state.forceReattach = forceReattach; + + if (forceReattach) { + forceRender(); + } + } else if (!skipConfigUpdate) { + updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef); + } + } // Reanimated event should be rebuilt only when gestures are reattached, otherwise + // config update will be enough as all necessary items are stored in shared values anyway + + + const needsToRebuildReanimatedEvent = preparedGesture.firstExecution || needsToReattach(preparedGesture, gesture) || state.forceReattach; + state.forceReattach = false; + + if (preparedGesture.firstExecution) { + gestureConfig.initialize(); + } + + if (useReanimatedHook) { + // Whether animatedGesture or gesture is used shouldn't change while the app is running + // eslint-disable-next-line react-hooks/rules-of-hooks + useAnimatedGesture(preparedGesture, needsToRebuildReanimatedEvent); + } + + (0, _react.useEffect)(() => { + const viewTag = (0, _gestureHandlerCommon.findNodeHandle)(state.viewRef); + state.firstRender = true; + mountedRef.current = true; + validateDetectorChildren(state.viewRef); + attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + webEventHandlersRef, + viewTag, + mountedRef + }); + return () => { + mountedRef.current = false; + dropHandlers(preparedGesture); + }; + }, []); + (0, _react.useEffect)(() => { + if (!state.firstRender) { + onHandlersUpdate(); + } else { + state.firstRender = false; + } + }, [props]); + + const refFunction = ref => { + if (ref !== null) { + // @ts-ignore Just setting the view ref + state.viewRef = ref; // if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed + + if (state.previousViewTag === -1) { + state.previousViewTag = (0, _gestureHandlerCommon.findNodeHandle)(state.viewRef); + } // pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers + // in case the view has changed, while config update would be handled be the `useEffect` above + + + onHandlersUpdate(true); + + if ((0, _utils.isFabric)()) { + const node = (0, _getShadowNodeFromRef.getShadowNodeFromRef)(ref); + + if (global.isFormsStackingContext(node) === false) { + console.error((0, _utils.tagMessage)('GestureDetector has received a child that may get view-flattened. ' + '\nTo prevent it from misbehaving you need to wrap the child with a ``.')); + } + } + } + }; + + if (useReanimatedHook) { + return /*#__PURE__*/_react.default.createElement(AnimatedWrap, { + ref: refFunction, + onGestureHandlerEvent: preparedGesture.animatedEventHandler + }, props.children); + } else { + return /*#__PURE__*/_react.default.createElement(Wrap, { + ref: refFunction + }, props.children); + } +}; + +exports.GestureDetector = GestureDetector; + +class Wrap extends _react.default.Component { + render() { + try { + // I don't think that fighting with types over such a simple function is worth it + // The only thing it does is add 'collapsable: false' to the child component + // to make sure it is in the native view hierarchy so the detector can find + // correct viewTag to attach to. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const child = _react.default.Children.only(this.props.children); + + return /*#__PURE__*/_react.default.cloneElement(child, { + collapsable: false + }, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + child.props.children); + } catch (e) { + throw new Error((0, _utils.tagMessage)(`GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`)); + } + } + +} + +const AnimatedWrap = (_Reanimated$default$c = _reanimatedWrapper.Reanimated === null || _reanimatedWrapper.Reanimated === void 0 ? void 0 : (_Reanimated$default = _reanimatedWrapper.Reanimated.default) === null || _Reanimated$default === void 0 ? void 0 : _Reanimated$default.createAnimatedComponent(Wrap)) !== null && _Reanimated$default$c !== void 0 ? _Reanimated$default$c : Wrap; +//# sourceMappingURL=GestureDetector.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js.map new file mode 100644 index 00000000..d7e81789 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/GestureDetector.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureDetector.tsx"],"names":["ALLOWED_PROPS","baseGestureHandlerWithMonitorProps","tapGestureHandlerProps","panGestureHandlerProps","panGestureHandlerCustomNativeProps","longPressGestureHandlerProps","forceTouchGestureHandlerProps","flingGestureHandlerProps","convertToHandlerTag","ref","BaseGesture","handlerTag","current","extractValidHandlerTags","interactionGroup","map","filter","tag","dropHandlers","preparedGesture","handler","config","RNGestureHandlerModule","dropGestureHandler","testId","checkGestureCallbacksForWorklets","gesture","runOnJS","areSomeNotWorklets","handlers","isWorklet","includes","areSomeWorklets","console","error","attachHandlers","gestureConfig","viewTag","webEventHandlersRef","mountedRef","firstExecution","initialize","setImmediate","prepare","createGestureHandler","handlerName","requireToFail","simultaneousWith","updateGestureHandler","simultaneousHandlers","waitFor","actionType","shouldUseReanimated","ActionType","REANIMATED_WORKLET","JS_FUNCTION_NEW_API","Platform","OS","attachGestureHandler","JS_FUNCTION_OLD_API","animatedHandlers","isAnimatedGesture","g","value","updateHandlers","i","length","previousHandlersValue","newHandlersValue","shouldUpdateSharedValue","gestureId","needsToReattach","isStateChangeEvent","event","oldState","isTouchEvent","eventType","getHandler","type","CALLBACK_TYPE","BEGAN","onBegin","START","onStart","UPDATE","onUpdate","CHANGE","onChange","END","onEnd","FINALIZE","onFinalize","TOUCHES_DOWN","onTouchesDown","TOUCHES_MOVE","onTouchesMove","TOUCHES_UP","onTouchesUp","TOUCHES_CANCELLED","onTouchesCancelled","touchEventTypeToCallbackType","TouchEventType","UNDEFINED","runWorklet","args","warn","useAnimatedGesture","needsRebuild","Reanimated","sharedHandlersCallbacks","useSharedValue","lastUpdateEvent","stateControllers","callback","currentCallback","State","UNDETERMINED","state","ACTIVE","undefined","FAILED","CANCELLED","GestureStateManager","create","changeEventCalculator","useEvent","animatedEventHandler","validateDetectorChildren","__DEV__","wrapType","REACT_NATIVE_VERSION","minor","major","_reactInternals","elementType","_reactInternalFiber","instance","RNRenderer","findHostInstance_DEPRECATED","_internalFiberInstanceHandleDEV","sibling","Error","return","applyUserSelectProp","userSelect","toGestureArray","GestureDetector","props","useReanimatedHook","some","firstRender","viewRef","previousViewTag","forceReattach","onGestureHandlerEvent","e","nativeEvent","onGestureHandlerStateChange","renderState","setRenderState","forceRender","React","useRef","onHandlersUpdate","skipConfigUpdate","needsToRebuildReanimatedEvent","refFunction","node","global","isFormsStackingContext","children","Wrap","Component","render","child","Children","only","cloneElement","collapsable","AnimatedWrap","default","createAnimatedComponent"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n GestureType,\n HandlerCallbacks,\n BaseGesture,\n GestureRef,\n CALLBACK_TYPE,\n} from './gesture';\nimport { Reanimated, SharedValue } from './reanimatedWrapper';\nimport { registerHandler, unregisterHandler } from '../handlersRegistry';\nimport RNGestureHandlerModule from '../../RNGestureHandlerModule';\nimport {\n baseGestureHandlerWithMonitorProps,\n filterConfig,\n findNodeHandle,\n GestureTouchEvent,\n GestureUpdateEvent,\n GestureStateChangeEvent,\n HandlerStateChangeEvent,\n scheduleFlushOperations,\n UserSelect,\n} from '../gestureHandlerCommon';\nimport {\n GestureStateManager,\n GestureStateManagerType,\n} from './gestureStateManager';\nimport { flingGestureHandlerProps } from '../FlingGestureHandler';\nimport { forceTouchGestureHandlerProps } from '../ForceTouchGestureHandler';\nimport { longPressGestureHandlerProps } from '../LongPressGestureHandler';\nimport {\n panGestureHandlerProps,\n panGestureHandlerCustomNativeProps,\n} from '../PanGestureHandler';\nimport { tapGestureHandlerProps } from '../TapGestureHandler';\nimport { State } from '../../State';\nimport { TouchEventType } from '../../TouchEventType';\nimport { ComposedGesture } from './gestureComposition';\nimport { ActionType } from '../../ActionType';\nimport { isFabric, REACT_NATIVE_VERSION, tagMessage } from '../../utils';\nimport { getShadowNodeFromRef } from '../../getShadowNodeFromRef';\nimport { Platform } from 'react-native';\nimport type RNGestureHandlerModuleWeb from '../../RNGestureHandlerModule.web';\nimport { onGestureHandlerEvent } from './eventReceiver';\nimport { RNRenderer } from '../../RNRenderer';\nimport { isExperimentalWebImplementationEnabled } from '../../EnableExperimentalWebImplementation';\n\ndeclare const global: {\n isFormsStackingContext: (node: unknown) => boolean | null; // JSI function\n};\n\nconst ALLOWED_PROPS = [\n ...baseGestureHandlerWithMonitorProps,\n ...tapGestureHandlerProps,\n ...panGestureHandlerProps,\n ...panGestureHandlerCustomNativeProps,\n ...longPressGestureHandlerProps,\n ...forceTouchGestureHandlerProps,\n ...flingGestureHandlerProps,\n];\n\nexport type GestureConfigReference = {\n config: GestureType[];\n animatedEventHandler: unknown;\n animatedHandlers: SharedValue<\n HandlerCallbacks>[] | null\n > | null;\n firstExecution: boolean;\n useReanimatedHook: boolean;\n};\n\nfunction convertToHandlerTag(ref: GestureRef): number {\n if (typeof ref === 'number') {\n return ref;\n } else if (ref instanceof BaseGesture) {\n return ref.handlerTag;\n } else {\n // @ts-ignore in this case it should be a ref either to gesture object or\n // a gesture handler component, in both cases handlerTag property exists\n return ref.current?.handlerTag ?? -1;\n }\n}\n\nfunction extractValidHandlerTags(interactionGroup: GestureRef[] | undefined) {\n return (\n interactionGroup?.map(convertToHandlerTag)?.filter((tag) => tag > 0) ?? []\n );\n}\n\nfunction dropHandlers(preparedGesture: GestureConfigReference) {\n for (const handler of preparedGesture.config) {\n RNGestureHandlerModule.dropGestureHandler(handler.handlerTag);\n\n unregisterHandler(handler.handlerTag, handler.config.testId);\n }\n\n scheduleFlushOperations();\n}\n\nfunction checkGestureCallbacksForWorklets(gesture: GestureType) {\n // if a gesture is explicitly marked to run on the JS thread there is no need to check\n // if callbacks are worklets as the user is aware they will be ran on the JS thread\n if (gesture.config.runOnJS) {\n return;\n }\n\n const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false);\n const areSomeWorklets = gesture.handlers.isWorklet.includes(true);\n\n // if some of the callbacks are worklets and some are not, and the gesture is not\n // explicitly marked with `.runOnJS(true)` show an error\n if (areSomeNotWorklets && areSomeWorklets) {\n console.error(\n tagMessage(\n `Some of the callbacks in the gesture are worklets and some are not. Either make sure that all calbacks are marked as 'worklet' if you wish to run them on the UI thread or use '.runOnJS(true)' modifier on the gesture explicitly to run all callbacks on the JS thread.`\n )\n );\n }\n}\n\ninterface WebEventHandler {\n onGestureHandlerEvent: (event: HandlerStateChangeEvent) => void;\n onGestureHandlerStateChange?: (\n event: HandlerStateChangeEvent\n ) => void;\n}\n\ninterface AttachHandlersConfig {\n preparedGesture: GestureConfigReference;\n gestureConfig: ComposedGesture | GestureType;\n gesture: GestureType[];\n viewTag: number;\n webEventHandlersRef: React.RefObject;\n mountedRef: React.RefObject;\n}\n\nfunction attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n viewTag,\n webEventHandlersRef,\n mountedRef,\n}: AttachHandlersConfig) {\n if (!preparedGesture.firstExecution) {\n gestureConfig.initialize();\n } else {\n preparedGesture.firstExecution = false;\n }\n\n // use setImmediate to extract handlerTags, because all refs should be initialized\n // when it's ran\n setImmediate(() => {\n if (!mountedRef.current) {\n return;\n }\n gestureConfig.prepare();\n });\n\n for (const handler of gesture) {\n checkGestureCallbacksForWorklets(handler);\n RNGestureHandlerModule.createGestureHandler(\n handler.handlerName,\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS)\n );\n\n registerHandler(handler.handlerTag, handler, handler.config.testId);\n }\n\n // use setImmediate to extract handlerTags, because all refs should be initialized\n // when it's ran\n setImmediate(() => {\n if (!mountedRef.current) {\n return;\n }\n for (const handler of gesture) {\n let requireToFail: number[] = [];\n if (handler.config.requireToFail) {\n requireToFail = extractValidHandlerTags(handler.config.requireToFail);\n }\n\n let simultaneousWith: number[] = [];\n if (handler.config.simultaneousWith) {\n simultaneousWith = extractValidHandlerTags(\n handler.config.simultaneousWith\n );\n }\n\n RNGestureHandlerModule.updateGestureHandler(\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS, {\n simultaneousHandlers: simultaneousWith,\n waitFor: requireToFail,\n })\n );\n }\n\n scheduleFlushOperations();\n });\n\n preparedGesture.config = gesture;\n\n for (const gesture of preparedGesture.config) {\n const actionType = gesture.shouldUseReanimated\n ? ActionType.REANIMATED_WORKLET\n : ActionType.JS_FUNCTION_NEW_API;\n\n if (Platform.OS === 'web') {\n (\n RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler\n )(\n gesture.handlerTag,\n viewTag,\n ActionType.JS_FUNCTION_OLD_API, // ignored on web\n webEventHandlersRef\n );\n } else {\n RNGestureHandlerModule.attachGestureHandler(\n gesture.handlerTag,\n viewTag,\n actionType\n );\n }\n }\n\n if (preparedGesture.animatedHandlers) {\n const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated;\n\n preparedGesture.animatedHandlers.value = gesture\n .filter(isAnimatedGesture)\n .map((g) => g.handlers) as unknown as HandlerCallbacks<\n Record\n >[];\n }\n}\n\nfunction updateHandlers(\n preparedGesture: GestureConfigReference,\n gestureConfig: ComposedGesture | GestureType,\n gesture: GestureType[],\n mountedRef: React.RefObject\n) {\n gestureConfig.prepare();\n\n for (let i = 0; i < gesture.length; i++) {\n const handler = preparedGesture.config[i];\n checkGestureCallbacksForWorklets(handler);\n\n // only update handlerTag when it's actually different, it may be the same\n // if gesture config object is wrapped with useMemo\n if (gesture[i].handlerTag !== handler.handlerTag) {\n gesture[i].handlerTag = handler.handlerTag;\n gesture[i].handlers.handlerTag = handler.handlerTag;\n }\n }\n\n // use setImmediate to extract handlerTags, because when it's ran, all refs should be updated\n // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait\n // in case of external relations)\n setImmediate(() => {\n if (!mountedRef.current) {\n return;\n }\n for (let i = 0; i < gesture.length; i++) {\n const handler = preparedGesture.config[i];\n\n handler.config = gesture[i].config;\n handler.handlers = gesture[i].handlers;\n\n const requireToFail = extractValidHandlerTags(\n handler.config.requireToFail\n );\n\n const simultaneousWith = extractValidHandlerTags(\n handler.config.simultaneousWith\n );\n\n RNGestureHandlerModule.updateGestureHandler(\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS, {\n simultaneousHandlers: simultaneousWith,\n waitFor: requireToFail,\n })\n );\n\n registerHandler(handler.handlerTag, handler, handler.config.testId);\n }\n\n if (preparedGesture.animatedHandlers) {\n const previousHandlersValue =\n preparedGesture.animatedHandlers.value ?? [];\n const newHandlersValue = preparedGesture.config\n .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI\n .map((g) => g.handlers) as unknown as HandlerCallbacks<\n Record\n >[];\n\n // if amount of gesture configs changes, we need to update the callbacks in shared value\n let shouldUpdateSharedValue =\n previousHandlersValue.length !== newHandlersValue.length;\n\n if (!shouldUpdateSharedValue) {\n // if the amount is the same, we need to check if any of the configs inside has changed\n for (let i = 0; i < newHandlersValue.length; i++) {\n if (\n // we can use the `gestureId` prop as it's unique for every config instance\n newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId\n ) {\n shouldUpdateSharedValue = true;\n break;\n }\n }\n }\n\n if (shouldUpdateSharedValue) {\n preparedGesture.animatedHandlers.value = newHandlersValue;\n }\n }\n\n scheduleFlushOperations();\n });\n}\n\nfunction needsToReattach(\n preparedGesture: GestureConfigReference,\n gesture: GestureType[]\n) {\n if (gesture.length !== preparedGesture.config.length) {\n return true;\n }\n for (let i = 0; i < gesture.length; i++) {\n if (\n gesture[i].handlerName !== preparedGesture.config[i].handlerName ||\n gesture[i].shouldUseReanimated !==\n preparedGesture.config[i].shouldUseReanimated\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isStateChangeEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureStateChangeEvent {\n 'worklet';\n // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point\n return event.oldState != null;\n}\n\nfunction isTouchEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureTouchEvent {\n 'worklet';\n return event.eventType != null;\n}\n\nfunction getHandler(\n type: CALLBACK_TYPE,\n gesture: HandlerCallbacks>\n) {\n 'worklet';\n switch (type) {\n case CALLBACK_TYPE.BEGAN:\n return gesture.onBegin;\n case CALLBACK_TYPE.START:\n return gesture.onStart;\n case CALLBACK_TYPE.UPDATE:\n return gesture.onUpdate;\n case CALLBACK_TYPE.CHANGE:\n return gesture.onChange;\n case CALLBACK_TYPE.END:\n return gesture.onEnd;\n case CALLBACK_TYPE.FINALIZE:\n return gesture.onFinalize;\n case CALLBACK_TYPE.TOUCHES_DOWN:\n return gesture.onTouchesDown;\n case CALLBACK_TYPE.TOUCHES_MOVE:\n return gesture.onTouchesMove;\n case CALLBACK_TYPE.TOUCHES_UP:\n return gesture.onTouchesUp;\n case CALLBACK_TYPE.TOUCHES_CANCELLED:\n return gesture.onTouchesCancelled;\n }\n}\n\nfunction touchEventTypeToCallbackType(\n eventType: TouchEventType\n): CALLBACK_TYPE {\n 'worklet';\n switch (eventType) {\n case TouchEventType.TOUCHES_DOWN:\n return CALLBACK_TYPE.TOUCHES_DOWN;\n case TouchEventType.TOUCHES_MOVE:\n return CALLBACK_TYPE.TOUCHES_MOVE;\n case TouchEventType.TOUCHES_UP:\n return CALLBACK_TYPE.TOUCHES_UP;\n case TouchEventType.TOUCHES_CANCELLED:\n return CALLBACK_TYPE.TOUCHES_CANCELLED;\n }\n return CALLBACK_TYPE.UNDEFINED;\n}\n\nfunction runWorklet(\n type: CALLBACK_TYPE,\n gesture: HandlerCallbacks>,\n event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent,\n ...args: any[]\n) {\n 'worklet';\n const handler = getHandler(type, gesture);\n if (gesture.isWorklet[type]) {\n // @ts-ignore Logic below makes sure the correct event is send to the\n // correct handler.\n handler?.(event, ...args);\n } else if (handler) {\n console.warn(tagMessage('Animated gesture callback must be a worklet'));\n }\n}\n\nfunction useAnimatedGesture(\n preparedGesture: GestureConfigReference,\n needsRebuild: boolean\n) {\n if (!Reanimated) {\n return;\n }\n\n // Hooks are called conditionally, but the condition is whether the\n // react-native-reanimated is installed, which shouldn't change while running\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const sharedHandlersCallbacks = Reanimated.useSharedValue<\n HandlerCallbacks>[] | null\n >(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const lastUpdateEvent = Reanimated.useSharedValue<\n (GestureUpdateEvent | undefined)[]\n >([]);\n\n // not every gesture needs a state controller, init them lazily\n const stateControllers: GestureStateManagerType[] = [];\n\n const callback = (\n event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent\n ) => {\n 'worklet';\n\n const currentCallback = sharedHandlersCallbacks.value;\n if (!currentCallback) {\n return;\n }\n\n for (let i = 0; i < currentCallback.length; i++) {\n const gesture = currentCallback[i];\n\n if (event.handlerTag === gesture.handlerTag) {\n if (isStateChangeEvent(event)) {\n if (\n event.oldState === State.UNDETERMINED &&\n event.state === State.BEGAN\n ) {\n runWorklet(CALLBACK_TYPE.BEGAN, gesture, event);\n } else if (\n (event.oldState === State.BEGAN ||\n event.oldState === State.UNDETERMINED) &&\n event.state === State.ACTIVE\n ) {\n runWorklet(CALLBACK_TYPE.START, gesture, event);\n lastUpdateEvent.value[gesture.handlerTag] = undefined;\n } else if (\n event.oldState !== event.state &&\n event.state === State.END\n ) {\n if (event.oldState === State.ACTIVE) {\n runWorklet(CALLBACK_TYPE.END, gesture, event, true);\n }\n runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, true);\n } else if (\n (event.state === State.FAILED || event.state === State.CANCELLED) &&\n event.state !== event.oldState\n ) {\n if (event.oldState === State.ACTIVE) {\n runWorklet(CALLBACK_TYPE.END, gesture, event, false);\n }\n runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false);\n }\n } else if (isTouchEvent(event)) {\n if (!stateControllers[i]) {\n stateControllers[i] = GestureStateManager.create(event.handlerTag);\n }\n\n if (event.eventType !== TouchEventType.UNDETERMINED) {\n runWorklet(\n touchEventTypeToCallbackType(event.eventType),\n gesture,\n event,\n stateControllers[i]\n );\n }\n } else {\n runWorklet(CALLBACK_TYPE.UPDATE, gesture, event);\n\n if (gesture.onChange && gesture.changeEventCalculator) {\n runWorklet(\n CALLBACK_TYPE.CHANGE,\n gesture,\n gesture.changeEventCalculator?.(\n event,\n lastUpdateEvent.value[gesture.handlerTag]\n )\n );\n\n lastUpdateEvent.value[gesture.handlerTag] = event;\n }\n }\n }\n }\n };\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const event = Reanimated.useEvent(\n callback,\n ['onGestureHandlerStateChange', 'onGestureHandlerEvent'],\n needsRebuild\n );\n\n preparedGesture.animatedEventHandler = event;\n preparedGesture.animatedHandlers = sharedHandlersCallbacks;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateDetectorChildren(ref: any) {\n // finds the first native view under the Wrap component and traverses the fiber tree upwards\n // to check whether there is more than one native view as a pseudo-direct child of GestureDetector\n // i.e. this is not ok:\n // Wrap\n // |\n // / \\\n // / \\\n // / \\\n // / \\\n // NativeView NativeView\n //\n // but this is fine:\n // Wrap\n // |\n // NativeView\n // |\n // / \\\n // / \\\n // / \\\n // / \\\n // NativeView NativeView\n if (__DEV__ && Platform.OS !== 'web') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const wrapType =\n REACT_NATIVE_VERSION.minor > 63 || REACT_NATIVE_VERSION.major > 0\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ref._reactInternals.elementType\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ref._reactInternalFiber.elementType;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let instance =\n RNRenderer.findHostInstance_DEPRECATED(\n ref\n )._internalFiberInstanceHandleDEV;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n while (instance && instance.elementType !== wrapType) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (instance.sibling) {\n throw new Error(\n 'GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a or .'\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n instance = instance.return;\n }\n }\n}\n\nconst applyUserSelectProp = (\n userSelect: UserSelect,\n gesture: ComposedGesture | GestureType\n): void => {\n for (const g of gesture.toGestureArray()) {\n g.config.userSelect = userSelect;\n }\n};\n\ninterface GestureDetectorProps {\n gesture: ComposedGesture | GestureType;\n userSelect?: UserSelect;\n children?: React.ReactNode;\n}\ninterface GestureDetectorState {\n firstRender: boolean;\n viewRef: React.Component | null;\n previousViewTag: number;\n forceReattach: boolean;\n}\nexport const GestureDetector = (props: GestureDetectorProps) => {\n const gestureConfig = props.gesture;\n\n if (props.userSelect) {\n applyUserSelectProp(props.userSelect, gestureConfig);\n }\n\n const gesture = gestureConfig.toGestureArray();\n const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);\n\n // store state in ref to prevent unnecessary renders\n const state = useRef({\n firstRender: true,\n viewRef: null,\n previousViewTag: -1,\n forceReattach: false,\n }).current;\n const mountedRef = useRef(false);\n const webEventHandlersRef = useRef({\n onGestureHandlerEvent: (e: HandlerStateChangeEvent) => {\n onGestureHandlerEvent(e.nativeEvent);\n },\n onGestureHandlerStateChange: isExperimentalWebImplementationEnabled()\n ? (e: HandlerStateChangeEvent) => {\n onGestureHandlerEvent(e.nativeEvent);\n }\n : undefined,\n });\n\n const [renderState, setRenderState] = useState(false);\n function forceRender() {\n setRenderState(!renderState);\n }\n\n const preparedGesture = React.useRef({\n config: gesture,\n animatedEventHandler: null,\n animatedHandlers: null,\n firstExecution: true,\n useReanimatedHook: useReanimatedHook,\n }).current;\n\n if (useReanimatedHook !== preparedGesture.useReanimatedHook) {\n throw new Error(\n tagMessage(\n 'You cannot change the thread the callbacks are ran on while the app is running'\n )\n );\n }\n\n function onHandlersUpdate(skipConfigUpdate?: boolean) {\n // if the underlying view has changed we need to reattach handlers to the new view\n const viewTag = findNodeHandle(state.viewRef) as number;\n const forceReattach = viewTag !== state.previousViewTag;\n\n if (forceReattach || needsToReattach(preparedGesture, gesture)) {\n validateDetectorChildren(state.viewRef);\n dropHandlers(preparedGesture);\n attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n webEventHandlersRef,\n viewTag,\n mountedRef,\n });\n\n state.previousViewTag = viewTag;\n state.forceReattach = forceReattach;\n if (forceReattach) {\n forceRender();\n }\n } else if (!skipConfigUpdate) {\n updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);\n }\n }\n\n // Reanimated event should be rebuilt only when gestures are reattached, otherwise\n // config update will be enough as all necessary items are stored in shared values anyway\n const needsToRebuildReanimatedEvent =\n preparedGesture.firstExecution ||\n needsToReattach(preparedGesture, gesture) ||\n state.forceReattach;\n\n state.forceReattach = false;\n\n if (preparedGesture.firstExecution) {\n gestureConfig.initialize();\n }\n\n if (useReanimatedHook) {\n // Whether animatedGesture or gesture is used shouldn't change while the app is running\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAnimatedGesture(preparedGesture, needsToRebuildReanimatedEvent);\n }\n\n useEffect(() => {\n const viewTag = findNodeHandle(state.viewRef) as number;\n state.firstRender = true;\n mountedRef.current = true;\n\n validateDetectorChildren(state.viewRef);\n\n attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n webEventHandlersRef,\n viewTag,\n mountedRef,\n });\n\n return () => {\n mountedRef.current = false;\n dropHandlers(preparedGesture);\n };\n }, []);\n\n useEffect(() => {\n if (!state.firstRender) {\n onHandlersUpdate();\n } else {\n state.firstRender = false;\n }\n }, [props]);\n\n const refFunction = (ref: unknown) => {\n if (ref !== null) {\n // @ts-ignore Just setting the view ref\n state.viewRef = ref;\n\n // if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed\n if (state.previousViewTag === -1) {\n state.previousViewTag = findNodeHandle(state.viewRef) as number;\n }\n\n // pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers\n // in case the view has changed, while config update would be handled be the `useEffect` above\n onHandlersUpdate(true);\n\n if (isFabric()) {\n const node = getShadowNodeFromRef(ref);\n if (global.isFormsStackingContext(node) === false) {\n console.error(\n tagMessage(\n 'GestureDetector has received a child that may get view-flattened. ' +\n '\\nTo prevent it from misbehaving you need to wrap the child with a ``.'\n )\n );\n }\n }\n }\n };\n\n if (useReanimatedHook) {\n return (\n \n {props.children}\n \n );\n } else {\n return {props.children};\n }\n};\n\nclass Wrap extends React.Component<{\n onGestureHandlerEvent?: unknown;\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?: React.ReactNode;\n}> {\n render() {\n try {\n // I don't think that fighting with types over such a simple function is worth it\n // The only thing it does is add 'collapsable: false' to the child component\n // to make sure it is in the native view hierarchy so the detector can find\n // correct viewTag to attach to.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child: any = React.Children.only(this.props.children);\n return React.cloneElement(\n child,\n { collapsable: false },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n child.props.children\n );\n } catch (e) {\n throw new Error(\n tagMessage(\n `GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`\n )\n );\n }\n }\n}\n\nconst AnimatedWrap = Reanimated?.default?.createAnimatedComponent(Wrap) ?? Wrap;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js new file mode 100644 index 00000000..7496fe81 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js @@ -0,0 +1,147 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.onGestureHandlerEvent = onGestureHandlerEvent; +exports.startListening = startListening; +exports.stopListening = stopListening; + +var _reactNative = require("react-native"); + +var _State = require("../../State"); + +var _TouchEventType = require("../../TouchEventType"); + +var _handlersRegistry = require("../handlersRegistry"); + +var _gestureStateManager = require("./gestureStateManager"); + +let gestureHandlerEventSubscription = null; +let gestureHandlerStateChangeEventSubscription = null; +const gestureStateManagers = new Map(); +const lastUpdateEvent = []; + +function isStateChangeEvent(event) { + // @ts-ignore oldState doesn't exist on GestureTouchEvent and that's the point + return event.oldState != null; +} + +function isTouchEvent(event) { + return event.eventType != null; +} + +function onGestureHandlerEvent(event) { + var _handler$handlers7, _handler$handlers7$on, _handler$handlers8, _handler$handlers8$on, _handler$handlers9, _handler$handlers9$on, _handler$handlers10, _handler$handlers10$o; + + const handler = (0, _handlersRegistry.findHandler)(event.handlerTag); + + if (handler) { + if (isStateChangeEvent(event)) { + if (event.oldState === _State.State.UNDETERMINED && event.state === _State.State.BEGAN) { + var _handler$handlers$onB, _handler$handlers; + + (_handler$handlers$onB = (_handler$handlers = handler.handlers).onBegin) === null || _handler$handlers$onB === void 0 ? void 0 : _handler$handlers$onB.call(_handler$handlers, event); + } else if ((event.oldState === _State.State.BEGAN || event.oldState === _State.State.UNDETERMINED) && event.state === _State.State.ACTIVE) { + var _handler$handlers$onS, _handler$handlers2; + + (_handler$handlers$onS = (_handler$handlers2 = handler.handlers).onStart) === null || _handler$handlers$onS === void 0 ? void 0 : _handler$handlers$onS.call(_handler$handlers2, event); + lastUpdateEvent[handler.handlers.handlerTag] = event; + } else if (event.oldState !== event.state && event.state === _State.State.END) { + var _handler$handlers$onF, _handler$handlers4; + + if (event.oldState === _State.State.ACTIVE) { + var _handler$handlers$onE, _handler$handlers3; + + (_handler$handlers$onE = (_handler$handlers3 = handler.handlers).onEnd) === null || _handler$handlers$onE === void 0 ? void 0 : _handler$handlers$onE.call(_handler$handlers3, event, true); + } + + (_handler$handlers$onF = (_handler$handlers4 = handler.handlers).onFinalize) === null || _handler$handlers$onF === void 0 ? void 0 : _handler$handlers$onF.call(_handler$handlers4, event, true); + lastUpdateEvent[handler.handlers.handlerTag] = undefined; + } else if ((event.state === _State.State.FAILED || event.state === _State.State.CANCELLED) && event.oldState !== event.state) { + var _handler$handlers$onF2, _handler$handlers6; + + if (event.oldState === _State.State.ACTIVE) { + var _handler$handlers$onE2, _handler$handlers5; + + (_handler$handlers$onE2 = (_handler$handlers5 = handler.handlers).onEnd) === null || _handler$handlers$onE2 === void 0 ? void 0 : _handler$handlers$onE2.call(_handler$handlers5, event, false); + } + + (_handler$handlers$onF2 = (_handler$handlers6 = handler.handlers).onFinalize) === null || _handler$handlers$onF2 === void 0 ? void 0 : _handler$handlers$onF2.call(_handler$handlers6, event, false); + gestureStateManagers.delete(event.handlerTag); + lastUpdateEvent[handler.handlers.handlerTag] = undefined; + } + } else if (isTouchEvent(event)) { + if (!gestureStateManagers.has(event.handlerTag)) { + gestureStateManagers.set(event.handlerTag, _gestureStateManager.GestureStateManager.create(event.handlerTag)); + } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + + + const manager = gestureStateManagers.get(event.handlerTag); + + switch (event.eventType) { + case _TouchEventType.TouchEventType.TOUCHES_DOWN: + (_handler$handlers7 = handler.handlers) === null || _handler$handlers7 === void 0 ? void 0 : (_handler$handlers7$on = _handler$handlers7.onTouchesDown) === null || _handler$handlers7$on === void 0 ? void 0 : _handler$handlers7$on.call(_handler$handlers7, event, manager); + break; + + case _TouchEventType.TouchEventType.TOUCHES_MOVE: + (_handler$handlers8 = handler.handlers) === null || _handler$handlers8 === void 0 ? void 0 : (_handler$handlers8$on = _handler$handlers8.onTouchesMove) === null || _handler$handlers8$on === void 0 ? void 0 : _handler$handlers8$on.call(_handler$handlers8, event, manager); + break; + + case _TouchEventType.TouchEventType.TOUCHES_UP: + (_handler$handlers9 = handler.handlers) === null || _handler$handlers9 === void 0 ? void 0 : (_handler$handlers9$on = _handler$handlers9.onTouchesUp) === null || _handler$handlers9$on === void 0 ? void 0 : _handler$handlers9$on.call(_handler$handlers9, event, manager); + break; + + case _TouchEventType.TouchEventType.TOUCHES_CANCELLED: + (_handler$handlers10 = handler.handlers) === null || _handler$handlers10 === void 0 ? void 0 : (_handler$handlers10$o = _handler$handlers10.onTouchesCancelled) === null || _handler$handlers10$o === void 0 ? void 0 : _handler$handlers10$o.call(_handler$handlers10, event, manager); + break; + } + } else { + var _handler$handlers$onU, _handler$handlers11; + + (_handler$handlers$onU = (_handler$handlers11 = handler.handlers).onUpdate) === null || _handler$handlers$onU === void 0 ? void 0 : _handler$handlers$onU.call(_handler$handlers11, event); + + if (handler.handlers.onChange && handler.handlers.changeEventCalculator) { + var _handler$handlers$onC, _handler$handlers12, _handler$handlers$cha, _handler$handlers13; + + (_handler$handlers$onC = (_handler$handlers12 = handler.handlers).onChange) === null || _handler$handlers$onC === void 0 ? void 0 : _handler$handlers$onC.call(_handler$handlers12, (_handler$handlers$cha = (_handler$handlers13 = handler.handlers).changeEventCalculator) === null || _handler$handlers$cha === void 0 ? void 0 : _handler$handlers$cha.call(_handler$handlers13, event, lastUpdateEvent[handler.handlers.handlerTag])); + lastUpdateEvent[handler.handlers.handlerTag] = event; + } + } + } else { + const oldHandler = (0, _handlersRegistry.findOldGestureHandler)(event.handlerTag); + + if (oldHandler) { + const nativeEvent = { + nativeEvent: event + }; + + if (isStateChangeEvent(event)) { + oldHandler.onGestureStateChange(nativeEvent); + } else { + oldHandler.onGestureEvent(nativeEvent); + } + + return; + } + } +} + +function startListening() { + stopListening(); + gestureHandlerEventSubscription = _reactNative.DeviceEventEmitter.addListener('onGestureHandlerEvent', onGestureHandlerEvent); + gestureHandlerStateChangeEventSubscription = _reactNative.DeviceEventEmitter.addListener('onGestureHandlerStateChange', onGestureHandlerEvent); +} + +function stopListening() { + if (gestureHandlerEventSubscription) { + gestureHandlerEventSubscription.remove(); + gestureHandlerEventSubscription = null; + } + + if (gestureHandlerStateChangeEventSubscription) { + gestureHandlerStateChangeEventSubscription.remove(); + gestureHandlerStateChangeEventSubscription = null; + } +} +//# sourceMappingURL=eventReceiver.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js.map new file mode 100644 index 00000000..b27a69d4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/eventReceiver.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["eventReceiver.ts"],"names":["gestureHandlerEventSubscription","gestureHandlerStateChangeEventSubscription","gestureStateManagers","Map","lastUpdateEvent","isStateChangeEvent","event","oldState","isTouchEvent","eventType","onGestureHandlerEvent","handler","handlerTag","State","UNDETERMINED","state","BEGAN","handlers","onBegin","ACTIVE","onStart","END","onEnd","onFinalize","undefined","FAILED","CANCELLED","delete","has","set","GestureStateManager","create","manager","get","TouchEventType","TOUCHES_DOWN","onTouchesDown","TOUCHES_MOVE","onTouchesMove","TOUCHES_UP","onTouchesUp","TOUCHES_CANCELLED","onTouchesCancelled","onUpdate","onChange","changeEventCalculator","oldHandler","nativeEvent","onGestureStateChange","onGestureEvent","startListening","stopListening","DeviceEventEmitter","addListener","remove"],"mappings":"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","sourcesContent":["import { DeviceEventEmitter, EmitterSubscription } from 'react-native';\nimport { State } from '../../State';\nimport { TouchEventType } from '../../TouchEventType';\nimport {\n GestureTouchEvent,\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from '../gestureHandlerCommon';\nimport { findHandler, findOldGestureHandler } from '../handlersRegistry';\nimport { BaseGesture } from './gesture';\nimport {\n GestureStateManager,\n GestureStateManagerType,\n} from './gestureStateManager';\n\nlet gestureHandlerEventSubscription: EmitterSubscription | null = null;\nlet gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =\n null;\n\nconst gestureStateManagers: Map = new Map<\n number,\n GestureStateManagerType\n>();\n\nconst lastUpdateEvent: (GestureUpdateEvent | undefined)[] = [];\n\nfunction isStateChangeEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureStateChangeEvent {\n // @ts-ignore oldState doesn't exist on GestureTouchEvent and that's the point\n return event.oldState != null;\n}\n\nfunction isTouchEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureTouchEvent {\n return event.eventType != null;\n}\n\nexport function onGestureHandlerEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n) {\n const handler = findHandler(event.handlerTag) as BaseGesture<\n Record\n >;\n\n if (handler) {\n if (isStateChangeEvent(event)) {\n if (\n event.oldState === State.UNDETERMINED &&\n event.state === State.BEGAN\n ) {\n handler.handlers.onBegin?.(event);\n } else if (\n (event.oldState === State.BEGAN ||\n event.oldState === State.UNDETERMINED) &&\n event.state === State.ACTIVE\n ) {\n handler.handlers.onStart?.(event);\n lastUpdateEvent[handler.handlers.handlerTag] = event;\n } else if (event.oldState !== event.state && event.state === State.END) {\n if (event.oldState === State.ACTIVE) {\n handler.handlers.onEnd?.(event, true);\n }\n handler.handlers.onFinalize?.(event, true);\n lastUpdateEvent[handler.handlers.handlerTag] = undefined;\n } else if (\n (event.state === State.FAILED || event.state === State.CANCELLED) &&\n event.oldState !== event.state\n ) {\n if (event.oldState === State.ACTIVE) {\n handler.handlers.onEnd?.(event, false);\n }\n handler.handlers.onFinalize?.(event, false);\n gestureStateManagers.delete(event.handlerTag);\n lastUpdateEvent[handler.handlers.handlerTag] = undefined;\n }\n } else if (isTouchEvent(event)) {\n if (!gestureStateManagers.has(event.handlerTag)) {\n gestureStateManagers.set(\n event.handlerTag,\n GestureStateManager.create(event.handlerTag)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const manager = gestureStateManagers.get(event.handlerTag)!;\n\n switch (event.eventType) {\n case TouchEventType.TOUCHES_DOWN:\n handler.handlers?.onTouchesDown?.(event, manager);\n break;\n case TouchEventType.TOUCHES_MOVE:\n handler.handlers?.onTouchesMove?.(event, manager);\n break;\n case TouchEventType.TOUCHES_UP:\n handler.handlers?.onTouchesUp?.(event, manager);\n break;\n case TouchEventType.TOUCHES_CANCELLED:\n handler.handlers?.onTouchesCancelled?.(event, manager);\n break;\n }\n } else {\n handler.handlers.onUpdate?.(event);\n\n if (handler.handlers.onChange && handler.handlers.changeEventCalculator) {\n handler.handlers.onChange?.(\n handler.handlers.changeEventCalculator?.(\n event,\n lastUpdateEvent[handler.handlers.handlerTag]\n )\n );\n\n lastUpdateEvent[handler.handlers.handlerTag] = event;\n }\n }\n } else {\n const oldHandler = findOldGestureHandler(event.handlerTag);\n if (oldHandler) {\n const nativeEvent = { nativeEvent: event };\n if (isStateChangeEvent(event)) {\n oldHandler.onGestureStateChange(nativeEvent);\n } else {\n oldHandler.onGestureEvent(nativeEvent);\n }\n return;\n }\n }\n}\n\nexport function startListening() {\n stopListening();\n\n gestureHandlerEventSubscription = DeviceEventEmitter.addListener(\n 'onGestureHandlerEvent',\n onGestureHandlerEvent\n );\n\n gestureHandlerStateChangeEventSubscription = DeviceEventEmitter.addListener(\n 'onGestureHandlerStateChange',\n onGestureHandlerEvent\n );\n}\n\nexport function stopListening() {\n if (gestureHandlerEventSubscription) {\n gestureHandlerEventSubscription.remove();\n gestureHandlerEventSubscription = null;\n }\n\n if (gestureHandlerStateChangeEventSubscription) {\n gestureHandlerStateChangeEventSubscription.remove();\n gestureHandlerStateChangeEventSubscription = null;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js new file mode 100644 index 00000000..4deac4cf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js @@ -0,0 +1,34 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FlingGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class FlingGesture extends _gesture.BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'FlingGestureHandler'; + } + + numberOfPointers(pointers) { + this.config.numberOfPointers = pointers; + return this; + } + + direction(direction) { + this.config.direction = direction; + return this; + } + +} + +exports.FlingGesture = FlingGesture; +//# sourceMappingURL=flingGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js.map new file mode 100644 index 00000000..074539a6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/flingGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["flingGesture.ts"],"names":["FlingGesture","BaseGesture","constructor","handlerName","numberOfPointers","pointers","config","direction"],"mappings":";;;;;;;AAAA;;;;AAMO,MAAMA,YAAN,SAA2BC,oBAA3B,CAAwE;AAG7EC,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF0C,EAE1C;;AAGZ,SAAKC,WAAL,GAAmB,qBAAnB;AACD;;AAEDC,EAAAA,gBAAgB,CAACC,QAAD,EAAmB;AACjC,SAAKC,MAAL,CAAYF,gBAAZ,GAA+BC,QAA/B;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,SAAS,CAACA,SAAD,EAAoB;AAC3B,SAAKD,MAAL,CAAYC,SAAZ,GAAwBA,SAAxB;AACA,WAAO,IAAP;AACD;;AAjB4E","sourcesContent":["import { BaseGesture, BaseGestureConfig } from './gesture';\nimport {\n FlingGestureConfig,\n FlingGestureHandlerEventPayload,\n} from '../FlingGestureHandler';\n\nexport class FlingGesture extends BaseGesture {\n public config: BaseGestureConfig & FlingGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'FlingGestureHandler';\n }\n\n numberOfPointers(pointers: number) {\n this.config.numberOfPointers = pointers;\n return this;\n }\n\n direction(direction: number) {\n this.config.direction = direction;\n return this;\n }\n}\n\nexport type FlingGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js new file mode 100644 index 00000000..5dbd1c5d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js @@ -0,0 +1,65 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ForceTouchGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + forceChange: current.force + }; + } else { + changePayload = { + forceChange: current.force - previous.force + }; + } + + return { ...current, + ...changePayload + }; +} + +class ForceTouchGesture extends _gesture.ContinousBaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'ForceTouchGestureHandler'; + } + + minForce(force) { + this.config.minForce = force; + return this; + } + + maxForce(force) { + this.config.maxForce = force; + return this; + } + + feedbackOnActivation(value) { + this.config.feedbackOnActivation = value; + return this; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} + +exports.ForceTouchGesture = ForceTouchGesture; +//# sourceMappingURL=forceTouchGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js.map new file mode 100644 index 00000000..28ff81a3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/forceTouchGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["forceTouchGesture.ts"],"names":["changeEventCalculator","current","previous","changePayload","undefined","forceChange","force","ForceTouchGesture","ContinousBaseGesture","constructor","handlerName","minForce","config","maxForce","feedbackOnActivation","value","onChange","callback","handlers"],"mappings":";;;;;;;AAAA;;;;AAWA,SAASA,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK;AADP,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK,KAAR,GAAgBJ,QAAQ,CAACI;AADxB,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAEM,MAAMI,iBAAN,SAAgCC,6BAAhC,CAGL;AAGAC,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF+C,EAE/C;;AAGZ,SAAKC,WAAL,GAAmB,0BAAnB;AACD;;AAEDC,EAAAA,QAAQ,CAACL,KAAD,EAAgB;AACtB,SAAKM,MAAL,CAAYD,QAAZ,GAAuBL,KAAvB;AACA,WAAO,IAAP;AACD;;AAEDO,EAAAA,QAAQ,CAACP,KAAD,EAAgB;AACtB,SAAKM,MAAL,CAAYC,QAAZ,GAAuBP,KAAvB;AACA,WAAO,IAAP;AACD;;AAEDQ,EAAAA,oBAAoB,CAACC,KAAD,EAAiB;AACnC,SAAKH,MAAL,CAAYE,oBAAZ,GAAmCC,KAAnC;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EASN;AACA;AACA,SAAKC,QAAL,CAAclB,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMgB,QAAN,CAAeC,QAAf,CAAP;AACD;;AArCD","sourcesContent":["import { BaseGestureConfig, ContinousBaseGesture } from './gesture';\nimport {\n ForceTouchGestureConfig,\n ForceTouchGestureHandlerEventPayload,\n} from '../ForceTouchGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\nexport type ForceTouchGestureChangeEventPayload = {\n forceChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: ForceTouchGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n forceChange: current.force,\n };\n } else {\n changePayload = {\n forceChange: current.force - previous.force,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class ForceTouchGesture extends ContinousBaseGesture<\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureChangeEventPayload\n> {\n public config: BaseGestureConfig & ForceTouchGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'ForceTouchGestureHandler';\n }\n\n minForce(force: number) {\n this.config.minForce = force;\n return this;\n }\n\n maxForce(force: number) {\n this.config.maxForce = force;\n return this;\n }\n\n feedbackOnActivation(value: boolean) {\n this.config.feedbackOnActivation = value;\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n GestureUpdateEvent<\n ForceTouchGestureHandlerEventPayload &\n ForceTouchGestureChangeEventPayload\n >\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type ForceTouchGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js new file mode 100644 index 00000000..65f0e899 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js @@ -0,0 +1,228 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ContinousBaseGesture = exports.BaseGesture = exports.Gesture = exports.CALLBACK_TYPE = void 0; + +var _handlersRegistry = require("../handlersRegistry"); + +var _utils = require("../../utils"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const CALLBACK_TYPE = { + UNDEFINED: 0, + BEGAN: 1, + START: 2, + UPDATE: 3, + CHANGE: 4, + END: 5, + FINALIZE: 6, + TOUCHES_DOWN: 7, + TOUCHES_MOVE: 8, + TOUCHES_UP: 9, + TOUCHES_CANCELLED: 10 +}; // Allow using CALLBACK_TYPE as object and type +// eslint-disable-next-line @typescript-eslint/no-redeclare + +exports.CALLBACK_TYPE = CALLBACK_TYPE; + +class Gesture {} + +exports.Gesture = Gesture; +let nextGestureId = 0; + +class BaseGesture extends Gesture { + constructor() { + super(); // Used to check whether the gesture config has been updated when wrapping it + // with `useMemo`. Since every config will have a unique id, when the dependencies + // don't change, the config won't be recreated and the id will stay the same. + // If the id is different, it means that the config has changed and the gesture + // needs to be updated. + + _defineProperty(this, "gestureId", -1); + + _defineProperty(this, "handlerTag", -1); + + _defineProperty(this, "handlerName", ''); + + _defineProperty(this, "config", {}); + + _defineProperty(this, "handlers", { + gestureId: -1, + handlerTag: -1, + isWorklet: [] + }); + + this.gestureId = nextGestureId++; + this.handlers.gestureId = this.gestureId; + } + + addDependency(key, gesture) { + const value = this.config[key]; + this.config[key] = value ? Array().concat(value, gesture) : [gesture]; + } + + withRef(ref) { + this.config.ref = ref; + return this; + } // eslint-disable-next-line @typescript-eslint/ban-types + + + isWorklet(callback) { + //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + return callback.__workletHash !== undefined; + } + + onBegin(callback) { + this.handlers.onBegin = callback; + this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback); + return this; + } + + onStart(callback) { + this.handlers.onStart = callback; + this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback); + return this; + } + + onEnd(callback) { + this.handlers.onEnd = callback; //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + + this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback); + return this; + } + + onFinalize(callback) { + this.handlers.onFinalize = callback; //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + + this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback); + return this; + } + + onTouchesDown(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesDown = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] = this.isWorklet(callback); + return this; + } + + onTouchesMove(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesMove = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] = this.isWorklet(callback); + return this; + } + + onTouchesUp(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesUp = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] = this.isWorklet(callback); + return this; + } + + onTouchesCancelled(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesCancelled = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] = this.isWorklet(callback); + return this; + } + + enabled(enabled) { + this.config.enabled = enabled; + return this; + } + + shouldCancelWhenOutside(value) { + this.config.shouldCancelWhenOutside = value; + return this; + } + + hitSlop(hitSlop) { + this.config.hitSlop = hitSlop; + return this; + } + + runOnJS(runOnJS) { + this.config.runOnJS = runOnJS; + return this; + } + + simultaneousWithExternalGesture(...gestures) { + for (const gesture of gestures) { + this.addDependency('simultaneousWith', gesture); + } + + return this; + } + + requireExternalGestureToFail(...gestures) { + for (const gesture of gestures) { + this.addDependency('requireToFail', gesture); + } + + return this; + } + + withTestId(id) { + this.config.testId = id; + return this; + } + + cancelsTouchesInView(value) { + this.config.cancelsTouchesInView = value; + return this; + } + + initialize() { + this.handlerTag = (0, _handlersRegistry.getNextHandlerTag)(); + this.handlers = { ...this.handlers, + handlerTag: this.handlerTag + }; + + if (this.config.ref) { + this.config.ref.current = this; + } + } + + toGestureArray() { + return [this]; + } // eslint-disable-next-line @typescript-eslint/no-empty-function + + + prepare() {} + + get shouldUseReanimated() { + // use Reanimated when runOnJS isn't set explicitly, + // and all defined callbacks are worklets, + // and remote debugging is disabled + return this.config.runOnJS !== true && !this.handlers.isWorklet.includes(false) && !(0, _utils.isRemoteDebuggingEnabled)(); + } + +} + +exports.BaseGesture = BaseGesture; + +class ContinousBaseGesture extends BaseGesture { + onUpdate(callback) { + this.handlers.onUpdate = callback; + this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback); + return this; + } + + onChange(callback) { + this.handlers.onChange = callback; + this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback); + return this; + } + + manualActivation(manualActivation) { + this.config.manualActivation = manualActivation; + return this; + } + +} + +exports.ContinousBaseGesture = ContinousBaseGesture; +//# sourceMappingURL=gesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js.map new file mode 100644 index 00000000..5277625b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gesture.ts"],"names":["CALLBACK_TYPE","UNDEFINED","BEGAN","START","UPDATE","CHANGE","END","FINALIZE","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED","Gesture","nextGestureId","BaseGesture","constructor","gestureId","handlerTag","isWorklet","handlers","addDependency","key","gesture","value","config","Array","concat","withRef","ref","callback","__workletHash","undefined","onBegin","onStart","onEnd","onFinalize","onTouchesDown","needsPointerData","onTouchesMove","onTouchesUp","onTouchesCancelled","enabled","shouldCancelWhenOutside","hitSlop","runOnJS","simultaneousWithExternalGesture","gestures","requireExternalGestureToFail","withTestId","id","testId","cancelsTouchesInView","initialize","current","toGestureArray","prepare","shouldUseReanimated","includes","ContinousBaseGesture","onUpdate","onChange","manualActivation"],"mappings":"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","sourcesContent":["import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';\nimport { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';\nimport {\n HitSlop,\n CommonGestureConfig,\n GestureTouchEvent,\n GestureStateChangeEvent,\n GestureUpdateEvent,\n} from '../gestureHandlerCommon';\nimport { getNextHandlerTag } from '../handlersRegistry';\nimport { GestureStateManagerType } from './gestureStateManager';\nimport { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';\nimport { PanGestureHandlerEventPayload } from '../PanGestureHandler';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { TapGestureHandlerEventPayload } from '../TapGestureHandler';\nimport { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler';\nimport { isRemoteDebuggingEnabled } from '../../utils';\n\nexport type GestureType =\n | BaseGesture>\n | BaseGesture>\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture;\n\nexport type GestureRef =\n | number\n | GestureType\n | React.RefObject\n | React.RefObject; // allow adding a ref to a gesture handler\nexport interface BaseGestureConfig\n extends CommonGestureConfig,\n Record {\n ref?: React.MutableRefObject;\n requireToFail?: GestureRef[];\n simultaneousWith?: GestureRef[];\n needsPointerData?: boolean;\n manualActivation?: boolean;\n runOnJS?: boolean;\n testId?: string;\n cancelsTouchesInView?: boolean;\n}\n\ntype TouchEventHandlerType = (\n event: GestureTouchEvent,\n stateManager: GestureStateManagerType\n) => void;\n\nexport type HandlerCallbacks> = {\n gestureId: number;\n handlerTag: number;\n onBegin?: (event: GestureStateChangeEvent) => void;\n onStart?: (event: GestureStateChangeEvent) => void;\n onEnd?: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void;\n onFinalize?: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void;\n onUpdate?: (event: GestureUpdateEvent) => void;\n onChange?: (event: any) => void;\n onTouchesDown?: TouchEventHandlerType;\n onTouchesMove?: TouchEventHandlerType;\n onTouchesUp?: TouchEventHandlerType;\n onTouchesCancelled?: TouchEventHandlerType;\n changeEventCalculator?: (\n current: GestureUpdateEvent>,\n previous?: GestureUpdateEvent>\n ) => GestureUpdateEvent>;\n isWorklet: boolean[];\n};\n\nexport const CALLBACK_TYPE = {\n UNDEFINED: 0,\n BEGAN: 1,\n START: 2,\n UPDATE: 3,\n CHANGE: 4,\n END: 5,\n FINALIZE: 6,\n TOUCHES_DOWN: 7,\n TOUCHES_MOVE: 8,\n TOUCHES_UP: 9,\n TOUCHES_CANCELLED: 10,\n} as const;\n\n// Allow using CALLBACK_TYPE as object and type\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];\n\nexport abstract class Gesture {\n /**\n * Return array of gestures, providing the same interface for creating and updating\n * handlers, no matter which object was used to create gesture instance.\n */\n abstract toGestureArray(): GestureType[];\n\n /**\n * Assign handlerTag to the gesture instance and set ref.current (if a ref is set)\n */\n abstract initialize(): void;\n\n /**\n * Make sure that values of properties defining relations are arrays. Do any necessary\n * preprocessing required to configure relations between handlers. Called just before\n * updating the handler on the native side.\n */\n abstract prepare(): void;\n}\n\nlet nextGestureId = 0;\nexport abstract class BaseGesture<\n EventPayloadT extends Record\n> extends Gesture {\n private gestureId = -1;\n public handlerTag = -1;\n public handlerName = '';\n public config: BaseGestureConfig = {};\n public handlers: HandlerCallbacks = {\n gestureId: -1,\n handlerTag: -1,\n isWorklet: [],\n };\n\n constructor() {\n super();\n\n // Used to check whether the gesture config has been updated when wrapping it\n // with `useMemo`. Since every config will have a unique id, when the dependencies\n // don't change, the config won't be recreated and the id will stay the same.\n // If the id is different, it means that the config has changed and the gesture\n // needs to be updated.\n this.gestureId = nextGestureId++;\n this.handlers.gestureId = this.gestureId;\n }\n\n private addDependency(\n key: 'simultaneousWith' | 'requireToFail',\n gesture: Exclude\n ) {\n const value = this.config[key];\n this.config[key] = value\n ? Array().concat(value, gesture)\n : [gesture];\n }\n\n withRef(ref: React.MutableRefObject) {\n this.config.ref = ref;\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected isWorklet(callback: Function) {\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n return callback.__workletHash !== undefined;\n }\n\n onBegin(callback: (event: GestureStateChangeEvent) => void) {\n this.handlers.onBegin = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback);\n return this;\n }\n\n onStart(callback: (event: GestureStateChangeEvent) => void) {\n this.handlers.onStart = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback);\n return this;\n }\n\n onEnd(\n callback: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void\n ) {\n this.handlers.onEnd = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback);\n return this;\n }\n\n onFinalize(\n callback: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void\n ) {\n this.handlers.onFinalize = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);\n return this;\n }\n\n onTouchesDown(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesDown = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesMove(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesMove = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesUp(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesUp = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesCancelled(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesCancelled = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =\n this.isWorklet(callback);\n\n return this;\n }\n\n enabled(enabled: boolean) {\n this.config.enabled = enabled;\n return this;\n }\n\n shouldCancelWhenOutside(value: boolean) {\n this.config.shouldCancelWhenOutside = value;\n return this;\n }\n\n hitSlop(hitSlop: HitSlop) {\n this.config.hitSlop = hitSlop;\n return this;\n }\n\n runOnJS(runOnJS: boolean) {\n this.config.runOnJS = runOnJS;\n return this;\n }\n\n simultaneousWithExternalGesture(...gestures: Exclude[]) {\n for (const gesture of gestures) {\n this.addDependency('simultaneousWith', gesture);\n }\n return this;\n }\n\n requireExternalGestureToFail(...gestures: Exclude[]) {\n for (const gesture of gestures) {\n this.addDependency('requireToFail', gesture);\n }\n return this;\n }\n\n withTestId(id: string) {\n this.config.testId = id;\n return this;\n }\n\n cancelsTouchesInView(value: boolean) {\n this.config.cancelsTouchesInView = value;\n return this;\n }\n\n initialize() {\n this.handlerTag = getNextHandlerTag();\n\n this.handlers = { ...this.handlers, handlerTag: this.handlerTag };\n\n if (this.config.ref) {\n this.config.ref.current = this as GestureType;\n }\n }\n\n toGestureArray(): GestureType[] {\n return [this as GestureType];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n prepare() {}\n\n get shouldUseReanimated(): boolean {\n // use Reanimated when runOnJS isn't set explicitly,\n // and all defined callbacks are worklets,\n // and remote debugging is disabled\n return (\n this.config.runOnJS !== true &&\n !this.handlers.isWorklet.includes(false) &&\n !isRemoteDebuggingEnabled()\n );\n }\n}\n\nexport abstract class ContinousBaseGesture<\n EventPayloadT extends Record,\n EventChangePayloadT extends Record\n> extends BaseGesture {\n onUpdate(callback: (event: GestureUpdateEvent) => void) {\n this.handlers.onUpdate = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback);\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent\n ) => void\n ) {\n this.handlers.onChange = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback);\n return this;\n }\n\n manualActivation(manualActivation: boolean) {\n this.config.manualActivation = manualActivation;\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js new file mode 100644 index 00000000..239e1a42 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js @@ -0,0 +1,105 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExclusiveGesture = exports.SimultaneousGesture = exports.ComposedGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function extendRelation(currentRelation, extendWith) { + if (currentRelation === undefined) { + return [...extendWith]; + } else { + return [...currentRelation, ...extendWith]; + } +} + +class ComposedGesture extends _gesture.Gesture { + constructor(...gestures) { + super(); + + _defineProperty(this, "gestures", []); + + _defineProperty(this, "simultaneousGestures", []); + + _defineProperty(this, "requireGesturesToFail", []); + + this.gestures = gestures; + } + + prepareSingleGesture(gesture, simultaneousGestures, requireGesturesToFail) { + if (gesture instanceof _gesture.BaseGesture) { + const newConfig = { ...gesture.config + }; + newConfig.simultaneousWith = extendRelation(newConfig.simultaneousWith, simultaneousGestures); + newConfig.requireToFail = extendRelation(newConfig.requireToFail, requireGesturesToFail); + gesture.config = newConfig; + } else if (gesture instanceof ComposedGesture) { + gesture.simultaneousGestures = simultaneousGestures; + gesture.requireGesturesToFail = requireGesturesToFail; + gesture.prepare(); + } + } + + prepare() { + for (const gesture of this.gestures) { + this.prepareSingleGesture(gesture, this.simultaneousGestures, this.requireGesturesToFail); + } + } + + initialize() { + for (const gesture of this.gestures) { + gesture.initialize(); + } + } + + toGestureArray() { + return this.gestures.flatMap(gesture => gesture.toGestureArray()); + } + +} + +exports.ComposedGesture = ComposedGesture; + +class SimultaneousGesture extends ComposedGesture { + prepare() { + // this piece of magic works something like this: + // for every gesture in the array + const simultaneousArrays = this.gestures.map(gesture => // we take the array it's in + this.gestures // and make a copy without it + .filter(x => x !== gesture) // then we flatmap the result to get list of raw (not composed) gestures + // this way we don't make the gestures simultaneous with themselves, which is + // important when the gesture is `ExclusiveGesture` - we don't want to make + // exclusive gestures simultaneous + .flatMap(x => x.toGestureArray())); + + for (let i = 0; i < this.gestures.length; i++) { + this.prepareSingleGesture(this.gestures[i], simultaneousArrays[i], this.requireGesturesToFail); + } + } + +} + +exports.SimultaneousGesture = SimultaneousGesture; + +class ExclusiveGesture extends ComposedGesture { + prepare() { + // transforms the array of gestures into array of grouped raw (not composed) gestures + // i.e. [gesture1, gesture2, ComposedGesture(gesture3, gesture4)] -> [[gesture1], [gesture2], [gesture3, gesture4]] + const gestureArrays = this.gestures.map(gesture => gesture.toGestureArray()); + let requireToFail = []; + + for (let i = 0; i < this.gestures.length; i++) { + this.prepareSingleGesture(this.gestures[i], this.simultaneousGestures, this.requireGesturesToFail.concat(requireToFail)); // every group gets to wait for all groups before it + + requireToFail = requireToFail.concat(gestureArrays[i]); + } + } + +} + +exports.ExclusiveGesture = ExclusiveGesture; +//# sourceMappingURL=gestureComposition.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js.map new file mode 100644 index 00000000..9a7dc611 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureComposition.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureComposition.ts"],"names":["extendRelation","currentRelation","extendWith","undefined","ComposedGesture","Gesture","constructor","gestures","prepareSingleGesture","gesture","simultaneousGestures","requireGesturesToFail","BaseGesture","newConfig","config","simultaneousWith","requireToFail","prepare","initialize","toGestureArray","flatMap","SimultaneousGesture","simultaneousArrays","map","filter","x","i","length","ExclusiveGesture","gestureArrays","concat"],"mappings":"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","sourcesContent":["import { BaseGesture, Gesture, GestureRef, GestureType } from './gesture';\n\nfunction extendRelation(\n currentRelation: GestureRef[] | undefined,\n extendWith: GestureType[]\n) {\n if (currentRelation === undefined) {\n return [...extendWith];\n } else {\n return [...currentRelation, ...extendWith];\n }\n}\n\nexport class ComposedGesture extends Gesture {\n protected gestures: Gesture[] = [];\n protected simultaneousGestures: GestureType[] = [];\n protected requireGesturesToFail: GestureType[] = [];\n\n constructor(...gestures: Gesture[]) {\n super();\n this.gestures = gestures;\n }\n\n protected prepareSingleGesture(\n gesture: Gesture,\n simultaneousGestures: GestureType[],\n requireGesturesToFail: GestureType[]\n ) {\n if (gesture instanceof BaseGesture) {\n const newConfig = { ...gesture.config };\n\n newConfig.simultaneousWith = extendRelation(\n newConfig.simultaneousWith,\n simultaneousGestures\n );\n newConfig.requireToFail = extendRelation(\n newConfig.requireToFail,\n requireGesturesToFail\n );\n\n gesture.config = newConfig;\n } else if (gesture instanceof ComposedGesture) {\n gesture.simultaneousGestures = simultaneousGestures;\n gesture.requireGesturesToFail = requireGesturesToFail;\n gesture.prepare();\n }\n }\n\n prepare() {\n for (const gesture of this.gestures) {\n this.prepareSingleGesture(\n gesture,\n this.simultaneousGestures,\n this.requireGesturesToFail\n );\n }\n }\n\n initialize() {\n for (const gesture of this.gestures) {\n gesture.initialize();\n }\n }\n\n toGestureArray(): GestureType[] {\n return this.gestures.flatMap((gesture) => gesture.toGestureArray());\n }\n}\n\nexport class SimultaneousGesture extends ComposedGesture {\n prepare() {\n // this piece of magic works something like this:\n // for every gesture in the array\n const simultaneousArrays = this.gestures.map((gesture) =>\n // we take the array it's in\n this.gestures\n // and make a copy without it\n .filter((x) => x !== gesture)\n // then we flatmap the result to get list of raw (not composed) gestures\n // this way we don't make the gestures simultaneous with themselves, which is\n // important when the gesture is `ExclusiveGesture` - we don't want to make\n // exclusive gestures simultaneous\n .flatMap((x) => x.toGestureArray())\n );\n\n for (let i = 0; i < this.gestures.length; i++) {\n this.prepareSingleGesture(\n this.gestures[i],\n simultaneousArrays[i],\n this.requireGesturesToFail\n );\n }\n }\n}\n\nexport class ExclusiveGesture extends ComposedGesture {\n prepare() {\n // transforms the array of gestures into array of grouped raw (not composed) gestures\n // i.e. [gesture1, gesture2, ComposedGesture(gesture3, gesture4)] -> [[gesture1], [gesture2], [gesture3, gesture4]]\n const gestureArrays = this.gestures.map((gesture) =>\n gesture.toGestureArray()\n );\n\n let requireToFail: GestureType[] = [];\n\n for (let i = 0; i < this.gestures.length; i++) {\n this.prepareSingleGesture(\n this.gestures[i],\n this.simultaneousGestures,\n this.requireGesturesToFail.concat(requireToFail)\n );\n\n // every group gets to wait for all groups before it\n requireToFail = requireToFail.concat(gestureArrays[i]);\n }\n }\n}\n\nexport type ComposedGestureType = InstanceType;\nexport type RaceGestureType = ComposedGestureType;\nexport type SimultaneousGestureType = InstanceType;\nexport type ExclusiveGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js new file mode 100644 index 00000000..5bb95112 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js @@ -0,0 +1,85 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GestureObjects = void 0; + +var _flingGesture = require("./flingGesture"); + +var _forceTouchGesture = require("./forceTouchGesture"); + +var _gestureComposition = require("./gestureComposition"); + +var _longPressGesture = require("./longPressGesture"); + +var _panGesture = require("./panGesture"); + +var _pinchGesture = require("./pinchGesture"); + +var _rotationGesture = require("./rotationGesture"); + +var _tapGesture = require("./tapGesture"); + +var _nativeGesture = require("./nativeGesture"); + +var _manualGesture = require("./manualGesture"); + +const GestureObjects = { + Tap: () => { + return new _tapGesture.TapGesture(); + }, + Pan: () => { + return new _panGesture.PanGesture(); + }, + Pinch: () => { + return new _pinchGesture.PinchGesture(); + }, + Rotation: () => { + return new _rotationGesture.RotationGesture(); + }, + Fling: () => { + return new _flingGesture.FlingGesture(); + }, + LongPress: () => { + return new _longPressGesture.LongPressGesture(); + }, + ForceTouch: () => { + return new _forceTouchGesture.ForceTouchGesture(); + }, + Native: () => { + return new _nativeGesture.NativeGesture(); + }, + Manual: () => { + return new _manualGesture.ManualGesture(); + }, + + /** + * Builds a composed gesture consisting of gestures provided as parameters. + * The first one that becomes active cancels the rest of gestures. + */ + Race: (...gestures) => { + return new _gestureComposition.ComposedGesture(...gestures); + }, + + /** + * Builds a composed gesture that allows all base gestures to run simultaneously. + */ + Simultaneous(...gestures) { + return new _gestureComposition.SimultaneousGesture(...gestures); + }, + + /** + * Builds a composed gesture where only one of the provided gestures can become active. + * Priority is decided through the order of gestures: the first one has higher priority + * than the second one, second one has higher priority than the third one, and so on. + * For example, to make a gesture that recognizes both single and double tap you need + * to call Exclusive(doubleTap, singleTap). + */ + Exclusive(...gestures) { + return new _gestureComposition.ExclusiveGesture(...gestures); + } + +}; +exports.GestureObjects = GestureObjects; +//# sourceMappingURL=gestureObjects.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js.map new file mode 100644 index 00000000..268c7acb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureObjects.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureObjects.ts"],"names":["GestureObjects","Tap","TapGesture","Pan","PanGesture","Pinch","PinchGesture","Rotation","RotationGesture","Fling","FlingGesture","LongPress","LongPressGesture","ForceTouch","ForceTouchGesture","Native","NativeGesture","Manual","ManualGesture","Race","gestures","ComposedGesture","Simultaneous","SimultaneousGesture","Exclusive","ExclusiveGesture"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,MAAMA,cAAc,GAAG;AAC5BC,EAAAA,GAAG,EAAE,MAAM;AACT,WAAO,IAAIC,sBAAJ,EAAP;AACD,GAH2B;AAK5BC,EAAAA,GAAG,EAAE,MAAM;AACT,WAAO,IAAIC,sBAAJ,EAAP;AACD,GAP2B;AAS5BC,EAAAA,KAAK,EAAE,MAAM;AACX,WAAO,IAAIC,0BAAJ,EAAP;AACD,GAX2B;AAa5BC,EAAAA,QAAQ,EAAE,MAAM;AACd,WAAO,IAAIC,gCAAJ,EAAP;AACD,GAf2B;AAiB5BC,EAAAA,KAAK,EAAE,MAAM;AACX,WAAO,IAAIC,0BAAJ,EAAP;AACD,GAnB2B;AAqB5BC,EAAAA,SAAS,EAAE,MAAM;AACf,WAAO,IAAIC,kCAAJ,EAAP;AACD,GAvB2B;AAyB5BC,EAAAA,UAAU,EAAE,MAAM;AAChB,WAAO,IAAIC,oCAAJ,EAAP;AACD,GA3B2B;AA6B5BC,EAAAA,MAAM,EAAE,MAAM;AACZ,WAAO,IAAIC,4BAAJ,EAAP;AACD,GA/B2B;AAiC5BC,EAAAA,MAAM,EAAE,MAAM;AACZ,WAAO,IAAIC,4BAAJ,EAAP;AACD,GAnC2B;;AAqC5B;AACF;AACA;AACA;AACEC,EAAAA,IAAI,EAAE,CAAC,GAAGC,QAAJ,KAA4B;AAChC,WAAO,IAAIC,mCAAJ,CAAoB,GAAGD,QAAvB,CAAP;AACD,GA3C2B;;AA6C5B;AACF;AACA;AACEE,EAAAA,YAAY,CAAC,GAAGF,QAAJ,EAAyB;AACnC,WAAO,IAAIG,uCAAJ,CAAwB,GAAGH,QAA3B,CAAP;AACD,GAlD2B;;AAoD5B;AACF;AACA;AACA;AACA;AACA;AACA;AACEI,EAAAA,SAAS,CAAC,GAAGJ,QAAJ,EAAyB;AAChC,WAAO,IAAIK,oCAAJ,CAAqB,GAAGL,QAAxB,CAAP;AACD;;AA7D2B,CAAvB","sourcesContent":["import { FlingGesture } from './flingGesture';\nimport { ForceTouchGesture } from './forceTouchGesture';\nimport { Gesture } from './gesture';\nimport {\n ComposedGesture,\n ExclusiveGesture,\n SimultaneousGesture,\n} from './gestureComposition';\nimport { LongPressGesture } from './longPressGesture';\nimport { PanGesture } from './panGesture';\nimport { PinchGesture } from './pinchGesture';\nimport { RotationGesture } from './rotationGesture';\nimport { TapGesture } from './tapGesture';\nimport { NativeGesture } from './nativeGesture';\nimport { ManualGesture } from './manualGesture';\n\nexport const GestureObjects = {\n Tap: () => {\n return new TapGesture();\n },\n\n Pan: () => {\n return new PanGesture();\n },\n\n Pinch: () => {\n return new PinchGesture();\n },\n\n Rotation: () => {\n return new RotationGesture();\n },\n\n Fling: () => {\n return new FlingGesture();\n },\n\n LongPress: () => {\n return new LongPressGesture();\n },\n\n ForceTouch: () => {\n return new ForceTouchGesture();\n },\n\n Native: () => {\n return new NativeGesture();\n },\n\n Manual: () => {\n return new ManualGesture();\n },\n\n /**\n * Builds a composed gesture consisting of gestures provided as parameters.\n * The first one that becomes active cancels the rest of gestures.\n */\n Race: (...gestures: Gesture[]) => {\n return new ComposedGesture(...gestures);\n },\n\n /**\n * Builds a composed gesture that allows all base gestures to run simultaneously.\n */\n Simultaneous(...gestures: Gesture[]) {\n return new SimultaneousGesture(...gestures);\n },\n\n /**\n * Builds a composed gesture where only one of the provided gestures can become active.\n * Priority is decided through the order of gestures: the first one has higher priority\n * than the second one, second one has higher priority than the third one, and so on.\n * For example, to make a gesture that recognizes both single and double tap you need\n * to call Exclusive(doubleTap, singleTap).\n */\n Exclusive(...gestures: Gesture[]) {\n return new ExclusiveGesture(...gestures);\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js new file mode 100644 index 00000000..6d8db65a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js @@ -0,0 +1,65 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GestureStateManager = void 0; + +var _reanimatedWrapper = require("./reanimatedWrapper"); + +var _State = require("../../State"); + +var _utils = require("../../utils"); + +const warningMessage = (0, _utils.tagMessage)('react-native-reanimated is required in order to use synchronous state management'); // check if reanimated module is available, but look for useSharedValue as conditional +// require of reanimated can sometimes return content of `utils.ts` file (?) + +const REANIMATED_AVAILABLE = (_reanimatedWrapper.Reanimated === null || _reanimatedWrapper.Reanimated === void 0 ? void 0 : _reanimatedWrapper.Reanimated.useSharedValue) !== undefined; +const setGestureState = _reanimatedWrapper.Reanimated === null || _reanimatedWrapper.Reanimated === void 0 ? void 0 : _reanimatedWrapper.Reanimated.setGestureState; +const GestureStateManager = { + create(handlerTag) { + 'worklet'; + + return { + begin: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, _State.State.BEGAN); + } else { + console.warn(warningMessage); + } + }, + activate: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, _State.State.ACTIVE); + } else { + console.warn(warningMessage); + } + }, + fail: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, _State.State.FAILED); + } else { + console.warn(warningMessage); + } + }, + end: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, _State.State.END); + } else { + console.warn(warningMessage); + } + } + }; + } + +}; +exports.GestureStateManager = GestureStateManager; +//# sourceMappingURL=gestureStateManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js.map new file mode 100644 index 00000000..e26f0230 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureStateManager.ts"],"names":["warningMessage","REANIMATED_AVAILABLE","useSharedValue","undefined","setGestureState","Reanimated","GestureStateManager","create","handlerTag","begin","State","BEGAN","console","warn","activate","ACTIVE","fail","FAILED","end","END"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AASA,MAAMA,cAAc,GAAG,uBACrB,kFADqB,CAAvB,C,CAIA;AACA;;AACA,MAAMC,oBAAoB,GAAG,6HAAYC,cAAZ,MAA+BC,SAA5D;AACA,MAAMC,eAAe,GAAGC,6BAAH,aAAGA,6BAAH,uBAAGA,8BAAYD,eAApC;AAEO,MAAME,mBAAmB,GAAG;AACjCC,EAAAA,MAAM,CAACC,UAAD,EAA8C;AAClD;;AACA,WAAO;AACLC,MAAAA,KAAK,EAAE,MAAM;AACX;;AACA,YAAIR,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACI,UAAD,EAAaE,aAAMC,KAAnB,CAAf;AACD,SAFD,MAEO;AACLC,UAAAA,OAAO,CAACC,IAAR,CAAab,cAAb;AACD;AACF,OARI;AAULc,MAAAA,QAAQ,EAAE,MAAM;AACd;;AACA,YAAIb,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACI,UAAD,EAAaE,aAAMK,MAAnB,CAAf;AACD,SAFD,MAEO;AACLH,UAAAA,OAAO,CAACC,IAAR,CAAab,cAAb;AACD;AACF,OAjBI;AAmBLgB,MAAAA,IAAI,EAAE,MAAM;AACV;;AACA,YAAIf,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACI,UAAD,EAAaE,aAAMO,MAAnB,CAAf;AACD,SAFD,MAEO;AACLL,UAAAA,OAAO,CAACC,IAAR,CAAab,cAAb;AACD;AACF,OA1BI;AA4BLkB,MAAAA,GAAG,EAAE,MAAM;AACT;;AACA,YAAIjB,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACI,UAAD,EAAaE,aAAMS,GAAnB,CAAf;AACD,SAFD,MAEO;AACLP,UAAAA,OAAO,CAACC,IAAR,CAAab,cAAb;AACD;AACF;AAnCI,KAAP;AAqCD;;AAxCgC,CAA5B","sourcesContent":["import { Reanimated } from './reanimatedWrapper';\nimport { State } from '../../State';\nimport { tagMessage } from '../../utils';\n\nexport interface GestureStateManagerType {\n begin: () => void;\n activate: () => void;\n fail: () => void;\n end: () => void;\n}\n\nconst warningMessage = tagMessage(\n 'react-native-reanimated is required in order to use synchronous state management'\n);\n\n// check if reanimated module is available, but look for useSharedValue as conditional\n// require of reanimated can sometimes return content of `utils.ts` file (?)\nconst REANIMATED_AVAILABLE = Reanimated?.useSharedValue !== undefined;\nconst setGestureState = Reanimated?.setGestureState;\n\nexport const GestureStateManager = {\n create(handlerTag: number): GestureStateManagerType {\n 'worklet';\n return {\n begin: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.BEGAN);\n } else {\n console.warn(warningMessage);\n }\n },\n\n activate: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.ACTIVE);\n } else {\n console.warn(warningMessage);\n }\n },\n\n fail: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.FAILED);\n } else {\n console.warn(warningMessage);\n }\n },\n\n end: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.END);\n } else {\n console.warn(warningMessage);\n }\n },\n };\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js new file mode 100644 index 00000000..93885fdc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GestureStateManager = void 0; + +var _NodeManager = _interopRequireDefault(require("../../web/tools/NodeManager")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const GestureStateManager = { + create(handlerTag) { + return { + begin: () => { + _NodeManager.default.getHandler(handlerTag).begin(); + }, + activate: () => { + _NodeManager.default.getHandler(handlerTag).activate(); + }, + fail: () => { + _NodeManager.default.getHandler(handlerTag).fail(); + }, + end: () => { + _NodeManager.default.getHandler(handlerTag).end(); + } + }; + } + +}; +exports.GestureStateManager = GestureStateManager; +//# sourceMappingURL=gestureStateManager.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map new file mode 100644 index 00000000..09d476b9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureStateManager.web.ts"],"names":["GestureStateManager","create","handlerTag","begin","NodeManager","getHandler","activate","fail","end"],"mappings":";;;;;;;AAAA;;;;AAGO,MAAMA,mBAAmB,GAAG;AACjCC,EAAAA,MAAM,CAACC,UAAD,EAA8C;AAClD,WAAO;AACLC,MAAAA,KAAK,EAAE,MAAM;AACXC,6BAAYC,UAAZ,CAAuBH,UAAvB,EAAmCC,KAAnC;AACD,OAHI;AAKLG,MAAAA,QAAQ,EAAE,MAAM;AACdF,6BAAYC,UAAZ,CAAuBH,UAAvB,EAAmCI,QAAnC;AACD,OAPI;AASLC,MAAAA,IAAI,EAAE,MAAM;AACVH,6BAAYC,UAAZ,CAAuBH,UAAvB,EAAmCK,IAAnC;AACD,OAXI;AAaLC,MAAAA,GAAG,EAAE,MAAM;AACTJ,6BAAYC,UAAZ,CAAuBH,UAAvB,EAAmCM,GAAnC;AACD;AAfI,KAAP;AAiBD;;AAnBgC,CAA5B","sourcesContent":["import NodeManager from '../../web/tools/NodeManager';\nimport { GestureStateManagerType } from './gestureStateManager';\n\nexport const GestureStateManager = {\n create(handlerTag: number): GestureStateManagerType {\n return {\n begin: () => {\n NodeManager.getHandler(handlerTag).begin();\n },\n\n activate: () => {\n NodeManager.getHandler(handlerTag).activate();\n },\n\n fail: () => {\n NodeManager.getHandler(handlerTag).fail();\n },\n\n end: () => {\n NodeManager.getHandler(handlerTag).end();\n },\n };\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js new file mode 100644 index 00000000..810bb8ae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.LongPressGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class LongPressGesture extends _gesture.BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'LongPressGestureHandler'; + this.shouldCancelWhenOutside(true); + } + + minDuration(duration) { + this.config.minDurationMs = duration; + return this; + } + + maxDistance(distance) { + this.config.maxDist = distance; + return this; + } + +} + +exports.LongPressGesture = LongPressGesture; +//# sourceMappingURL=longPressGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js.map new file mode 100644 index 00000000..3aa5919e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/longPressGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["longPressGesture.ts"],"names":["LongPressGesture","BaseGesture","constructor","handlerName","shouldCancelWhenOutside","minDuration","duration","config","minDurationMs","maxDistance","distance","maxDist"],"mappings":";;;;;;;AAAA;;;;AAMO,MAAMA,gBAAN,SAA+BC,oBAA/B,CAAgF;AAGrFC,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF8C,EAE9C;;AAGZ,SAAKC,WAAL,GAAmB,yBAAnB;AACA,SAAKC,uBAAL,CAA6B,IAA7B;AACD;;AAEDC,EAAAA,WAAW,CAACC,QAAD,EAAmB;AAC5B,SAAKC,MAAL,CAAYC,aAAZ,GAA4BF,QAA5B;AACA,WAAO,IAAP;AACD;;AAEDG,EAAAA,WAAW,CAACC,QAAD,EAAmB;AAC5B,SAAKH,MAAL,CAAYI,OAAZ,GAAsBD,QAAtB;AACA,WAAO,IAAP;AACD;;AAlBoF","sourcesContent":["import { BaseGesture, BaseGestureConfig } from './gesture';\nimport {\n LongPressGestureConfig,\n LongPressGestureHandlerEventPayload,\n} from '../LongPressGestureHandler';\n\nexport class LongPressGesture extends BaseGesture {\n public config: BaseGestureConfig & LongPressGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'LongPressGestureHandler';\n this.shouldCancelWhenOutside(true);\n }\n\n minDuration(duration: number) {\n this.config.minDurationMs = duration;\n return this;\n }\n\n maxDistance(distance: number) {\n this.config.maxDist = distance;\n return this;\n }\n}\n\nexport type LongPressGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js new file mode 100644 index 00000000..c7cfaf3d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ManualGesture = void 0; + +var _gesture = require("./gesture"); + +function changeEventCalculator(current, _previous) { + 'worklet'; + + return current; +} + +class ManualGesture extends _gesture.ContinousBaseGesture { + constructor() { + super(); + this.handlerName = 'ManualGestureHandler'; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, Record is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} + +exports.ManualGesture = ManualGesture; +//# sourceMappingURL=manualGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js.map new file mode 100644 index 00000000..4272d439 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/manualGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["manualGesture.ts"],"names":["changeEventCalculator","current","_previous","ManualGesture","ContinousBaseGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":";;;;;;;AACA;;AAEA,SAASA,qBAAT,CACEC,OADF,EAEEC,SAFF,EAGE;AACA;;AACA,SAAOD,OAAP;AACD;;AAEM,MAAME,aAAN,SAA4BC,6BAA5B,CAGL;AACAC,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,sBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAEN;AACA;AACA,SAAKC,QAAL,CAAcT,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMO,QAAN,CAAeC,QAAf,CAAP;AACD;;AAbD","sourcesContent":["import { GestureUpdateEvent } from '../gestureHandlerCommon';\nimport { ContinousBaseGesture } from './gesture';\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent>,\n _previous?: GestureUpdateEvent>\n) {\n 'worklet';\n return current;\n}\n\nexport class ManualGesture extends ContinousBaseGesture<\n Record,\n Record\n> {\n constructor() {\n super();\n\n this.handlerName = 'ManualGestureHandler';\n }\n\n onChange(\n callback: (event: GestureUpdateEvent>) => void\n ) {\n // @ts-ignore TS being overprotective, Record is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type ManualGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js new file mode 100644 index 00000000..7deb3f05 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js @@ -0,0 +1,34 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NativeGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class NativeGesture extends _gesture.BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'NativeViewGestureHandler'; + } + + shouldActivateOnStart(value) { + this.config.shouldActivateOnStart = value; + return this; + } + + disallowInterruption(value) { + this.config.disallowInterruption = value; + return this; + } + +} + +exports.NativeGesture = NativeGesture; +//# sourceMappingURL=nativeGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js.map new file mode 100644 index 00000000..7514e389 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/nativeGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["nativeGesture.ts"],"names":["NativeGesture","BaseGesture","constructor","handlerName","shouldActivateOnStart","value","config","disallowInterruption"],"mappings":";;;;;;;AAAA;;;;AAMO,MAAMA,aAAN,SAA4BC,oBAA5B,CAAyE;AAG9EC,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF+C,EAE/C;;AAGZ,SAAKC,WAAL,GAAmB,0BAAnB;AACD;;AAEDC,EAAAA,qBAAqB,CAACC,KAAD,EAAiB;AACpC,SAAKC,MAAL,CAAYF,qBAAZ,GAAoCC,KAApC;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,oBAAoB,CAACF,KAAD,EAAiB;AACnC,SAAKC,MAAL,CAAYC,oBAAZ,GAAmCF,KAAnC;AACA,WAAO,IAAP;AACD;;AAjB6E","sourcesContent":["import { BaseGestureConfig, BaseGesture } from './gesture';\nimport {\n NativeViewGestureConfig,\n NativeViewGestureHandlerPayload,\n} from '../NativeViewGestureHandler';\n\nexport class NativeGesture extends BaseGesture {\n public config: BaseGestureConfig & NativeViewGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'NativeViewGestureHandler';\n }\n\n shouldActivateOnStart(value: boolean) {\n this.config.shouldActivateOnStart = value;\n return this;\n }\n\n disallowInterruption(value: boolean) {\n this.config.disallowInterruption = value;\n return this;\n }\n}\n\nexport type NativeGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js new file mode 100644 index 00000000..0d1d9876 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js @@ -0,0 +1,149 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PanGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + changeX: current.translationX, + changeY: current.translationY + }; + } else { + changePayload = { + changeX: current.translationX - previous.translationX, + changeY: current.translationY - previous.translationY + }; + } + + return { ...current, + ...changePayload + }; +} + +class PanGesture extends _gesture.ContinousBaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'PanGestureHandler'; + } + + activeOffsetY(offset) { + if (Array.isArray(offset)) { + this.config.activeOffsetYStart = offset[0]; + this.config.activeOffsetYEnd = offset[1]; + } else if (offset < 0) { + this.config.activeOffsetYStart = offset; + } else { + this.config.activeOffsetYEnd = offset; + } + + return this; + } + + activeOffsetX(offset) { + if (Array.isArray(offset)) { + this.config.activeOffsetXStart = offset[0]; + this.config.activeOffsetXEnd = offset[1]; + } else if (offset < 0) { + this.config.activeOffsetXStart = offset; + } else { + this.config.activeOffsetXEnd = offset; + } + + return this; + } + + failOffsetY(offset) { + if (Array.isArray(offset)) { + this.config.failOffsetYStart = offset[0]; + this.config.failOffsetYEnd = offset[1]; + } else if (offset < 0) { + this.config.failOffsetYStart = offset; + } else { + this.config.failOffsetYEnd = offset; + } + + return this; + } + + failOffsetX(offset) { + if (Array.isArray(offset)) { + this.config.failOffsetXStart = offset[0]; + this.config.failOffsetXEnd = offset[1]; + } else if (offset < 0) { + this.config.failOffsetXStart = offset; + } else { + this.config.failOffsetXEnd = offset; + } + + return this; + } + + minPointers(minPointers) { + this.config.minPointers = minPointers; + return this; + } + + maxPointers(maxPointers) { + this.config.maxPointers = maxPointers; + return this; + } + + minDistance(distance) { + this.config.minDist = distance; + return this; + } + + minVelocity(velocity) { + this.config.minVelocity = velocity; + return this; + } + + minVelocityX(velocity) { + this.config.minVelocityX = velocity; + return this; + } + + minVelocityY(velocity) { + this.config.minVelocityY = velocity; + return this; + } + + averageTouches(value) { + this.config.avgTouches = value; + return this; + } + + enableTrackpadTwoFingerGesture(value) { + this.config.enableTrackpadTwoFingerGesture = value; + return this; + } + + activateAfterLongPress(duration) { + this.config.activateAfterLongPress = duration; + return this; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, PanGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} + +exports.PanGesture = PanGesture; +//# sourceMappingURL=panGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js.map new file mode 100644 index 00000000..8fb19687 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/panGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["panGesture.ts"],"names":["changeEventCalculator","current","previous","changePayload","undefined","changeX","translationX","changeY","translationY","PanGesture","ContinousBaseGesture","constructor","handlerName","activeOffsetY","offset","Array","isArray","config","activeOffsetYStart","activeOffsetYEnd","activeOffsetX","activeOffsetXStart","activeOffsetXEnd","failOffsetY","failOffsetYStart","failOffsetYEnd","failOffsetX","failOffsetXStart","failOffsetXEnd","minPointers","maxPointers","minDistance","distance","minDist","minVelocity","velocity","minVelocityX","minVelocityY","averageTouches","value","avgTouches","enableTrackpadTwoFingerGesture","activateAfterLongPress","duration","onChange","callback","handlers"],"mappings":"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","sourcesContent":["import { BaseGestureConfig, ContinousBaseGesture } from './gesture';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\nimport {\n PanGestureConfig,\n PanGestureHandlerEventPayload,\n} from '../PanGestureHandler';\n\nexport type PanGestureChangeEventPayload = {\n changeX: number;\n changeY: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: PanGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n changeX: current.translationX,\n changeY: current.translationY,\n };\n } else {\n changePayload = {\n changeX: current.translationX - previous.translationX,\n changeY: current.translationY - previous.translationY,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class PanGesture extends ContinousBaseGesture<\n PanGestureHandlerEventPayload,\n PanGestureChangeEventPayload\n> {\n public config: BaseGestureConfig & PanGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'PanGestureHandler';\n }\n\n activeOffsetY(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.activeOffsetYStart = offset[0];\n this.config.activeOffsetYEnd = offset[1];\n } else if (offset < 0) {\n this.config.activeOffsetYStart = offset;\n } else {\n this.config.activeOffsetYEnd = offset;\n }\n return this;\n }\n\n activeOffsetX(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.activeOffsetXStart = offset[0];\n this.config.activeOffsetXEnd = offset[1];\n } else if (offset < 0) {\n this.config.activeOffsetXStart = offset;\n } else {\n this.config.activeOffsetXEnd = offset;\n }\n return this;\n }\n\n failOffsetY(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.failOffsetYStart = offset[0];\n this.config.failOffsetYEnd = offset[1];\n } else if (offset < 0) {\n this.config.failOffsetYStart = offset;\n } else {\n this.config.failOffsetYEnd = offset;\n }\n return this;\n }\n\n failOffsetX(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.failOffsetXStart = offset[0];\n this.config.failOffsetXEnd = offset[1];\n } else if (offset < 0) {\n this.config.failOffsetXStart = offset;\n } else {\n this.config.failOffsetXEnd = offset;\n }\n return this;\n }\n\n minPointers(minPointers: number) {\n this.config.minPointers = minPointers;\n return this;\n }\n\n maxPointers(maxPointers: number) {\n this.config.maxPointers = maxPointers;\n return this;\n }\n\n minDistance(distance: number) {\n this.config.minDist = distance;\n return this;\n }\n\n minVelocity(velocity: number) {\n this.config.minVelocity = velocity;\n return this;\n }\n\n minVelocityX(velocity: number) {\n this.config.minVelocityX = velocity;\n return this;\n }\n\n minVelocityY(velocity: number) {\n this.config.minVelocityY = velocity;\n return this;\n }\n\n averageTouches(value: boolean) {\n this.config.avgTouches = value;\n return this;\n }\n\n enableTrackpadTwoFingerGesture(value: boolean) {\n this.config.enableTrackpadTwoFingerGesture = value;\n return this;\n }\n\n activateAfterLongPress(duration: number) {\n this.config.activateAfterLongPress = duration;\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n PanGestureHandlerEventPayload & PanGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, PanGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type PanGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js new file mode 100644 index 00000000..bd51a5ff --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js @@ -0,0 +1,45 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PinchGesture = void 0; + +var _gesture = require("./gesture"); + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + scaleChange: current.scale + }; + } else { + changePayload = { + scaleChange: current.scale / previous.scale + }; + } + + return { ...current, + ...changePayload + }; +} + +class PinchGesture extends _gesture.ContinousBaseGesture { + constructor() { + super(); + this.handlerName = 'PinchGestureHandler'; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, PinchGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} + +exports.PinchGesture = PinchGesture; +//# sourceMappingURL=pinchGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js.map new file mode 100644 index 00000000..806afca7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/pinchGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["pinchGesture.ts"],"names":["changeEventCalculator","current","previous","changePayload","undefined","scaleChange","scale","PinchGesture","ContinousBaseGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":";;;;;;;AAAA;;AAQA,SAASA,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK;AADP,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK,KAAR,GAAgBJ,QAAQ,CAACI;AADxB,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAEM,MAAMI,YAAN,SAA2BC,6BAA3B,CAGL;AACAC,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,qBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAMN;AACA;AACA,SAAKC,QAAL,CAAcb,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMW,QAAN,CAAeC,QAAf,CAAP;AACD;;AAjBD","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\nexport type PinchGestureChangeEventPayload = {\n scaleChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: PinchGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n scaleChange: current.scale,\n };\n } else {\n changePayload = {\n scaleChange: current.scale / previous.scale,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class PinchGesture extends ContinousBaseGesture<\n PinchGestureHandlerEventPayload,\n PinchGestureChangeEventPayload\n> {\n constructor() {\n super();\n\n this.handlerName = 'PinchGestureHandler';\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n PinchGestureHandlerEventPayload & PinchGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, PinchGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type PinchGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js new file mode 100644 index 00000000..3ef491d8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js @@ -0,0 +1,34 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Reanimated = void 0; + +var _utils = require("../../utils"); + +let Reanimated; +exports.Reanimated = Reanimated; + +try { + exports.Reanimated = Reanimated = require('react-native-reanimated'); + + if (!Reanimated.useSharedValue) { + // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not + // reset the module to undefined so we can fallback to the default implementation + exports.Reanimated = Reanimated = undefined; + throw new Error('react-native-reanimated is not found'); + } + + if (!Reanimated.setGestureState) { + Reanimated.setGestureState = () => { + 'worklet'; + + console.warn((0, _utils.tagMessage)('Please use newer version of react-native-reanimated in order to control state of the gestures.')); + }; + } // When 'react-native-reanimated' is not available we want to + // quietly continue + // eslint-disable-next-line no-empty + +} catch (e) {} +//# sourceMappingURL=reanimatedWrapper.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map new file mode 100644 index 00000000..da71923a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["reanimatedWrapper.ts"],"names":["Reanimated","require","useSharedValue","undefined","Error","setGestureState","console","warn","e"],"mappings":";;;;;;;AAKA;;AAMA,IAAIA,UAAJ;;;AAkBA,IAAI;AACF,uBAAAA,UAAU,GAAGC,OAAO,CAAC,yBAAD,CAApB;;AAEA,MAAI,CAACD,UAAU,CAACE,cAAhB,EAAgC;AAC9B;AACA;AACA,yBAAAF,UAAU,GAAGG,SAAb;AACA,UAAM,IAAIC,KAAJ,CAAU,sCAAV,CAAN;AACD;;AAED,MAAI,CAACJ,UAAU,CAACK,eAAhB,EAAiC;AAC/BL,IAAAA,UAAU,CAACK,eAAX,GAA6B,MAAM;AACjC;;AACAC,MAAAA,OAAO,CAACC,IAAR,CACE,uBACE,gGADF,CADF;AAKD,KAPD;AAQD,GAnBC,CAoBF;AACA;AACA;;AACD,CAvBD,CAuBE,OAAOC,CAAP,EAAU,CAAE","sourcesContent":["import { ComponentClass } from 'react';\nimport {\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from '../gestureHandlerCommon';\nimport { tagMessage } from '../../utils';\n\nexport interface SharedValue {\n value: T;\n}\n\nlet Reanimated: {\n default: {\n // Slightly modified definition copied from 'react-native-reanimated'\n // eslint-disable-next-line @typescript-eslint/ban-types\n createAnimatedComponent

(\n component: ComponentClass

,\n options?: unknown\n ): ComponentClass

;\n };\n useEvent: (\n callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void,\n events: string[],\n rebuild: boolean\n ) => unknown;\n useSharedValue: (value: T) => SharedValue;\n setGestureState: (handlerTag: number, newState: number) => void;\n};\n\ntry {\n Reanimated = require('react-native-reanimated');\n\n if (!Reanimated.useSharedValue) {\n // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not\n // reset the module to undefined so we can fallback to the default implementation\n Reanimated = undefined;\n throw new Error('react-native-reanimated is not found');\n }\n\n if (!Reanimated.setGestureState) {\n Reanimated.setGestureState = () => {\n 'worklet';\n console.warn(\n tagMessage(\n 'Please use newer version of react-native-reanimated in order to control state of the gestures.'\n )\n );\n };\n }\n // When 'react-native-reanimated' is not available we want to\n // quietly continue\n // eslint-disable-next-line no-empty\n} catch (e) {}\n\nexport { Reanimated };\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js new file mode 100644 index 00000000..94a33bac --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js @@ -0,0 +1,45 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RotationGesture = void 0; + +var _gesture = require("./gesture"); + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + rotationChange: current.rotation + }; + } else { + changePayload = { + rotationChange: current.rotation - previous.rotation + }; + } + + return { ...current, + ...changePayload + }; +} + +class RotationGesture extends _gesture.ContinousBaseGesture { + constructor() { + super(); + this.handlerName = 'RotationGestureHandler'; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} + +exports.RotationGesture = RotationGesture; +//# sourceMappingURL=rotationGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js.map new file mode 100644 index 00000000..357dbc8b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/rotationGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["rotationGesture.ts"],"names":["changeEventCalculator","current","previous","changePayload","undefined","rotationChange","rotation","RotationGesture","ContinousBaseGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":";;;;;;;AAAA;;AAQA,SAASA,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,cAAc,EAAEJ,OAAO,CAACK;AADV,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,cAAc,EAAEJ,OAAO,CAACK,QAAR,GAAmBJ,QAAQ,CAACI;AAD9B,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAEM,MAAMI,eAAN,SAA8BC,6BAA9B,CAGL;AACAC,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,wBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAMN;AACA;AACA,SAAKC,QAAL,CAAcb,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMW,QAAN,CAAeC,QAAf,CAAP;AACD;;AAjBD","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\ntype RotationGestureChangeEventPayload = {\n rotationChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: RotationGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n rotationChange: current.rotation,\n };\n } else {\n changePayload = {\n rotationChange: current.rotation - previous.rotation,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class RotationGesture extends ContinousBaseGesture<\n RotationGestureHandlerEventPayload,\n RotationGestureChangeEventPayload\n> {\n constructor() {\n super();\n\n this.handlerName = 'RotationGestureHandler';\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n RotationGestureHandlerEventPayload & RotationGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type RotationGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js new file mode 100644 index 00000000..d88f69e6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js @@ -0,0 +1,60 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TapGesture = void 0; + +var _gesture = require("./gesture"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class TapGesture extends _gesture.BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'TapGestureHandler'; + this.shouldCancelWhenOutside(true); + } + + minPointers(minPointers) { + this.config.minPointers = minPointers; + return this; + } + + numberOfTaps(count) { + this.config.numberOfTaps = count; + return this; + } + + maxDistance(maxDist) { + this.config.maxDist = maxDist; + return this; + } + + maxDuration(duration) { + this.config.maxDurationMs = duration; + return this; + } + + maxDelay(delay) { + this.config.maxDelayMs = delay; + return this; + } + + maxDeltaX(delta) { + this.config.maxDeltaX = delta; + return this; + } + + maxDeltaY(delta) { + this.config.maxDeltaY = delta; + return this; + } + +} + +exports.TapGesture = TapGesture; +//# sourceMappingURL=tapGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js.map new file mode 100644 index 00000000..9579deb2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/gestures/tapGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["tapGesture.ts"],"names":["TapGesture","BaseGesture","constructor","handlerName","shouldCancelWhenOutside","minPointers","config","numberOfTaps","count","maxDistance","maxDist","maxDuration","duration","maxDurationMs","maxDelay","delay","maxDelayMs","maxDeltaX","delta","maxDeltaY"],"mappings":";;;;;;;AAAA;;;;AAMO,MAAMA,UAAN,SAAyBC,oBAAzB,CAAoE;AAGzEC,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAFwC,EAExC;;AAGZ,SAAKC,WAAL,GAAmB,mBAAnB;AACA,SAAKC,uBAAL,CAA6B,IAA7B;AACD;;AAEDC,EAAAA,WAAW,CAACA,WAAD,EAAsB;AAC/B,SAAKC,MAAL,CAAYD,WAAZ,GAA0BA,WAA1B;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,YAAY,CAACC,KAAD,EAAgB;AAC1B,SAAKF,MAAL,CAAYC,YAAZ,GAA2BC,KAA3B;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,WAAW,CAACC,OAAD,EAAkB;AAC3B,SAAKJ,MAAL,CAAYI,OAAZ,GAAsBA,OAAtB;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,WAAW,CAACC,QAAD,EAAmB;AAC5B,SAAKN,MAAL,CAAYO,aAAZ,GAA4BD,QAA5B;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,QAAQ,CAACC,KAAD,EAAgB;AACtB,SAAKT,MAAL,CAAYU,UAAZ,GAAyBD,KAAzB;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,SAAS,CAACC,KAAD,EAAgB;AACvB,SAAKZ,MAAL,CAAYW,SAAZ,GAAwBC,KAAxB;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,SAAS,CAACD,KAAD,EAAgB;AACvB,SAAKZ,MAAL,CAAYa,SAAZ,GAAwBD,KAAxB;AACA,WAAO,IAAP;AACD;;AA3CwE","sourcesContent":["import { BaseGestureConfig, BaseGesture } from './gesture';\nimport {\n TapGestureConfig,\n TapGestureHandlerEventPayload,\n} from '../TapGestureHandler';\n\nexport class TapGesture extends BaseGesture {\n public config: BaseGestureConfig & TapGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'TapGestureHandler';\n this.shouldCancelWhenOutside(true);\n }\n\n minPointers(minPointers: number) {\n this.config.minPointers = minPointers;\n return this;\n }\n\n numberOfTaps(count: number) {\n this.config.numberOfTaps = count;\n return this;\n }\n\n maxDistance(maxDist: number) {\n this.config.maxDist = maxDist;\n return this;\n }\n\n maxDuration(duration: number) {\n this.config.maxDurationMs = duration;\n return this;\n }\n\n maxDelay(delay: number) {\n this.config.maxDelayMs = delay;\n return this;\n }\n\n maxDeltaX(delta: number) {\n this.config.maxDeltaX = delta;\n return this;\n }\n\n maxDeltaY(delta: number) {\n this.config.maxDeltaY = delta;\n return this;\n }\n}\n\nexport type TapGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js new file mode 100644 index 00000000..5ddf6f98 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js @@ -0,0 +1,67 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getNextHandlerTag = getNextHandlerTag; +exports.registerHandler = registerHandler; +exports.registerOldGestureHandler = registerOldGestureHandler; +exports.unregisterHandler = unregisterHandler; +exports.findHandler = findHandler; +exports.findOldGestureHandler = findOldGestureHandler; +exports.findHandlerByTestID = findHandlerByTestID; +exports.handlerIDToTag = void 0; + +var _utils = require("../utils"); + +const handlerIDToTag = {}; +exports.handlerIDToTag = handlerIDToTag; +const gestures = new Map(); +const oldHandlers = new Map(); +const testIDs = new Map(); +let handlerTag = 1; + +function getNextHandlerTag() { + return handlerTag++; +} + +function registerHandler(handlerTag, handler, testID) { + gestures.set(handlerTag, handler); + + if ((0, _utils.isJestEnv)() && testID) { + testIDs.set(testID, handlerTag); + } +} + +function registerOldGestureHandler(handlerTag, handler) { + oldHandlers.set(handlerTag, handler); +} + +function unregisterHandler(handlerTag, testID) { + gestures.delete(handlerTag); + + if ((0, _utils.isJestEnv)() && testID) { + testIDs.delete(testID); + } +} + +function findHandler(handlerTag) { + return gestures.get(handlerTag); +} + +function findOldGestureHandler(handlerTag) { + return oldHandlers.get(handlerTag); +} + +function findHandlerByTestID(testID) { + const handlerTag = testIDs.get(testID); + + if (handlerTag !== undefined) { + var _findHandler; + + return (_findHandler = findHandler(handlerTag)) !== null && _findHandler !== void 0 ? _findHandler : null; + } + + return null; +} +//# sourceMappingURL=handlersRegistry.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js.map new file mode 100644 index 00000000..2f58d649 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/handlers/handlersRegistry.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["handlersRegistry.ts"],"names":["handlerIDToTag","gestures","Map","oldHandlers","testIDs","handlerTag","getNextHandlerTag","registerHandler","handler","testID","set","registerOldGestureHandler","unregisterHandler","delete","findHandler","get","findOldGestureHandler","findHandlerByTestID","undefined"],"mappings":";;;;;;;;;;;;;;AAAA;;AAIO,MAAMA,cAAsC,GAAG,EAA/C;;AACP,MAAMC,QAAQ,GAAG,IAAIC,GAAJ,EAAjB;AACA,MAAMC,WAAW,GAAG,IAAID,GAAJ,EAApB;AACA,MAAME,OAAO,GAAG,IAAIF,GAAJ,EAAhB;AAEA,IAAIG,UAAU,GAAG,CAAjB;;AAEO,SAASC,iBAAT,GAAqC;AAC1C,SAAOD,UAAU,EAAjB;AACD;;AAEM,SAASE,eAAT,CACLF,UADK,EAELG,OAFK,EAGLC,MAHK,EAIL;AACAR,EAAAA,QAAQ,CAACS,GAAT,CAAaL,UAAb,EAAyBG,OAAzB;;AACA,MAAI,2BAAeC,MAAnB,EAA2B;AACzBL,IAAAA,OAAO,CAACM,GAAR,CAAYD,MAAZ,EAAoBJ,UAApB;AACD;AACF;;AAEM,SAASM,yBAAT,CACLN,UADK,EAELG,OAFK,EAGL;AACAL,EAAAA,WAAW,CAACO,GAAZ,CAAgBL,UAAhB,EAA4BG,OAA5B;AACD;;AAEM,SAASI,iBAAT,CAA2BP,UAA3B,EAA+CI,MAA/C,EAAgE;AACrER,EAAAA,QAAQ,CAACY,MAAT,CAAgBR,UAAhB;;AACA,MAAI,2BAAeI,MAAnB,EAA2B;AACzBL,IAAAA,OAAO,CAACS,MAAR,CAAeJ,MAAf;AACD;AACF;;AAEM,SAASK,WAAT,CAAqBT,UAArB,EAAyC;AAC9C,SAAOJ,QAAQ,CAACc,GAAT,CAAaV,UAAb,CAAP;AACD;;AAEM,SAASW,qBAAT,CAA+BX,UAA/B,EAAmD;AACxD,SAAOF,WAAW,CAACY,GAAZ,CAAgBV,UAAhB,CAAP;AACD;;AAEM,SAASY,mBAAT,CAA6BR,MAA7B,EAA6C;AAClD,QAAMJ,UAAU,GAAGD,OAAO,CAACW,GAAR,CAAYN,MAAZ,CAAnB;;AACA,MAAIJ,UAAU,KAAKa,SAAnB,EAA8B;AAAA;;AAC5B,2BAAOJ,WAAW,CAACT,UAAD,CAAlB,uDAAkC,IAAlC;AACD;;AACD,SAAO,IAAP;AACD","sourcesContent":["import { isJestEnv } from '../utils';\nimport { GestureType } from './gestures/gesture';\nimport { GestureEvent, HandlerStateChangeEvent } from './gestureHandlerCommon';\n\nexport const handlerIDToTag: Record = {};\nconst gestures = new Map();\nconst oldHandlers = new Map();\nconst testIDs = new Map();\n\nlet handlerTag = 1;\n\nexport function getNextHandlerTag(): number {\n return handlerTag++;\n}\n\nexport function registerHandler(\n handlerTag: number,\n handler: GestureType,\n testID?: string\n) {\n gestures.set(handlerTag, handler);\n if (isJestEnv() && testID) {\n testIDs.set(testID, handlerTag);\n }\n}\n\nexport function registerOldGestureHandler(\n handlerTag: number,\n handler: GestureHandlerCallbacks\n) {\n oldHandlers.set(handlerTag, handler);\n}\n\nexport function unregisterHandler(handlerTag: number, testID?: string) {\n gestures.delete(handlerTag);\n if (isJestEnv() && testID) {\n testIDs.delete(testID);\n }\n}\n\nexport function findHandler(handlerTag: number) {\n return gestures.get(handlerTag);\n}\n\nexport function findOldGestureHandler(handlerTag: number) {\n return oldHandlers.get(handlerTag);\n}\n\nexport function findHandlerByTestID(testID: string) {\n const handlerTag = testIDs.get(testID);\n if (handlerTag !== undefined) {\n return findHandler(handlerTag) ?? null;\n }\n return null;\n}\n\nexport interface GestureHandlerCallbacks {\n onGestureEvent: (event: GestureEvent) => void;\n onGestureStateChange: (event: HandlerStateChangeEvent) => void;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js new file mode 100644 index 00000000..a40d7afb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js @@ -0,0 +1,246 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Directions", { + enumerable: true, + get: function () { + return _Directions.Directions; + } +}); +Object.defineProperty(exports, "State", { + enumerable: true, + get: function () { + return _State.State; + } +}); +Object.defineProperty(exports, "gestureHandlerRootHOC", { + enumerable: true, + get: function () { + return _gestureHandlerRootHOC.default; + } +}); +Object.defineProperty(exports, "GestureHandlerRootView", { + enumerable: true, + get: function () { + return _GestureHandlerRootView.default; + } +}); +Object.defineProperty(exports, "TapGestureHandler", { + enumerable: true, + get: function () { + return _TapGestureHandler.TapGestureHandler; + } +}); +Object.defineProperty(exports, "ForceTouchGestureHandler", { + enumerable: true, + get: function () { + return _ForceTouchGestureHandler.ForceTouchGestureHandler; + } +}); +Object.defineProperty(exports, "LongPressGestureHandler", { + enumerable: true, + get: function () { + return _LongPressGestureHandler.LongPressGestureHandler; + } +}); +Object.defineProperty(exports, "PanGestureHandler", { + enumerable: true, + get: function () { + return _PanGestureHandler.PanGestureHandler; + } +}); +Object.defineProperty(exports, "PinchGestureHandler", { + enumerable: true, + get: function () { + return _PinchGestureHandler.PinchGestureHandler; + } +}); +Object.defineProperty(exports, "RotationGestureHandler", { + enumerable: true, + get: function () { + return _RotationGestureHandler.RotationGestureHandler; + } +}); +Object.defineProperty(exports, "FlingGestureHandler", { + enumerable: true, + get: function () { + return _FlingGestureHandler.FlingGestureHandler; + } +}); +Object.defineProperty(exports, "createNativeWrapper", { + enumerable: true, + get: function () { + return _createNativeWrapper.default; + } +}); +Object.defineProperty(exports, "GestureDetector", { + enumerable: true, + get: function () { + return _GestureDetector.GestureDetector; + } +}); +Object.defineProperty(exports, "Gesture", { + enumerable: true, + get: function () { + return _gestureObjects.GestureObjects; + } +}); +Object.defineProperty(exports, "NativeViewGestureHandler", { + enumerable: true, + get: function () { + return _NativeViewGestureHandler.NativeViewGestureHandler; + } +}); +Object.defineProperty(exports, "RawButton", { + enumerable: true, + get: function () { + return _GestureButtons.RawButton; + } +}); +Object.defineProperty(exports, "BaseButton", { + enumerable: true, + get: function () { + return _GestureButtons.BaseButton; + } +}); +Object.defineProperty(exports, "RectButton", { + enumerable: true, + get: function () { + return _GestureButtons.RectButton; + } +}); +Object.defineProperty(exports, "BorderlessButton", { + enumerable: true, + get: function () { + return _GestureButtons.BorderlessButton; + } +}); +Object.defineProperty(exports, "TouchableHighlight", { + enumerable: true, + get: function () { + return _touchables.TouchableHighlight; + } +}); +Object.defineProperty(exports, "TouchableNativeFeedback", { + enumerable: true, + get: function () { + return _touchables.TouchableNativeFeedback; + } +}); +Object.defineProperty(exports, "TouchableOpacity", { + enumerable: true, + get: function () { + return _touchables.TouchableOpacity; + } +}); +Object.defineProperty(exports, "TouchableWithoutFeedback", { + enumerable: true, + get: function () { + return _touchables.TouchableWithoutFeedback; + } +}); +Object.defineProperty(exports, "ScrollView", { + enumerable: true, + get: function () { + return _GestureComponents.ScrollView; + } +}); +Object.defineProperty(exports, "Switch", { + enumerable: true, + get: function () { + return _GestureComponents.Switch; + } +}); +Object.defineProperty(exports, "TextInput", { + enumerable: true, + get: function () { + return _GestureComponents.TextInput; + } +}); +Object.defineProperty(exports, "DrawerLayoutAndroid", { + enumerable: true, + get: function () { + return _GestureComponents.DrawerLayoutAndroid; + } +}); +Object.defineProperty(exports, "FlatList", { + enumerable: true, + get: function () { + return _GestureComponents.FlatList; + } +}); +Object.defineProperty(exports, "RefreshControl", { + enumerable: true, + get: function () { + return _GestureComponents.RefreshControl; + } +}); +Object.defineProperty(exports, "Swipeable", { + enumerable: true, + get: function () { + return _Swipeable.default; + } +}); +Object.defineProperty(exports, "DrawerLayout", { + enumerable: true, + get: function () { + return _DrawerLayout.default; + } +}); +Object.defineProperty(exports, "enableExperimentalWebImplementation", { + enumerable: true, + get: function () { + return _EnableExperimentalWebImplementation.enableExperimentalWebImplementation; + } +}); + +var _init = require("./init"); + +var _Directions = require("./Directions"); + +var _State = require("./State"); + +var _gestureHandlerRootHOC = _interopRequireDefault(require("./gestureHandlerRootHOC")); + +var _GestureHandlerRootView = _interopRequireDefault(require("./GestureHandlerRootView")); + +var _TapGestureHandler = require("./handlers/TapGestureHandler"); + +var _ForceTouchGestureHandler = require("./handlers/ForceTouchGestureHandler"); + +var _LongPressGestureHandler = require("./handlers/LongPressGestureHandler"); + +var _PanGestureHandler = require("./handlers/PanGestureHandler"); + +var _PinchGestureHandler = require("./handlers/PinchGestureHandler"); + +var _RotationGestureHandler = require("./handlers/RotationGestureHandler"); + +var _FlingGestureHandler = require("./handlers/FlingGestureHandler"); + +var _createNativeWrapper = _interopRequireDefault(require("./handlers/createNativeWrapper")); + +var _GestureDetector = require("./handlers/gestures/GestureDetector"); + +var _gestureObjects = require("./handlers/gestures/gestureObjects"); + +var _NativeViewGestureHandler = require("./handlers/NativeViewGestureHandler"); + +var _GestureButtons = require("./components/GestureButtons"); + +var _touchables = require("./components/touchables"); + +var _GestureComponents = require("./components/GestureComponents"); + +var _Swipeable = _interopRequireDefault(require("./components/Swipeable")); + +var _DrawerLayout = _interopRequireDefault(require("./components/DrawerLayout")); + +var _EnableExperimentalWebImplementation = require("./EnableExperimentalWebImplementation"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +(0, _init.initialize)(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js.map new file mode 100644 index 00000000..fa04b81b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AA+CA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAiBA;;AAOA;;AAMA;;AAMA;;AA+CA;;AASA;;AAEA;;;;AAEA","sourcesContent":["import { initialize } from './init';\n\nexport { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './GestureHandlerRootView';\nexport type {\n // event types\n GestureEvent,\n HandlerStateChangeEvent,\n // event payloads types\n GestureEventPayload,\n HandlerStateChangeEventPayload,\n // pointer events\n GestureTouchEvent,\n TouchData,\n // new api event types\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nexport type { GestureType } from './handlers/gestures/gesture';\nexport type {\n TapGestureHandlerEventPayload,\n TapGestureHandlerProps,\n} from './handlers/TapGestureHandler';\nexport type {\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureHandlerProps,\n} from './handlers/ForceTouchGestureHandler';\nexport type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture';\nexport type {\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from './handlers/LongPressGestureHandler';\nexport type {\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from './handlers/PanGestureHandler';\nexport type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture';\nexport type {\n PinchGestureHandlerEventPayload,\n PinchGestureHandlerProps,\n} from './handlers/PinchGestureHandler';\nexport type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture';\nexport type {\n RotationGestureHandlerEventPayload,\n RotationGestureHandlerProps,\n} from './handlers/RotationGestureHandler';\nexport type {\n FlingGestureHandlerEventPayload,\n FlingGestureHandlerProps,\n} from './handlers/FlingGestureHandler';\nexport { TapGestureHandler } from './handlers/TapGestureHandler';\nexport { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';\nexport { LongPressGestureHandler } from './handlers/LongPressGestureHandler';\nexport { PanGestureHandler } from './handlers/PanGestureHandler';\nexport { PinchGestureHandler } from './handlers/PinchGestureHandler';\nexport { RotationGestureHandler } from './handlers/RotationGestureHandler';\nexport { FlingGestureHandler } from './handlers/FlingGestureHandler';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { GestureDetector } from './handlers/gestures/GestureDetector';\nexport { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';\nexport type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';\nexport type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';\nexport type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';\nexport type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';\nexport type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';\nexport type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';\nexport type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nexport type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';\nexport type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';\nexport type {\n ComposedGestureType as ComposedGesture,\n RaceGestureType as RaceGesture,\n SimultaneousGestureType as SimultaneousGesture,\n ExclusiveGestureType as ExclusiveGesture,\n} from './handlers/gestures/gestureComposition';\nexport type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n RawButtonProps,\n BaseButtonProps,\n RectButtonProps,\n BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n} from './components/GestureButtons';\nexport {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n ScrollView,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n FlatList,\n RefreshControl,\n} from './components/GestureComponents';\nexport type {\n //events\n GestureHandlerGestureEvent,\n GestureHandlerStateChangeEvent,\n //event payloads\n GestureHandlerGestureEventNativeEvent,\n GestureHandlerStateChangeNativeEvent,\n NativeViewGestureHandlerGestureEvent,\n NativeViewGestureHandlerStateChangeEvent,\n TapGestureHandlerGestureEvent,\n TapGestureHandlerStateChangeEvent,\n ForceTouchGestureHandlerGestureEvent,\n ForceTouchGestureHandlerStateChangeEvent,\n LongPressGestureHandlerGestureEvent,\n LongPressGestureHandlerStateChangeEvent,\n PanGestureHandlerGestureEvent,\n PanGestureHandlerStateChangeEvent,\n PinchGestureHandlerGestureEvent,\n PinchGestureHandlerStateChangeEvent,\n RotationGestureHandlerGestureEvent,\n RotationGestureHandlerStateChangeEvent,\n FlingGestureHandlerGestureEvent,\n FlingGestureHandlerStateChangeEvent,\n // handlers props\n NativeViewGestureHandlerProperties,\n TapGestureHandlerProperties,\n LongPressGestureHandlerProperties,\n PanGestureHandlerProperties,\n PinchGestureHandlerProperties,\n RotationGestureHandlerProperties,\n FlingGestureHandlerProperties,\n ForceTouchGestureHandlerProperties,\n // buttons props\n RawButtonProperties,\n BaseButtonProperties,\n RectButtonProperties,\n BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n DrawerLayoutProps,\n DrawerPosition,\n DrawerState,\n DrawerType,\n DrawerLockMode,\n DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n\nexport { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation';\n\ninitialize();\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js new file mode 100644 index 00000000..28903edf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.initialize = initialize; +exports.maybeInitializeFabric = maybeInitializeFabric; + +var _eventReceiver = require("./handlers/gestures/eventReceiver"); + +var _RNGestureHandlerModule = _interopRequireDefault(require("./RNGestureHandlerModule")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +let fabricInitialized = false; + +function initialize() { + (0, _eventReceiver.startListening)(); +} // since isFabric() may give wrong results before the first render, we call this +// method during render of GestureHandlerRootView + + +function maybeInitializeFabric() { + if ((0, _utils.isFabric)() && !fabricInitialized) { + _RNGestureHandlerModule.default.install(); + + fabricInitialized = true; + } +} +//# sourceMappingURL=init.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js.map new file mode 100644 index 00000000..5a405bbf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/init.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["init.ts"],"names":["fabricInitialized","initialize","maybeInitializeFabric","RNGestureHandlerModule","install"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;AAEA,IAAIA,iBAAiB,GAAG,KAAxB;;AAEO,SAASC,UAAT,GAAsB;AAC3B;AACD,C,CAED;AACA;;;AACO,SAASC,qBAAT,GAAiC;AACtC,MAAI,0BAAc,CAACF,iBAAnB,EAAsC;AACpCG,oCAAuBC,OAAvB;;AACAJ,IAAAA,iBAAiB,GAAG,IAApB;AACD;AACF","sourcesContent":["import { startListening } from './handlers/gestures/eventReceiver';\nimport RNGestureHandlerModule from './RNGestureHandlerModule';\nimport { isFabric } from './utils';\n\nlet fabricInitialized = false;\n\nexport function initialize() {\n startListening();\n}\n\n// since isFabric() may give wrong results before the first render, we call this\n// method during render of GestureHandlerRootView\nexport function maybeInitializeFabric() {\n if (isFabric() && !fabricInitialized) {\n RNGestureHandlerModule.install();\n fabricInitialized = true;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js new file mode 100644 index 00000000..d09e7108 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "getByGestureTestId", { + enumerable: true, + get: function () { + return _jestUtils.getByGestureTestId; + } +}); +Object.defineProperty(exports, "fireGestureHandler", { + enumerable: true, + get: function () { + return _jestUtils.fireGestureHandler; + } +}); + +var _jestUtils = require("./jestUtils"); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js.map new file mode 100644 index 00000000..894025d5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA","sourcesContent":["export { getByGestureTestId, fireGestureHandler } from './jestUtils';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js new file mode 100644 index 00000000..59842605 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js @@ -0,0 +1,375 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fireGestureHandler = fireGestureHandler; +exports.getByGestureTestId = getByGestureTestId; + +var _invariant = _interopRequireDefault(require("invariant")); + +var _reactNative = require("react-native"); + +var _FlingGestureHandler = require("../handlers/FlingGestureHandler"); + +var _ForceTouchGestureHandler = require("../handlers/ForceTouchGestureHandler"); + +var _gesture = require("../handlers/gestures/gesture"); + +var _handlersRegistry = require("../handlers/handlersRegistry"); + +var _LongPressGestureHandler = require("../handlers/LongPressGestureHandler"); + +var _NativeViewGestureHandler = require("../handlers/NativeViewGestureHandler"); + +var _PanGestureHandler = require("../handlers/PanGestureHandler"); + +var _PinchGestureHandler = require("../handlers/PinchGestureHandler"); + +var _RotationGestureHandler = require("../handlers/RotationGestureHandler"); + +var _TapGestureHandler = require("../handlers/TapGestureHandler"); + +var _State = require("../State"); + +var _utils = require("../utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// load fireEvent conditionally, so RNGH may be used in setups without testing-library +let fireEvent = (_element, _name, ..._data) => {// NOOP +}; + +try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + fireEvent = require('@testing-library/react-native').fireEvent; +} catch (_e) {// do nothing if not available +} + +const handlersDefaultEvents = { + [_FlingGestureHandler.flingHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + numberOfPointers: 1 + }, + [_ForceTouchGestureHandler.forceTouchHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + force: 1, + numberOfPointers: 1 + }, + [_LongPressGestureHandler.longPressHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + duration: 100, + numberOfPointers: 1 + }, + [_NativeViewGestureHandler.nativeViewHandlerName]: { + pointerInside: true, + numberOfPointers: 1 + }, + [_PanGestureHandler.panHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + translationX: 100, + translationY: 0, + velocityX: 3, + velocityY: 0, + numberOfPointers: 1 + }, + [_PinchGestureHandler.pinchHandlerName]: { + focalX: 0, + focalY: 0, + scale: 2, + velocity: 1, + numberOfPointers: 2 + }, + [_RotationGestureHandler.rotationHandlerName]: { + anchorX: 0, + anchorY: 0, + rotation: 3.14, + velocity: 2, + numberOfPointers: 2 + }, + [_TapGestureHandler.tapHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + numberOfPointers: 1 + } +}; + +function isGesture(componentOrGesture) { + return componentOrGesture instanceof _gesture.BaseGesture; +} + +function wrapWithNativeEvent(event) { + return { + nativeEvent: event + }; +} + +function fillOldStateChanges(previousEvent, currentEvent) { + const isFirstEvent = previousEvent === null; + + if (isFirstEvent) { + return { + oldState: _State.State.UNDETERMINED, + ...currentEvent + }; + } + + const isGestureStateEvent = previousEvent.state !== currentEvent.state; + + if (isGestureStateEvent) { + return { + oldState: previousEvent === null || previousEvent === void 0 ? void 0 : previousEvent.state, + ...currentEvent + }; + } else { + return currentEvent; + } +} + +function validateStateTransitions(previousEvent, currentEvent) { + function stringify(event) { + return JSON.stringify(event, null, 2); + } + + function errorMsgWithBothEvents(description) { + return `${description}, invalid event: ${stringify(currentEvent)}, previous event: ${stringify(previousEvent)}`; + } + + function errorMsgWithCurrentEvent(description) { + return `${description}, invalid event: ${stringify(currentEvent)}`; + } + + (0, _invariant.default)((0, _utils.hasProperty)(currentEvent, 'state'), errorMsgWithCurrentEvent('every event must have state')); + const isFirstEvent = previousEvent === null; + + if (isFirstEvent) { + (0, _invariant.default)(currentEvent.state === _State.State.BEGAN, errorMsgWithCurrentEvent('first event must have BEGAN state')); + } + + if (previousEvent !== null) { + if (previousEvent.state !== currentEvent.state) { + (0, _invariant.default)((0, _utils.hasProperty)(currentEvent, 'oldState'), errorMsgWithCurrentEvent('when state changes, oldState field should be present')); + (0, _invariant.default)(currentEvent.oldState === previousEvent.state, errorMsgWithBothEvents("when state changes, oldState should be the same as previous event' state")); + } + } + + return currentEvent; +} + +function fillMissingDefaultsFor({ + handlerType, + handlerTag +}) { + return event => { + return { ...handlersDefaultEvents[handlerType], + ...event, + handlerTag + }; + }; +} + +function isDiscreteHandler(handlerType) { + return handlerType === 'TapGestureHandler' || handlerType === 'LongPressGestureHandler'; +} + +function fillMissingStatesTransitions(events, isDiscreteHandler) { + var _events2, _events$; + + const _events = [...events]; + const lastEvent = (_events2 = _events[_events.length - 1]) !== null && _events2 !== void 0 ? _events2 : null; + const firstEvent = (_events$ = _events[0]) !== null && _events$ !== void 0 ? _events$ : null; + const shouldDuplicateFirstEvent = !isDiscreteHandler && !hasState(_State.State.BEGAN)(firstEvent); + + if (shouldDuplicateFirstEvent) { + const duplicated = { ...firstEvent, + state: _State.State.BEGAN + }; // @ts-ignore badly typed, property may exist and we don't want to copy it + + delete duplicated.oldState; + + _events.unshift(duplicated); + } + + const shouldDuplicateLastEvent = !hasState(_State.State.END)(lastEvent) || !hasState(_State.State.FAILED)(lastEvent) || !hasState(_State.State.CANCELLED)(lastEvent); + + if (shouldDuplicateLastEvent) { + const duplicated = { ...lastEvent, + state: _State.State.END + }; // @ts-ignore badly typed, property may exist and we don't want to copy it + + delete duplicated.oldState; + + _events.push(duplicated); + } + + function isWithoutState(event) { + return event !== null && !(0, _utils.hasProperty)(event, 'state'); + } + + function hasState(state) { + return event => event !== null && event.state === state; + } + + function noEventsLeft(event) { + return event === null; + } + + function trueFn() { + return true; + } + + function fillEventsForCurrentState({ + shouldConsumeEvent = trueFn, + shouldTransitionToNextState = trueFn + }) { + function peekCurrentEvent() { + var _events$2; + + return (_events$2 = _events[0]) !== null && _events$2 !== void 0 ? _events$2 : null; + } + + function peekNextEvent() { + var _events$3; + + return (_events$3 = _events[1]) !== null && _events$3 !== void 0 ? _events$3 : null; + } + + function consumeCurrentEvent() { + _events.shift(); + } + + const currentEvent = peekCurrentEvent(); + const nextEvent = peekNextEvent(); + const currentRequiredState = REQUIRED_EVENTS[currentStateIdx]; + let eventData = {}; + const shouldUseEvent = shouldConsumeEvent(currentEvent); + + if (shouldUseEvent) { + eventData = currentEvent; + consumeCurrentEvent(); + } + + transformedEvents.push({ + state: currentRequiredState, + ...eventData + }); + + if (shouldTransitionToNextState(nextEvent)) { + currentStateIdx++; + } + } + + const REQUIRED_EVENTS = [_State.State.BEGAN, _State.State.ACTIVE, _State.State.END]; + let currentStateIdx = 0; + const transformedEvents = []; + let hasAllStates; + let iterations = 0; + + do { + const nextRequiredState = REQUIRED_EVENTS[currentStateIdx]; + + if (nextRequiredState === _State.State.BEGAN) { + fillEventsForCurrentState({ + shouldConsumeEvent: e => isWithoutState(e) || hasState(_State.State.BEGAN)(e) + }); + } else if (nextRequiredState === _State.State.ACTIVE) { + const shouldConsumeEvent = e => isWithoutState(e) || hasState(_State.State.ACTIVE)(e); + + const shouldTransitionToNextState = nextEvent => noEventsLeft(nextEvent) || hasState(_State.State.END)(nextEvent) || hasState(_State.State.FAILED)(nextEvent) || hasState(_State.State.CANCELLED)(nextEvent); + + fillEventsForCurrentState({ + shouldConsumeEvent, + shouldTransitionToNextState + }); + } else if (nextRequiredState === _State.State.END) { + fillEventsForCurrentState({}); + } + + hasAllStates = currentStateIdx === REQUIRED_EVENTS.length; + (0, _invariant.default)(iterations++ <= 500, 'exceeded max number of iterations, please report a bug in RNGH repository with your test case'); + } while (!hasAllStates); + + return transformedEvents; +} + +function getHandlerData(componentOrGesture) { + if (isGesture(componentOrGesture)) { + const gesture = componentOrGesture; + return { + emitEvent: (eventName, args) => { + _reactNative.DeviceEventEmitter.emit(eventName, args.nativeEvent); + }, + handlerType: gesture.handlerName, + handlerTag: gesture.handlerTag + }; + } + + const gestureHandlerComponent = componentOrGesture; + return { + emitEvent: (eventName, args) => { + fireEvent(gestureHandlerComponent, eventName, args); + }, + handlerType: gestureHandlerComponent.props.handlerType, + handlerTag: gestureHandlerComponent.props.handlerTag + }; +} + +function fireGestureHandler(componentOrGesture, eventList = []) { + const { + emitEvent, + handlerType, + handlerTag + } = getHandlerData(componentOrGesture); + + let _ = fillMissingStatesTransitions(eventList, isDiscreteHandler(handlerType)); + + _ = _.map(fillMissingDefaultsFor({ + handlerTag, + handlerType + })); + _ = (0, _utils.withPrevAndCurrent)(_, fillOldStateChanges); + _ = (0, _utils.withPrevAndCurrent)(_, validateStateTransitions); // @ts-ignore TODO + + _ = _.map(wrapWithNativeEvent); + const events = _; + const firstEvent = events.shift(); + emitEvent('onGestureHandlerStateChange', firstEvent); + let lastSentEvent = firstEvent; + + for (const event of events) { + const hasChangedState = lastSentEvent.nativeEvent.state !== event.nativeEvent.state; + + if (hasChangedState) { + emitEvent('onGestureHandlerStateChange', event); + } else { + emitEvent('onGestureHandlerEvent', event); + } + + lastSentEvent = event; + } +} + +function getByGestureTestId(testID) { + const handler = (0, _handlersRegistry.findHandlerByTestID)(testID); + + if (handler === null) { + throw new Error(`Handler with id: '${testID}' cannot be found`); + } + + return handler; +} +//# sourceMappingURL=jestUtils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js.map new file mode 100644 index 00000000..1b8f1cb0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/jestUtils/jestUtils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["jestUtils.ts"],"names":["fireEvent","_element","_name","_data","require","_e","handlersDefaultEvents","flingHandlerName","x","y","absoluteX","absoluteY","numberOfPointers","forceTouchHandlerName","force","longPressHandlerName","duration","nativeViewHandlerName","pointerInside","panHandlerName","translationX","translationY","velocityX","velocityY","pinchHandlerName","focalX","focalY","scale","velocity","rotationHandlerName","anchorX","anchorY","rotation","tapHandlerName","isGesture","componentOrGesture","BaseGesture","wrapWithNativeEvent","event","nativeEvent","fillOldStateChanges","previousEvent","currentEvent","isFirstEvent","oldState","State","UNDETERMINED","isGestureStateEvent","state","validateStateTransitions","stringify","JSON","errorMsgWithBothEvents","description","errorMsgWithCurrentEvent","BEGAN","fillMissingDefaultsFor","handlerType","handlerTag","isDiscreteHandler","fillMissingStatesTransitions","events","_events","lastEvent","length","firstEvent","shouldDuplicateFirstEvent","hasState","duplicated","unshift","shouldDuplicateLastEvent","END","FAILED","CANCELLED","push","isWithoutState","noEventsLeft","trueFn","fillEventsForCurrentState","shouldConsumeEvent","shouldTransitionToNextState","peekCurrentEvent","peekNextEvent","consumeCurrentEvent","shift","nextEvent","currentRequiredState","REQUIRED_EVENTS","currentStateIdx","eventData","shouldUseEvent","transformedEvents","ACTIVE","hasAllStates","iterations","nextRequiredState","e","getHandlerData","gesture","emitEvent","eventName","args","DeviceEventEmitter","emit","handlerName","gestureHandlerComponent","props","fireGestureHandler","eventList","_","map","lastSentEvent","hasChangedState","getByGestureTestId","testID","handler","Error"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport { DeviceEventEmitter } from 'react-native';\nimport { ReactTestInstance } from 'react-test-renderer';\nimport {\n FlingGestureHandler,\n FlingGestureHandlerEventPayload,\n flingHandlerName,\n} from '../handlers/FlingGestureHandler';\nimport {\n ForceTouchGestureHandler,\n ForceTouchGestureHandlerEventPayload,\n forceTouchHandlerName,\n} from '../handlers/ForceTouchGestureHandler';\nimport {\n BaseGestureHandlerProps,\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { FlingGesture } from '../handlers/gestures/flingGesture';\nimport { ForceTouchGesture } from '../handlers/gestures/forceTouchGesture';\nimport { BaseGesture, GestureType } from '../handlers/gestures/gesture';\nimport { LongPressGesture } from '../handlers/gestures/longPressGesture';\nimport { NativeGesture } from '../handlers/gestures/nativeGesture';\nimport { PanGesture } from '../handlers/gestures/panGesture';\nimport { PinchGesture } from '../handlers/gestures/pinchGesture';\nimport { RotationGesture } from '../handlers/gestures/rotationGesture';\nimport { TapGesture } from '../handlers/gestures/tapGesture';\nimport { findHandlerByTestID } from '../handlers/handlersRegistry';\nimport {\n LongPressGestureHandler,\n LongPressGestureHandlerEventPayload,\n longPressHandlerName,\n} from '../handlers/LongPressGestureHandler';\nimport {\n NativeViewGestureHandler,\n NativeViewGestureHandlerPayload,\n nativeViewHandlerName,\n} from '../handlers/NativeViewGestureHandler';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n panHandlerName,\n} from '../handlers/PanGestureHandler';\nimport {\n PinchGestureHandler,\n PinchGestureHandlerEventPayload,\n pinchHandlerName,\n} from '../handlers/PinchGestureHandler';\nimport {\n RotationGestureHandler,\n RotationGestureHandlerEventPayload,\n rotationHandlerName,\n} from '../handlers/RotationGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n tapHandlerName,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\nimport { hasProperty, withPrevAndCurrent } from '../utils';\n\n// load fireEvent conditionally, so RNGH may be used in setups without testing-library\nlet fireEvent = (\n _element: ReactTestInstance,\n _name: string,\n ..._data: any[]\n) => {\n // NOOP\n};\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n fireEvent = require('@testing-library/react-native').fireEvent;\n} catch (_e) {\n // do nothing if not available\n}\n\ntype GestureHandlerTestEvent<\n TEventPayload extends Record = Record\n> = (\n | GestureEvent\n | HandlerStateChangeEvent\n)['nativeEvent'];\n\ntype HandlerNames = keyof DefaultEventsMapping;\n\ntype WithNumberOfPointers = {\n [P in keyof T]: T[P] & { numberOfPointers: number };\n};\ntype DefaultEventsMapping = WithNumberOfPointers<{\n [flingHandlerName]: FlingGestureHandlerEventPayload;\n [forceTouchHandlerName]: ForceTouchGestureHandlerEventPayload;\n [longPressHandlerName]: LongPressGestureHandlerEventPayload;\n [nativeViewHandlerName]: NativeViewGestureHandlerPayload;\n [panHandlerName]: PanGestureHandlerEventPayload;\n [pinchHandlerName]: PinchGestureHandlerEventPayload;\n [rotationHandlerName]: RotationGestureHandlerEventPayload;\n [tapHandlerName]: TapGestureHandlerEventPayload;\n}>;\n\nconst handlersDefaultEvents: DefaultEventsMapping = {\n [flingHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n numberOfPointers: 1,\n },\n [forceTouchHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n force: 1,\n numberOfPointers: 1,\n },\n [longPressHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n duration: 100,\n numberOfPointers: 1,\n },\n [nativeViewHandlerName]: {\n pointerInside: true,\n numberOfPointers: 1,\n },\n [panHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n translationX: 100,\n translationY: 0,\n velocityX: 3,\n velocityY: 0,\n numberOfPointers: 1,\n },\n [pinchHandlerName]: {\n focalX: 0,\n focalY: 0,\n scale: 2,\n velocity: 1,\n numberOfPointers: 2,\n },\n [rotationHandlerName]: {\n anchorX: 0,\n anchorY: 0,\n rotation: 3.14,\n velocity: 2,\n numberOfPointers: 2,\n },\n [tapHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n numberOfPointers: 1,\n },\n};\n\nfunction isGesture(\n componentOrGesture: ReactTestInstance | GestureType\n): componentOrGesture is GestureType {\n return componentOrGesture instanceof BaseGesture;\n}\n\ninterface WrappedGestureHandlerTestEvent {\n nativeEvent: GestureHandlerTestEvent;\n}\nfunction wrapWithNativeEvent(\n event: GestureHandlerTestEvent\n): WrappedGestureHandlerTestEvent {\n return { nativeEvent: event };\n}\n\nfunction fillOldStateChanges(\n previousEvent: GestureHandlerTestEvent | null,\n currentEvent: Omit\n): GestureHandlerTestEvent {\n const isFirstEvent = previousEvent === null;\n if (isFirstEvent) {\n return {\n oldState: State.UNDETERMINED,\n ...currentEvent,\n } as GestureHandlerTestEvent;\n }\n\n const isGestureStateEvent = previousEvent.state !== currentEvent.state;\n if (isGestureStateEvent) {\n return {\n oldState: previousEvent?.state,\n ...currentEvent,\n } as GestureHandlerTestEvent;\n } else {\n return currentEvent as GestureHandlerTestEvent;\n }\n}\n\ntype EventWithStates = Partial<\n Pick\n>;\nfunction validateStateTransitions(\n previousEvent: EventWithStates | null,\n currentEvent: EventWithStates\n) {\n function stringify(event: Record | null) {\n return JSON.stringify(event, null, 2);\n }\n function errorMsgWithBothEvents(description: string) {\n return `${description}, invalid event: ${stringify(\n currentEvent\n )}, previous event: ${stringify(previousEvent)}`;\n }\n\n function errorMsgWithCurrentEvent(description: string) {\n return `${description}, invalid event: ${stringify(currentEvent)}`;\n }\n\n invariant(\n hasProperty(currentEvent, 'state'),\n errorMsgWithCurrentEvent('every event must have state')\n );\n\n const isFirstEvent = previousEvent === null;\n if (isFirstEvent) {\n invariant(\n currentEvent.state === State.BEGAN,\n errorMsgWithCurrentEvent('first event must have BEGAN state')\n );\n }\n\n if (previousEvent !== null) {\n if (previousEvent.state !== currentEvent.state) {\n invariant(\n hasProperty(currentEvent, 'oldState'),\n errorMsgWithCurrentEvent(\n 'when state changes, oldState field should be present'\n )\n );\n invariant(\n currentEvent.oldState === previousEvent.state,\n errorMsgWithBothEvents(\n \"when state changes, oldState should be the same as previous event' state\"\n )\n );\n }\n }\n\n return currentEvent;\n}\n\ntype EventWithoutStates = Omit;\ninterface HandlerInfo {\n handlerType: HandlerNames;\n handlerTag: number;\n}\nfunction fillMissingDefaultsFor({\n handlerType,\n handlerTag,\n}: HandlerInfo): (\n event: Partial\n) => EventWithoutStates {\n return (event) => {\n return {\n ...handlersDefaultEvents[handlerType],\n ...event,\n handlerTag,\n };\n };\n}\n\nfunction isDiscreteHandler(handlerType: HandlerNames) {\n return (\n handlerType === 'TapGestureHandler' ||\n handlerType === 'LongPressGestureHandler'\n );\n}\n\nfunction fillMissingStatesTransitions(\n events: EventWithoutStates[],\n isDiscreteHandler: boolean\n): EventWithoutStates[] {\n type Event = EventWithoutStates | null;\n const _events = [...events];\n const lastEvent = _events[_events.length - 1] ?? null;\n const firstEvent = _events[0] ?? null;\n\n const shouldDuplicateFirstEvent =\n !isDiscreteHandler && !hasState(State.BEGAN)(firstEvent);\n if (shouldDuplicateFirstEvent) {\n const duplicated = { ...firstEvent, state: State.BEGAN };\n // @ts-ignore badly typed, property may exist and we don't want to copy it\n delete duplicated.oldState;\n _events.unshift(duplicated);\n }\n\n const shouldDuplicateLastEvent =\n !hasState(State.END)(lastEvent) ||\n !hasState(State.FAILED)(lastEvent) ||\n !hasState(State.CANCELLED)(lastEvent);\n\n if (shouldDuplicateLastEvent) {\n const duplicated = { ...lastEvent, state: State.END };\n // @ts-ignore badly typed, property may exist and we don't want to copy it\n delete duplicated.oldState;\n _events.push(duplicated);\n }\n\n function isWithoutState(event: Event) {\n return event !== null && !hasProperty(event, 'state');\n }\n function hasState(state: State) {\n return (event: Event) => event !== null && event.state === state;\n }\n function noEventsLeft(event: Event) {\n return event === null;\n }\n\n function trueFn() {\n return true;\n }\n interface Args {\n shouldConsumeEvent?: (event: Event) => boolean;\n shouldTransitionToNextState?: (nextEvent: Event) => boolean;\n }\n function fillEventsForCurrentState({\n shouldConsumeEvent = trueFn,\n shouldTransitionToNextState = trueFn,\n }: Args) {\n function peekCurrentEvent(): Event {\n return _events[0] ?? null;\n }\n function peekNextEvent(): Event {\n return _events[1] ?? null;\n }\n function consumeCurrentEvent() {\n _events.shift();\n }\n const currentEvent = peekCurrentEvent();\n const nextEvent = peekNextEvent();\n const currentRequiredState = REQUIRED_EVENTS[currentStateIdx];\n\n let eventData = {};\n const shouldUseEvent = shouldConsumeEvent(currentEvent);\n if (shouldUseEvent) {\n eventData = currentEvent!;\n consumeCurrentEvent();\n }\n transformedEvents.push({ state: currentRequiredState, ...eventData });\n if (shouldTransitionToNextState(nextEvent)) {\n currentStateIdx++;\n }\n }\n\n const REQUIRED_EVENTS = [State.BEGAN, State.ACTIVE, State.END];\n\n let currentStateIdx = 0;\n const transformedEvents: EventWithoutStates[] = [];\n let hasAllStates;\n let iterations = 0;\n do {\n const nextRequiredState = REQUIRED_EVENTS[currentStateIdx];\n if (nextRequiredState === State.BEGAN) {\n fillEventsForCurrentState({\n shouldConsumeEvent: (e: Event) =>\n isWithoutState(e) || hasState(State.BEGAN)(e),\n });\n } else if (nextRequiredState === State.ACTIVE) {\n const shouldConsumeEvent = (e: Event) =>\n isWithoutState(e) || hasState(State.ACTIVE)(e);\n const shouldTransitionToNextState = (nextEvent: Event) =>\n noEventsLeft(nextEvent) ||\n hasState(State.END)(nextEvent) ||\n hasState(State.FAILED)(nextEvent) ||\n hasState(State.CANCELLED)(nextEvent);\n\n fillEventsForCurrentState({\n shouldConsumeEvent,\n shouldTransitionToNextState,\n });\n } else if (nextRequiredState === State.END) {\n fillEventsForCurrentState({});\n }\n hasAllStates = currentStateIdx === REQUIRED_EVENTS.length;\n\n invariant(\n iterations++ <= 500,\n 'exceeded max number of iterations, please report a bug in RNGH repository with your test case'\n );\n } while (!hasAllStates);\n\n return transformedEvents;\n}\n\ntype EventEmitter = (\n eventName: string,\n args: { nativeEvent: GestureHandlerTestEvent }\n) => void;\ninterface HandlerData {\n emitEvent: EventEmitter;\n handlerType: HandlerNames;\n handlerTag: number;\n}\nfunction getHandlerData(\n componentOrGesture: ReactTestInstance | GestureType\n): HandlerData {\n if (isGesture(componentOrGesture)) {\n const gesture = componentOrGesture;\n return {\n emitEvent: (eventName, args) => {\n DeviceEventEmitter.emit(eventName, args.nativeEvent);\n },\n handlerType: gesture.handlerName as HandlerNames,\n handlerTag: gesture.handlerTag,\n };\n }\n const gestureHandlerComponent = componentOrGesture;\n return {\n emitEvent: (eventName, args) => {\n fireEvent(gestureHandlerComponent, eventName, args);\n },\n handlerType: gestureHandlerComponent.props.handlerType as HandlerNames,\n handlerTag: gestureHandlerComponent.props.handlerTag as number,\n };\n}\ntype AllGestures =\n | TapGesture\n | PanGesture\n | LongPressGesture\n | RotationGesture\n | PinchGesture\n | FlingGesture\n | ForceTouchGesture\n | NativeGesture;\n\ntype AllHandlers =\n | TapGestureHandler\n | PanGestureHandler\n | LongPressGestureHandler\n | RotationGestureHandler\n | PinchGestureHandler\n | FlingGestureHandler\n | ForceTouchGestureHandler\n | NativeViewGestureHandler;\n\n// prettier-ignore\ntype ClassComponentConstructor

= new (props: P) => React.Component;\n\ntype ExtractPayloadFromProps = T extends BaseGestureHandlerProps<\n infer TPayload\n>\n ? TPayload\n : never;\n\ntype ExtractConfig = T extends BaseGesture\n ? TGesturePayload\n : T extends ClassComponentConstructor\n ? ExtractPayloadFromProps\n : Record;\n\nexport function fireGestureHandler(\n componentOrGesture: ReactTestInstance | GestureType,\n eventList: Partial>>[] = []\n): void {\n const { emitEvent, handlerType, handlerTag } =\n getHandlerData(componentOrGesture);\n\n let _ = fillMissingStatesTransitions(\n eventList,\n isDiscreteHandler(handlerType)\n );\n _ = _.map(fillMissingDefaultsFor({ handlerTag, handlerType }));\n _ = withPrevAndCurrent(_, fillOldStateChanges);\n _ = withPrevAndCurrent(_, validateStateTransitions);\n // @ts-ignore TODO\n _ = _.map(wrapWithNativeEvent);\n\n const events = _ as unknown as WrappedGestureHandlerTestEvent[];\n\n const firstEvent = events.shift()!;\n\n emitEvent('onGestureHandlerStateChange', firstEvent);\n let lastSentEvent = firstEvent;\n for (const event of events) {\n const hasChangedState =\n lastSentEvent.nativeEvent.state !== event.nativeEvent.state;\n\n if (hasChangedState) {\n emitEvent('onGestureHandlerStateChange', event);\n } else {\n emitEvent('onGestureHandlerEvent', event);\n }\n lastSentEvent = event;\n }\n}\n\nexport function getByGestureTestId(testID: string) {\n const handler = findHandlerByTestID(testID);\n if (handler === null) {\n throw new Error(`Handler with id: '${testID}' cannot be found`);\n }\n return handler;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js new file mode 100644 index 00000000..66de608e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js @@ -0,0 +1,66 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _State = require("./State"); + +var _Directions = require("./Directions"); + +const NOOP = () => {// do nothing +}; + +const PanGestureHandler = _reactNative.View; +const attachGestureHandler = NOOP; +const createGestureHandler = NOOP; +const dropGestureHandler = NOOP; +const updateGestureHandler = NOOP; +const flushOperations = NOOP; +const NativeViewGestureHandler = _reactNative.View; +const TapGestureHandler = _reactNative.View; +const ForceTouchGestureHandler = _reactNative.View; +const LongPressGestureHandler = _reactNative.View; +const PinchGestureHandler = _reactNative.View; +const RotationGestureHandler = _reactNative.View; +const FlingGestureHandler = _reactNative.View; +const RawButton = _reactNative.TouchableNativeFeedback; +const BaseButton = _reactNative.TouchableNativeFeedback; +const RectButton = _reactNative.TouchableNativeFeedback; +const BorderlessButton = _reactNative.TouchableNativeFeedback; +var _default = { + TouchableHighlight: _reactNative.TouchableHighlight, + TouchableNativeFeedback: _reactNative.TouchableNativeFeedback, + TouchableOpacity: _reactNative.TouchableOpacity, + TouchableWithoutFeedback: _reactNative.TouchableWithoutFeedback, + ScrollView: _reactNative.ScrollView, + FlatList: _reactNative.FlatList, + Switch: _reactNative.Switch, + TextInput: _reactNative.TextInput, + DrawerLayoutAndroid: _reactNative.DrawerLayoutAndroid, + NativeViewGestureHandler, + TapGestureHandler, + ForceTouchGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + RawButton, + BaseButton, + RectButton, + BorderlessButton, + PanGestureHandler, + attachGestureHandler, + createGestureHandler, + dropGestureHandler, + updateGestureHandler, + flushOperations, + // probably can be removed + Directions: _Directions.Directions, + State: _State.State +}; +exports.default = _default; +//# sourceMappingURL=mocks.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js.map new file mode 100644 index 00000000..8dd970a1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/mocks.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["mocks.ts"],"names":["NOOP","PanGestureHandler","View","attachGestureHandler","createGestureHandler","dropGestureHandler","updateGestureHandler","flushOperations","NativeViewGestureHandler","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","RawButton","TouchableNativeFeedback","BaseButton","RectButton","BorderlessButton","TouchableHighlight","TouchableOpacity","TouchableWithoutFeedback","ScrollView","FlatList","Switch","TextInput","DrawerLayoutAndroid","Directions","State"],"mappings":";;;;;;;AAAA;;AAYA;;AACA;;AAEA,MAAMA,IAAI,GAAG,MAAM,CACjB;AACD,CAFD;;AAGA,MAAMC,iBAAiB,GAAGC,iBAA1B;AACA,MAAMC,oBAAoB,GAAGH,IAA7B;AACA,MAAMI,oBAAoB,GAAGJ,IAA7B;AACA,MAAMK,kBAAkB,GAAGL,IAA3B;AACA,MAAMM,oBAAoB,GAAGN,IAA7B;AACA,MAAMO,eAAe,GAAGP,IAAxB;AACA,MAAMQ,wBAAwB,GAAGN,iBAAjC;AACA,MAAMO,iBAAiB,GAAGP,iBAA1B;AACA,MAAMQ,wBAAwB,GAAGR,iBAAjC;AACA,MAAMS,uBAAuB,GAAGT,iBAAhC;AACA,MAAMU,mBAAmB,GAAGV,iBAA5B;AACA,MAAMW,sBAAsB,GAAGX,iBAA/B;AACA,MAAMY,mBAAmB,GAAGZ,iBAA5B;AACA,MAAMa,SAAS,GAAGC,oCAAlB;AACA,MAAMC,UAAU,GAAGD,oCAAnB;AACA,MAAME,UAAU,GAAGF,oCAAnB;AACA,MAAMG,gBAAgB,GAAGH,oCAAzB;eAEe;AACbI,EAAAA,kBAAkB,EAAlBA,+BADa;AAEbJ,EAAAA,uBAAuB,EAAvBA,oCAFa;AAGbK,EAAAA,gBAAgB,EAAhBA,6BAHa;AAIbC,EAAAA,wBAAwB,EAAxBA,qCAJa;AAKbC,EAAAA,UAAU,EAAVA,uBALa;AAMbC,EAAAA,QAAQ,EAARA,qBANa;AAObC,EAAAA,MAAM,EAANA,mBAPa;AAQbC,EAAAA,SAAS,EAATA,sBARa;AASbC,EAAAA,mBAAmB,EAAnBA,gCATa;AAUbnB,EAAAA,wBAVa;AAWbC,EAAAA,iBAXa;AAYbC,EAAAA,wBAZa;AAabC,EAAAA,uBAba;AAcbC,EAAAA,mBAda;AAebC,EAAAA,sBAfa;AAgBbC,EAAAA,mBAhBa;AAiBbC,EAAAA,SAjBa;AAkBbE,EAAAA,UAlBa;AAmBbC,EAAAA,UAnBa;AAoBbC,EAAAA,gBApBa;AAqBblB,EAAAA,iBArBa;AAsBbE,EAAAA,oBAtBa;AAuBbC,EAAAA,oBAvBa;AAwBbC,EAAAA,kBAxBa;AAyBbC,EAAAA,oBAzBa;AA0BbC,EAAAA,eA1Ba;AA2Bb;AACAqB,EAAAA,UAAU,EAAVA,sBA5Ba;AA6BbC,EAAAA,KAAK,EAALA;AA7Ba,C","sourcesContent":["import {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n ScrollView,\n FlatList,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n View,\n} from 'react-native';\nimport { State } from './State';\nimport { Directions } from './Directions';\n\nconst NOOP = () => {\n // do nothing\n};\nconst PanGestureHandler = View;\nconst attachGestureHandler = NOOP;\nconst createGestureHandler = NOOP;\nconst dropGestureHandler = NOOP;\nconst updateGestureHandler = NOOP;\nconst flushOperations = NOOP;\nconst NativeViewGestureHandler = View;\nconst TapGestureHandler = View;\nconst ForceTouchGestureHandler = View;\nconst LongPressGestureHandler = View;\nconst PinchGestureHandler = View;\nconst RotationGestureHandler = View;\nconst FlingGestureHandler = View;\nconst RawButton = TouchableNativeFeedback;\nconst BaseButton = TouchableNativeFeedback;\nconst RectButton = TouchableNativeFeedback;\nconst BorderlessButton = TouchableNativeFeedback;\n\nexport default {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n ScrollView,\n FlatList,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n NativeViewGestureHandler,\n TapGestureHandler,\n ForceTouchGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n PanGestureHandler,\n attachGestureHandler,\n createGestureHandler,\n dropGestureHandler,\n updateGestureHandler,\n flushOperations,\n // probably can be removed\n Directions,\n State,\n} as const;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js new file mode 100644 index 00000000..ae0eefb3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=typeUtils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js.map new file mode 100644 index 00000000..9ffd4b22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/typeUtils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js new file mode 100644 index 00000000..588702ff --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js @@ -0,0 +1,82 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toArray = toArray; +exports.withPrevAndCurrent = withPrevAndCurrent; +exports.hasProperty = hasProperty; +exports.isJestEnv = isJestEnv; +exports.tagMessage = tagMessage; +exports.isFabric = isFabric; +exports.shouldUseCodegenNativeComponent = shouldUseCodegenNativeComponent; +exports.isRemoteDebuggingEnabled = isRemoteDebuggingEnabled; +exports.REACT_NATIVE_VERSION = void 0; + +var _package = _interopRequireDefault(require("react-native/package.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const [majorStr, minorStr] = _package.default.version.split('.'); + +const REACT_NATIVE_VERSION = { + major: parseInt(majorStr, 10), + minor: parseInt(minorStr, 10) +}; +exports.REACT_NATIVE_VERSION = REACT_NATIVE_VERSION; + +function toArray(object) { + if (!Array.isArray(object)) { + return [object]; + } + + return object; +} + +function withPrevAndCurrent(array, mapFn) { + const previousArr = [null]; + const currentArr = [...array]; + const transformedArr = []; + currentArr.forEach((current, i) => { + const previous = previousArr[i]; + const transformed = mapFn(previous, current); + previousArr.push(transformed); + transformedArr.push(transformed); + }); + return transformedArr; +} // eslint-disable-next-line @typescript-eslint/ban-types + + +function hasProperty(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function isJestEnv() { + // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects. + return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID; +} + +function tagMessage(msg) { + return `[react-native-gesture-handler] ${msg}`; +} // helper method to check whether Fabric is enabled, however global.nativeFabricUIManager +// may not be initialized before the first render + + +function isFabric() { + var _global; + + // @ts-expect-error nativeFabricUIManager is not yet included in the RN types + return !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager); +} + +function shouldUseCodegenNativeComponent() { + // use codegenNativeComponent starting with RN 0.68 + return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0; +} + +function isRemoteDebuggingEnabled() { + // react-native-reanimated checks if in remote debugging in the same way + // @ts-ignore global is available but node types are not included + return !global.nativeCallSyncHook || global.__REMOTEDEV__; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js.map new file mode 100644 index 00000000..35a8b6e1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.ts"],"names":["majorStr","minorStr","pack","version","split","REACT_NATIVE_VERSION","major","parseInt","minor","toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager","shouldUseCodegenNativeComponent","isRemoteDebuggingEnabled","nativeCallSyncHook","__REMOTEDEV__"],"mappings":";;;;;;;;;;;;;;;AAAA;;;;AAEA,MAAM,CAACA,QAAD,EAAWC,QAAX,IAAuBC,iBAAKC,OAAL,CAAaC,KAAb,CAAmB,GAAnB,CAA7B;;AACO,MAAMC,oBAAoB,GAAG;AAClCC,EAAAA,KAAK,EAAEC,QAAQ,CAACP,QAAD,EAAW,EAAX,CADmB;AAElCQ,EAAAA,KAAK,EAAED,QAAQ,CAACN,QAAD,EAAW,EAAX;AAFmB,CAA7B;;;AAKA,SAASQ,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;;AAMM,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;;AACO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;;AAEM,SAASK,SAAT,GAA8B;AACnC;AACA,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;;AAEM,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD,C,CAED;AACA;;;AACO,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD;;AAEM,SAASC,+BAAT,GAAoD;AACzD;AACA,SAAOnC,oBAAoB,CAACG,KAArB,IAA8B,EAA9B,IAAoCH,oBAAoB,CAACC,KAArB,GAA6B,CAAxE;AACD;;AAEM,SAASmC,wBAAT,GAA6C;AAClD;AACA;AACA,SAAO,CAAET,MAAD,CAAgBU,kBAAjB,IAAwCV,MAAD,CAAgBW,aAA9D;AACD","sourcesContent":["import pack from 'react-native/package.json';\n\nconst [majorStr, minorStr] = pack.version.split('.');\nexport const REACT_NATIVE_VERSION = {\n major: parseInt(majorStr, 10),\n minor: parseInt(minorStr, 10),\n};\n\nexport function toArray(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent(\n array: T[],\n mapFn: withPrevAndCurrentMapFn\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects.\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\n// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager\n// may not be initialized before the first render\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n\nexport function shouldUseCodegenNativeComponent(): boolean {\n // use codegenNativeComponent starting with RN 0.68\n return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0;\n}\n\nexport function isRemoteDebuggingEnabled(): boolean {\n // react-native-reanimated checks if in remote debugging in the same way\n // @ts-ignore global is available but node types are not included\n return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js new file mode 100644 index 00000000..a99c1875 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Direction = exports.DEFAULT_TOUCH_SLOP = void 0; +const DEFAULT_TOUCH_SLOP = 15; +exports.DEFAULT_TOUCH_SLOP = DEFAULT_TOUCH_SLOP; +const Direction = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8 +}; +exports.Direction = Direction; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js.map new file mode 100644 index 00000000..5d24281a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/constants.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["constants.ts"],"names":["DEFAULT_TOUCH_SLOP","Direction","RIGHT","LEFT","UP","DOWN"],"mappings":";;;;;;AAAO,MAAMA,kBAAkB,GAAG,EAA3B;;AAEA,MAAMC,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,IAAI,EAAE,CAFiB;AAGvBC,EAAAA,EAAE,EAAE,CAHmB;AAIvBC,EAAAA,IAAI,EAAE;AAJiB,CAAlB","sourcesContent":["export const DEFAULT_TOUCH_SLOP = 15;\n\nexport const Direction = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js new file mode 100644 index 00000000..c37b16ac --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js @@ -0,0 +1,165 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _interfaces = require("../interfaces"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class RotationGestureDetector { + constructor(callbacks) { + _defineProperty(this, "onRotationBegin", void 0); + + _defineProperty(this, "onRotation", void 0); + + _defineProperty(this, "onRotationEnd", void 0); + + _defineProperty(this, "currentTime", 0); + + _defineProperty(this, "previousTime", 0); + + _defineProperty(this, "previousAngle", 0); + + _defineProperty(this, "rotation", 0); + + _defineProperty(this, "anchorX", 0); + + _defineProperty(this, "anchorY", 0); + + _defineProperty(this, "isInProgress", false); + + _defineProperty(this, "keyPointers", [NaN, NaN]); + + this.onRotationBegin = callbacks.onRotationBegin; + this.onRotation = callbacks.onRotation; + this.onRotationEnd = callbacks.onRotationEnd; + } + + updateCurrent(event, tracker) { + this.previousTime = this.currentTime; + this.currentTime = event.time; + const [firstPointerID, secondPointerID] = this.keyPointers; + const firstPointerX = tracker.getLastX(firstPointerID); + const firstPointerY = tracker.getLastY(firstPointerID); + const secondPointerX = tracker.getLastX(secondPointerID); + const secondPointerY = tracker.getLastY(secondPointerID); + const vectorX = secondPointerX - firstPointerX; + const vectorY = secondPointerY - firstPointerY; + this.anchorX = (firstPointerX + secondPointerX) / 2; + this.anchorY = (firstPointerY + secondPointerY) / 2; //Angle diff should be positive when rotating in clockwise direction + + const angle = -Math.atan2(vectorY, vectorX); + this.rotation = Number.isNaN(this.previousAngle) ? 0 : this.previousAngle - angle; + this.previousAngle = angle; + + if (this.rotation > Math.PI) { + this.rotation -= Math.PI; + } else if (this.rotation < -Math.PI) { + this.rotation += Math.PI; + } + + if (this.rotation > Math.PI / 2) { + this.rotation -= Math.PI; + } else if (this.rotation < -Math.PI / 2) { + this.rotation += Math.PI; + } + } + + finish() { + if (!this.isInProgress) { + return; + } + + this.isInProgress = false; + this.keyPointers = [NaN, NaN]; + this.onRotationEnd(this); + } + + setKeyPointers(tracker) { + if (this.keyPointers[0] && this.keyPointers[1]) { + return; + } + + const pointerIDs = tracker.getData().keys(); + this.keyPointers[0] = pointerIDs.next().value; + this.keyPointers[1] = pointerIDs.next().value; + } + + onTouchEvent(event, tracker) { + switch (event.eventType) { + case _interfaces.EventTypes.DOWN: + this.isInProgress = false; + break; + + case _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN: + if (this.isInProgress) { + break; + } + + this.isInProgress = true; + this.previousTime = event.time; + this.previousAngle = NaN; + this.setKeyPointers(tracker); + this.updateCurrent(event, tracker); + this.onRotationBegin(this); + break; + + case _interfaces.EventTypes.MOVE: + if (!this.isInProgress) { + break; + } + + this.updateCurrent(event, tracker); + this.onRotation(this); + break; + + case _interfaces.EventTypes.ADDITIONAL_POINTER_UP: + if (!this.isInProgress) { + break; + } + + if (this.keyPointers.indexOf(event.pointerId) >= 0) { + this.finish(); + } + + break; + + case _interfaces.EventTypes.UP: + if (this.isInProgress) { + this.finish(); + } + + break; + } + + return true; + } + + getTimeDelta() { + return this.currentTime + this.previousTime; + } + + getAnchorX() { + return this.anchorX; + } + + getAnchorY() { + return this.anchorY; + } + + getRotation() { + return this.rotation; + } + + reset() { + this.keyPointers = [NaN, NaN]; + this.isInProgress = false; + } + +} + +exports.default = RotationGestureDetector; +//# sourceMappingURL=RotationGestureDetector.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js.map new file mode 100644 index 00000000..d3f4219a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/RotationGestureDetector.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureDetector.ts"],"names":["RotationGestureDetector","constructor","callbacks","NaN","onRotationBegin","onRotation","onRotationEnd","updateCurrent","event","tracker","previousTime","currentTime","time","firstPointerID","secondPointerID","keyPointers","firstPointerX","getLastX","firstPointerY","getLastY","secondPointerX","secondPointerY","vectorX","vectorY","anchorX","anchorY","angle","Math","atan2","rotation","Number","isNaN","previousAngle","PI","finish","isInProgress","setKeyPointers","pointerIDs","getData","keys","next","value","onTouchEvent","eventType","EventTypes","DOWN","ADDITIONAL_POINTER_DOWN","MOVE","ADDITIONAL_POINTER_UP","indexOf","pointerId","UP","getTimeDelta","getAnchorX","getAnchorY","getRotation","reset"],"mappings":"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","sourcesContent":["import { AdaptedEvent, EventTypes } from '../interfaces';\nimport PointerTracker from '../tools/PointerTracker';\n\nexport interface RotationGestureListener {\n onRotationBegin: (detector: RotationGestureDetector) => boolean;\n onRotation: (detector: RotationGestureDetector) => boolean;\n onRotationEnd: (detector: RotationGestureDetector) => void;\n}\n\nexport default class RotationGestureDetector\n implements RotationGestureListener\n{\n onRotationBegin: (detector: RotationGestureDetector) => boolean;\n onRotation: (detector: RotationGestureDetector) => boolean;\n onRotationEnd: (detector: RotationGestureDetector) => void;\n\n private currentTime = 0;\n private previousTime = 0;\n\n private previousAngle = 0;\n private rotation = 0;\n\n private anchorX = 0;\n private anchorY = 0;\n\n private isInProgress = false;\n\n private keyPointers: number[] = [NaN, NaN];\n\n constructor(callbacks: RotationGestureListener) {\n this.onRotationBegin = callbacks.onRotationBegin;\n this.onRotation = callbacks.onRotation;\n this.onRotationEnd = callbacks.onRotationEnd;\n }\n\n private updateCurrent(event: AdaptedEvent, tracker: PointerTracker): void {\n this.previousTime = this.currentTime;\n this.currentTime = event.time;\n\n const [firstPointerID, secondPointerID] = this.keyPointers;\n\n const firstPointerX: number = tracker.getLastX(firstPointerID);\n const firstPointerY: number = tracker.getLastY(firstPointerID);\n const secondPointerX: number = tracker.getLastX(secondPointerID);\n const secondPointerY: number = tracker.getLastY(secondPointerID);\n\n const vectorX: number = secondPointerX - firstPointerX;\n const vectorY: number = secondPointerY - firstPointerY;\n\n this.anchorX = (firstPointerX + secondPointerX) / 2;\n this.anchorY = (firstPointerY + secondPointerY) / 2;\n\n //Angle diff should be positive when rotating in clockwise direction\n const angle: number = -Math.atan2(vectorY, vectorX);\n\n this.rotation = Number.isNaN(this.previousAngle)\n ? 0\n : this.previousAngle - angle;\n\n this.previousAngle = angle;\n\n if (this.rotation > Math.PI) {\n this.rotation -= Math.PI;\n } else if (this.rotation < -Math.PI) {\n this.rotation += Math.PI;\n }\n\n if (this.rotation > Math.PI / 2) {\n this.rotation -= Math.PI;\n } else if (this.rotation < -Math.PI / 2) {\n this.rotation += Math.PI;\n }\n }\n\n private finish(): void {\n if (!this.isInProgress) {\n return;\n }\n\n this.isInProgress = false;\n this.keyPointers = [NaN, NaN];\n this.onRotationEnd(this);\n }\n\n private setKeyPointers(tracker: PointerTracker): void {\n if (this.keyPointers[0] && this.keyPointers[1]) {\n return;\n }\n\n const pointerIDs: IterableIterator = tracker.getData().keys();\n\n this.keyPointers[0] = pointerIDs.next().value as number;\n this.keyPointers[1] = pointerIDs.next().value as number;\n }\n\n public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {\n switch (event.eventType) {\n case EventTypes.DOWN:\n this.isInProgress = false;\n break;\n\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n if (this.isInProgress) {\n break;\n }\n this.isInProgress = true;\n\n this.previousTime = event.time;\n this.previousAngle = NaN;\n\n this.setKeyPointers(tracker);\n\n this.updateCurrent(event, tracker);\n this.onRotationBegin(this);\n break;\n\n case EventTypes.MOVE:\n if (!this.isInProgress) {\n break;\n }\n\n this.updateCurrent(event, tracker);\n this.onRotation(this);\n\n break;\n\n case EventTypes.ADDITIONAL_POINTER_UP:\n if (!this.isInProgress) {\n break;\n }\n\n if (this.keyPointers.indexOf(event.pointerId) >= 0) {\n this.finish();\n }\n\n break;\n\n case EventTypes.UP:\n if (this.isInProgress) {\n this.finish();\n }\n break;\n }\n\n return true;\n }\n\n public getTimeDelta(): number {\n return this.currentTime + this.previousTime;\n }\n\n public getAnchorX(): number {\n return this.anchorX;\n }\n\n public getAnchorY(): number {\n return this.anchorY;\n }\n\n public getRotation(): number {\n return this.rotation;\n }\n\n public reset(): void {\n this.keyPointers = [NaN, NaN];\n this.isInProgress = false;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js new file mode 100644 index 00000000..3adac6e4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js @@ -0,0 +1,156 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _constants = require("../constants"); + +var _interfaces = require("../interfaces"); + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class ScaleGestureDetector { + constructor(callbacks) { + _defineProperty(this, "onScaleBegin", void 0); + + _defineProperty(this, "onScale", void 0); + + _defineProperty(this, "onScaleEnd", void 0); + + _defineProperty(this, "focusX", void 0); + + _defineProperty(this, "focusY", void 0); + + _defineProperty(this, "currentSpan", void 0); + + _defineProperty(this, "prevSpan", void 0); + + _defineProperty(this, "initialSpan", void 0); + + _defineProperty(this, "currentTime", void 0); + + _defineProperty(this, "prevTime", void 0); + + _defineProperty(this, "inProgress", false); + + _defineProperty(this, "spanSlop", void 0); + + _defineProperty(this, "minSpan", void 0); + + this.onScaleBegin = callbacks.onScaleBegin; + this.onScale = callbacks.onScale; + this.onScaleEnd = callbacks.onScaleEnd; + this.spanSlop = _constants.DEFAULT_TOUCH_SLOP * 2; + this.minSpan = 0; + } + + onTouchEvent(event, tracker) { + this.currentTime = event.time; + const action = event.eventType; + const numOfPointers = tracker.getTrackedPointersCount(); + const streamComplete = action === _interfaces.EventTypes.UP || action === _interfaces.EventTypes.ADDITIONAL_POINTER_UP || action === _interfaces.EventTypes.CANCEL; + + if (action === _interfaces.EventTypes.DOWN || streamComplete) { + if (this.inProgress) { + this.onScaleEnd(this); + this.inProgress = false; + this.initialSpan = 0; + } + + if (streamComplete) { + return true; + } + } + + const configChanged = action === _interfaces.EventTypes.DOWN || action === _interfaces.EventTypes.ADDITIONAL_POINTER_UP || action === _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN; + const pointerUp = action === _interfaces.EventTypes.ADDITIONAL_POINTER_UP; + const ignoredPointer = pointerUp ? event.pointerId : undefined; //Determine focal point + + const div = pointerUp ? numOfPointers - 1 : numOfPointers; + const sumX = tracker.getSumX(ignoredPointer); + const sumY = tracker.getSumY(ignoredPointer); + const focusX = sumX / div; + const focusY = sumY / div; //Determine average deviation from focal point + + let devSumX = 0; + let devSumY = 0; + tracker.getData().forEach((value, key) => { + if (key === ignoredPointer) { + return; + } + + devSumX += Math.abs(value.lastX - focusX); + devSumY += Math.abs(value.lastY - focusY); + }); + const devX = devSumX / div; + const devY = devSumY / div; + const spanX = devX * 2; + const spanY = devY * 2; + const span = Math.hypot(spanX, spanY); //Begin/end events + + const wasInProgress = this.inProgress; + this.focusX = focusX; + this.focusY = focusY; + + if (this.inProgress && (span < this.minSpan || configChanged)) { + this.onScaleEnd(this); + this.inProgress = false; + this.initialSpan = span; + } + + if (configChanged) { + this.initialSpan = this.prevSpan = this.currentSpan = span; + } + + if (!this.inProgress && span >= this.minSpan && (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop)) { + this.prevSpan = this.currentSpan = span; + this.prevTime = this.currentTime; + this.inProgress = this.onScaleBegin(this); + } //Handle motion + + + if (action !== _interfaces.EventTypes.MOVE) { + return true; + } + + this.currentSpan = span; + + if (this.inProgress && !this.onScale(this)) { + return true; + } + + this.prevSpan = this.currentSpan; + this.prevTime = this.currentTime; + return true; + } + + getCurrentSpan() { + return this.currentSpan; + } + + getFocusX() { + return this.focusX; + } + + getFocusY() { + return this.focusY; + } + + getTimeDelta() { + return this.currentTime - this.prevTime; + } + + getScaleFactor(numOfPointers) { + if (numOfPointers < 2) { + return 1; + } + + return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1; + } + +} + +exports.default = ScaleGestureDetector; +//# sourceMappingURL=ScaleGestureDetector.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js.map new file mode 100644 index 00000000..b8fc61fc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/detectors/ScaleGestureDetector.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ScaleGestureDetector.ts"],"names":["ScaleGestureDetector","constructor","callbacks","onScaleBegin","onScale","onScaleEnd","spanSlop","DEFAULT_TOUCH_SLOP","minSpan","onTouchEvent","event","tracker","currentTime","time","action","eventType","numOfPointers","getTrackedPointersCount","streamComplete","EventTypes","UP","ADDITIONAL_POINTER_UP","CANCEL","DOWN","inProgress","initialSpan","configChanged","ADDITIONAL_POINTER_DOWN","pointerUp","ignoredPointer","pointerId","undefined","div","sumX","getSumX","sumY","getSumY","focusX","focusY","devSumX","devSumY","getData","forEach","value","key","Math","abs","lastX","lastY","devX","devY","spanX","spanY","span","hypot","wasInProgress","prevSpan","currentSpan","prevTime","MOVE","getCurrentSpan","getFocusX","getFocusY","getTimeDelta","getScaleFactor"],"mappings":"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","sourcesContent":["import { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, EventTypes } from '../interfaces';\n\nimport PointerTracker from '../tools/PointerTracker';\n\nexport interface ScaleGestureListener {\n onScaleBegin: (detector: ScaleGestureDetector) => boolean;\n onScale: (detector: ScaleGestureDetector) => boolean;\n onScaleEnd: (detector: ScaleGestureDetector) => void;\n}\n\nexport default class ScaleGestureDetector implements ScaleGestureListener {\n public onScaleBegin: (detector: ScaleGestureDetector) => boolean;\n public onScale: (detector: ScaleGestureDetector) => boolean;\n public onScaleEnd: (detector: ScaleGestureDetector) => void;\n\n private focusX!: number;\n private focusY!: number;\n\n private currentSpan!: number;\n private prevSpan!: number;\n private initialSpan!: number;\n\n private currentTime!: number;\n private prevTime!: number;\n\n private inProgress = false;\n\n private spanSlop: number;\n private minSpan: number;\n\n public constructor(callbacks: ScaleGestureListener) {\n this.onScaleBegin = callbacks.onScaleBegin;\n this.onScale = callbacks.onScale;\n this.onScaleEnd = callbacks.onScaleEnd;\n\n this.spanSlop = DEFAULT_TOUCH_SLOP * 2;\n this.minSpan = 0;\n }\n\n public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {\n this.currentTime = event.time;\n\n const action: EventTypes = event.eventType;\n const numOfPointers = tracker.getTrackedPointersCount();\n\n const streamComplete: boolean =\n action === EventTypes.UP ||\n action === EventTypes.ADDITIONAL_POINTER_UP ||\n action === EventTypes.CANCEL;\n\n if (action === EventTypes.DOWN || streamComplete) {\n if (this.inProgress) {\n this.onScaleEnd(this);\n this.inProgress = false;\n this.initialSpan = 0;\n }\n\n if (streamComplete) {\n return true;\n }\n }\n\n const configChanged: boolean =\n action === EventTypes.DOWN ||\n action === EventTypes.ADDITIONAL_POINTER_UP ||\n action === EventTypes.ADDITIONAL_POINTER_DOWN;\n\n const pointerUp = action === EventTypes.ADDITIONAL_POINTER_UP;\n\n const ignoredPointer: number | undefined = pointerUp\n ? event.pointerId\n : undefined;\n\n //Determine focal point\n\n const div: number = pointerUp ? numOfPointers - 1 : numOfPointers;\n\n const sumX = tracker.getSumX(ignoredPointer);\n const sumY = tracker.getSumY(ignoredPointer);\n\n const focusX = sumX / div;\n const focusY = sumY / div;\n\n //Determine average deviation from focal point\n\n let devSumX = 0;\n let devSumY = 0;\n\n tracker.getData().forEach((value, key) => {\n if (key === ignoredPointer) {\n return;\n }\n\n devSumX += Math.abs(value.lastX - focusX);\n devSumY += Math.abs(value.lastY - focusY);\n });\n\n const devX: number = devSumX / div;\n const devY: number = devSumY / div;\n\n const spanX: number = devX * 2;\n const spanY: number = devY * 2;\n\n const span = Math.hypot(spanX, spanY);\n\n //Begin/end events\n const wasInProgress: boolean = this.inProgress;\n this.focusX = focusX;\n this.focusY = focusY;\n\n if (this.inProgress && (span < this.minSpan || configChanged)) {\n this.onScaleEnd(this);\n this.inProgress = false;\n this.initialSpan = span;\n }\n\n if (configChanged) {\n this.initialSpan = this.prevSpan = this.currentSpan = span;\n }\n\n if (\n !this.inProgress &&\n span >= this.minSpan &&\n (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop)\n ) {\n this.prevSpan = this.currentSpan = span;\n this.prevTime = this.currentTime;\n this.inProgress = this.onScaleBegin(this);\n }\n\n //Handle motion\n if (action !== EventTypes.MOVE) {\n return true;\n }\n\n this.currentSpan = span;\n\n if (this.inProgress && !this.onScale(this)) {\n return true;\n }\n\n this.prevSpan = this.currentSpan;\n this.prevTime = this.currentTime;\n\n return true;\n }\n\n public getCurrentSpan(): number {\n return this.currentSpan;\n }\n\n public getFocusX(): number {\n return this.focusX;\n }\n\n public getFocusY(): number {\n return this.focusY;\n }\n\n public getTimeDelta(): number {\n return this.currentTime - this.prevTime;\n }\n\n public getScaleFactor(numOfPointers: number): number {\n if (numOfPointers < 2) {\n return 1;\n }\n\n return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js new file mode 100644 index 00000000..f83fd6b3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js @@ -0,0 +1,182 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _constants = require("../constants"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const DEFAULT_MAX_DURATION_MS = 800; +const DEFAULT_MIN_ACCEPTABLE_DELTA = 160; +const DEFAULT_DIRECTION = _constants.Direction.RIGHT; +const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1; + +class FlingGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "numberOfPointersRequired", DEFAULT_NUMBER_OF_TOUCHES_REQUIRED); + + _defineProperty(this, "direction", DEFAULT_DIRECTION); + + _defineProperty(this, "maxDurationMs", DEFAULT_MAX_DURATION_MS); + + _defineProperty(this, "minAcceptableDelta", DEFAULT_MIN_ACCEPTABLE_DELTA); + + _defineProperty(this, "delayTimeout", void 0); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "maxNumberOfPointersSimultaneously", 0); + + _defineProperty(this, "keyPointer", NaN); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.direction) { + this.direction = this.config.direction; + } + + if (this.config.numberOfPointers) { + this.numberOfPointersRequired = this.config.numberOfPointers; + } + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY() + }; + } + + startFling() { + this.startX = this.tracker.getLastX(this.keyPointer); + this.startY = this.tracker.getLastY(this.keyPointer); + this.begin(); + this.maxNumberOfPointersSimultaneously = 1; + this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs); + } + + tryEndFling() { + if (this.maxNumberOfPointersSimultaneously === this.numberOfPointersRequired && (this.direction & _constants.Direction.RIGHT && this.tracker.getLastX(this.keyPointer) - this.startX > this.minAcceptableDelta || this.direction & _constants.Direction.LEFT && this.startX - this.tracker.getLastX(this.keyPointer) > this.minAcceptableDelta || this.direction & _constants.Direction.UP && this.startY - this.tracker.getLastY(this.keyPointer) > this.minAcceptableDelta || this.direction & _constants.Direction.DOWN && this.tracker.getLastY(this.keyPointer) - this.startY > this.minAcceptableDelta)) { + clearTimeout(this.delayTimeout); + this.activate(); + return true; + } + + return false; + } + + endFling() { + if (!this.tryEndFling()) { + this.fail(); + } + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + this.keyPointer = event.pointerId; + super.onPointerDown(event); + this.newPointerAction(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.newPointerAction(); + } + + newPointerAction() { + if (this.currentState === _State.State.UNDETERMINED) { + this.startFling(); + } + + if (this.currentState !== _State.State.BEGAN) { + return; + } + + this.tryEndFling(); + + if (this.tracker.getTrackedPointersCount() > this.maxNumberOfPointersSimultaneously) { + this.maxNumberOfPointersSimultaneously = this.tracker.getTrackedPointersCount(); + } + } + + onPointerMove(event) { + this.tracker.track(event); + + if (this.currentState !== _State.State.BEGAN) { + return; + } + + this.tryEndFling(); + super.onPointerMove(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.onUp(event); + this.keyPointer = NaN; + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.onUp(event); + } + + onUp(event) { + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState !== _State.State.BEGAN) { + return; + } + + this.endFling(); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + + activate(force) { + super.activate(force); + this.end(); + } + + resetConfig() { + super.resetConfig(); + this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED; + this.direction = DEFAULT_DIRECTION; + } + +} + +exports.default = FlingGestureHandler; +//# sourceMappingURL=FlingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js.map new file mode 100644 index 00000000..a96b3b67 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/FlingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["FlingGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","Direction","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","GestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","startFling","startX","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","State","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","onPointerCancel","reset","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js new file mode 100644 index 00000000..f9a2ba4e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js @@ -0,0 +1,818 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _State = require("../../State"); + +var _interfaces = require("../interfaces"); + +var _GestureHandlerOrchestrator = _interopRequireDefault(require("../tools/GestureHandlerOrchestrator")); + +var _InteractionManager = _interopRequireDefault(require("../tools/InteractionManager")); + +var _PointerEventManager = _interopRequireDefault(require("../tools/PointerEventManager")); + +var _PointerTracker = _interopRequireDefault(require("../tools/PointerTracker")); + +var _TouchEventManager = _interopRequireDefault(require("../tools/TouchEventManager")); + +var _utils = require("../utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class GestureHandler { + // Orchestrator properties + constructor() { + _defineProperty(this, "lastSentState", null); + + _defineProperty(this, "currentState", _State.State.UNDETERMINED); + + _defineProperty(this, "shouldCancellWhenOutside", false); + + _defineProperty(this, "hasCustomActivationCriteria", void 0); + + _defineProperty(this, "enabled", false); + + _defineProperty(this, "ref", void 0); + + _defineProperty(this, "propsRef", void 0); + + _defineProperty(this, "handlerTag", void 0); + + _defineProperty(this, "config", { + enabled: false + }); + + _defineProperty(this, "view", void 0); + + _defineProperty(this, "eventManagers", []); + + _defineProperty(this, "tracker", new _PointerTracker.default()); + + _defineProperty(this, "activationIndex", 0); + + _defineProperty(this, "awaiting", false); + + _defineProperty(this, "active", false); + + _defineProperty(this, "shouldResetProgress", false); + + _defineProperty(this, "pointerType", _interfaces.PointerType.NONE); + + _defineProperty(this, "sendEvent", (newState, oldState) => { + const { + onGestureHandlerEvent, + onGestureHandlerStateChange + } = this.propsRef.current; + const resultEvent = this.transformEventData(newState, oldState); // In the new API oldState field has to be undefined, unless we send event state changed + // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back + // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once + // However, this may cause trouble in the future (but for now we don't know that) + + if (this.lastSentState !== newState) { + this.lastSentState = newState; + invokeNullableMethod(onGestureHandlerStateChange, resultEvent); + } + + if (this.currentState === _State.State.ACTIVE) { + resultEvent.nativeEvent.oldState = undefined; + invokeNullableMethod(onGestureHandlerEvent, resultEvent); + } + }); + + this.hasCustomActivationCriteria = false; + } // + // Initializing handler + // + + + init(ref, propsRef) { + this.propsRef = propsRef; + this.ref = ref; + this.currentState = _State.State.UNDETERMINED; + this.setView(); + this.addEventManager(new _PointerEventManager.default(this.view)); + this.addEventManager(new _TouchEventManager.default(this.view)); + } + + setView() { + if (!this.ref) { + throw new Error(`Cannot find HTML Element for handler ${this.handlerTag}`); + } + + this.view = (0, _reactNative.findNodeHandle)(this.ref); + this.view.style['touchAction'] = 'none'; //@ts-ignore This one disables default events on Safari + + this.view.style['WebkitTouchCallout'] = 'none'; + + if (!this.config.userSelect) { + this.view.style['webkitUserSelect'] = 'none'; + this.view.style['userSelect'] = 'none'; + } else { + this.view.style['webkitUserSelect'] = this.config.userSelect; + this.view.style['userSelect'] = this.config.userSelect; + } + } + + addEventManager(manager) { + manager.setOnPointerDown(this.onPointerDown.bind(this)); + manager.setOnPointerAdd(this.onPointerAdd.bind(this)); + manager.setOnPointerUp(this.onPointerUp.bind(this)); + manager.setOnPointerRemove(this.onPointerRemove.bind(this)); + manager.setOnPointerMove(this.onPointerMove.bind(this)); + manager.setOnPointerEnter(this.onPointerEnter.bind(this)); + manager.setOnPointerOut(this.onPointerOut.bind(this)); + manager.setOnPointerCancel(this.onPointerCancel.bind(this)); + manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this)); + manager.setListeners(); + this.eventManagers.push(manager); + } // + // Resetting handler + // + + + onCancel() {} + + onReset() {} + + resetProgress() {} + + reset() { + this.tracker.resetTracker(); + this.onReset(); + this.resetProgress(); + this.eventManagers.forEach(manager => manager.resetManager()); + this.currentState = _State.State.UNDETERMINED; + } // + // State logic + // + + + moveToState(newState, sendIfDisabled) { + if (this.currentState === newState) { + return; + } + + const oldState = this.currentState; + this.currentState = newState; + + if (this.tracker.getTrackedPointersCount() > 0 && this.config.needsPointerData && this.isFinished()) { + this.cancelTouches(); + } + + _GestureHandlerOrchestrator.default.getInstance().onHandlerStateChange(this, newState, oldState, sendIfDisabled); + + this.onStateChange(newState, oldState); + } + + onStateChange(_newState, _oldState) {} + + begin() { + if (!this.checkHitSlop()) { + return; + } + + if (this.currentState === _State.State.UNDETERMINED) { + this.moveToState(_State.State.BEGAN); + } + } + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event + */ + + + fail(sendIfDisabled) { + if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) { + this.moveToState(_State.State.FAILED, sendIfDisabled); + this.view.style.cursor = 'auto'; + } + + this.resetProgress(); + } + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event + */ + + + cancel(sendIfDisabled) { + if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) { + this.onCancel(); + this.moveToState(_State.State.CANCELLED, sendIfDisabled); + this.view.style.cursor = 'auto'; + } + } + + activate(_force = false) { + if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) { + this.moveToState(_State.State.ACTIVE); + this.view.style.cursor = 'grab'; + } + } + + end() { + if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) { + this.moveToState(_State.State.END); + this.view.style.cursor = 'auto'; + } + + this.resetProgress(); + } // + // Methods for orchestrator + // + + + isAwaiting() { + return this.awaiting; + } + + setAwaiting(value) { + this.awaiting = value; + } + + isActive() { + return this.active; + } + + setActive(value) { + this.active = value; + } + + getShouldResetProgress() { + return this.shouldResetProgress; + } + + setShouldResetProgress(value) { + this.shouldResetProgress = value; + } + + getActivationIndex() { + return this.activationIndex; + } + + setActivationIndex(value) { + this.activationIndex = value; + } + + shouldWaitForHandlerFailure(handler) { + if (handler === this) { + return false; + } + + return _InteractionManager.default.getInstance().shouldWaitForHandlerFailure(this, handler); + } + + shouldRequireToWaitForFailure(handler) { + if (handler === this) { + return false; + } + + return _InteractionManager.default.getInstance().shouldRequireHandlerToWaitForFailure(this, handler); + } + + shouldRecognizeSimultaneously(handler) { + if (handler === this) { + return true; + } + + return _InteractionManager.default.getInstance().shouldRecognizeSimultaneously(this, handler); + } + + shouldBeCancelledByOther(handler) { + if (handler === this) { + return false; + } + + return _InteractionManager.default.getInstance().shouldHandlerBeCancelledBy(this, handler); + } // + // Event actions + // + + + onPointerDown(event) { + _GestureHandlerOrchestrator.default.getInstance().recordHandlerIfNotPresent(this); + + this.pointerType = event.pointerType; + + if (this.pointerType === _interfaces.PointerType.TOUCH) { + _GestureHandlerOrchestrator.default.getInstance().cancelMouseAndPenGestures(this); + } + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } // Adding another pointer to existing ones + + + onPointerAdd(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerUp(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } // Removing pointer, when there is more than one pointers + + + onPointerRemove(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerMove(event) { + this.tryToSendMoveEvent(false); + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerOut(event) { + if (this.shouldCancellWhenOutside) { + switch (this.currentState) { + case _State.State.ACTIVE: + this.cancel(); + break; + + case _State.State.BEGAN: + this.fail(); + break; + } + + return; + } + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerEnter(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerCancel(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerOutOfBounds(event) { + this.tryToSendMoveEvent(true); + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + tryToSendMoveEvent(out) { + if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) { + this.sendEvent(this.currentState, this.currentState); + } + } + + sendTouchEvent(event) { + if (!this.enabled) { + return; + } + + const { + onGestureHandlerEvent + } = this.propsRef.current; + const touchEvent = this.transformTouchEvent(event); + + if (touchEvent) { + invokeNullableMethod(onGestureHandlerEvent, touchEvent); + } + } // + // Events Sending + // + + + transformEventData(newState, oldState) { + return { + nativeEvent: { + numberOfPointers: this.tracker.getTrackedPointersCount(), + state: newState, + pointerInside: (0, _utils.isPointerInBounds)(this.view, { + x: this.tracker.getLastAvgX(), + y: this.tracker.getLastAvgY() + }), + ...this.transformNativeEvent(), + handlerTag: this.handlerTag, + target: this.ref, + oldState: newState !== oldState ? oldState : undefined + }, + timeStamp: Date.now() + }; + } + + transformTouchEvent(event) { + var _event$touchEventType; + + const rect = this.view.getBoundingClientRect(); + const all = []; + const changed = []; + const trackerData = this.tracker.getData(); // This if handles edge case where all pointers have been cancelled + // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled + // The problem is, that handler will receive another pointercancel event from the rest of the pointers + // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset + + if (trackerData.size === 0 || !trackerData.has(event.pointerId)) { + return; + } + + trackerData.forEach((element, key) => { + const id = this.tracker.getMappedTouchEventId(key); + all.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + }); // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed. + // However, if the event is cancel, we want to cancel all pointers to avoid crashes + + if (event.eventType !== _interfaces.EventTypes.CANCEL) { + changed.push({ + id: this.tracker.getMappedTouchEventId(event.pointerId), + x: event.x - rect.left, + y: event.y - rect.top, + absoluteX: event.x, + absoluteY: event.y + }); + } else { + trackerData.forEach((element, key) => { + const id = this.tracker.getMappedTouchEventId(key); + changed.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + }); + } + + let eventType = _interfaces.TouchEventType.UNDETERMINED; + + switch (event.eventType) { + case _interfaces.EventTypes.DOWN: + case _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN: + eventType = _interfaces.TouchEventType.DOWN; + break; + + case _interfaces.EventTypes.UP: + case _interfaces.EventTypes.ADDITIONAL_POINTER_UP: + eventType = _interfaces.TouchEventType.UP; + break; + + case _interfaces.EventTypes.MOVE: + eventType = _interfaces.TouchEventType.MOVE; + break; + + case _interfaces.EventTypes.CANCEL: + eventType = _interfaces.TouchEventType.CANCELLED; + break; + } // Here, when we receive up event, we want to decrease number of touches + // That's because we want handler to send information that there's one pointer less + // However, we still want this pointer to be present in allTouches array, so that its data can be accessed + + + let numberOfTouches = all.length; + + if (event.eventType === _interfaces.EventTypes.UP || event.eventType === _interfaces.EventTypes.ADDITIONAL_POINTER_UP) { + --numberOfTouches; + } + + return { + nativeEvent: { + handlerTag: this.handlerTag, + state: this.currentState, + eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType, + changedTouches: changed, + allTouches: all, + numberOfTouches: numberOfTouches + }, + timeStamp: Date.now() + }; + } + + cancelTouches() { + const rect = this.view.getBoundingClientRect(); + const all = []; + const changed = []; + const trackerData = this.tracker.getData(); + + if (trackerData.size === 0) { + return; + } + + trackerData.forEach((element, key) => { + const id = this.tracker.getMappedTouchEventId(key); + all.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + changed.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + }); + const cancelEvent = { + nativeEvent: { + handlerTag: this.handlerTag, + state: this.currentState, + eventType: _interfaces.TouchEventType.CANCELLED, + changedTouches: changed, + allTouches: all, + numberOfTouches: all.length + }, + timeStamp: Date.now() + }; + const { + onGestureHandlerEvent + } = this.propsRef.current; + invokeNullableMethod(onGestureHandlerEvent, cancelEvent); + } + + transformNativeEvent() { + return {}; + } // + // Handling config + // + + + updateGestureConfig({ + enabled = true, + ...props + }) { + this.config = { + enabled: enabled, + ...props + }; + this.enabled = enabled; + + if (this.config.shouldCancelWhenOutside !== undefined) { + this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside); + } + + this.validateHitSlops(); + + if (this.enabled) { + return; + } + + switch (this.currentState) { + case _State.State.ACTIVE: + this.fail(true); + break; + + case _State.State.UNDETERMINED: + _GestureHandlerOrchestrator.default.getInstance().removeHandlerFromOrchestrator(this); + + break; + + default: + this.cancel(true); + break; + } + } + + checkCustomActivationCriteria(criterias) { + for (const key in this.config) { + if (criterias.indexOf(key) >= 0) { + this.hasCustomActivationCriteria = true; + } + } + } + + validateHitSlops() { + if (!this.config.hitSlop) { + return; + } + + if (this.config.hitSlop.left !== undefined && this.config.hitSlop.right !== undefined && this.config.hitSlop.width !== undefined) { + throw new Error('HitSlop Error: Cannot define left, right and width at the same time'); + } + + if (this.config.hitSlop.width !== undefined && this.config.hitSlop.left === undefined && this.config.hitSlop.right === undefined) { + throw new Error('HitSlop Error: When width is defined, either left or right has to be defined'); + } + + if (this.config.hitSlop.height !== undefined && this.config.hitSlop.top !== undefined && this.config.hitSlop.bottom !== undefined) { + throw new Error('HitSlop Error: Cannot define top, bottom and height at the same time'); + } + + if (this.config.hitSlop.height !== undefined && this.config.hitSlop.top === undefined && this.config.hitSlop.bottom === undefined) { + throw new Error('HitSlop Error: When height is defined, either top or bottom has to be defined'); + } + } + + checkHitSlop() { + if (!this.config.hitSlop) { + return true; + } + + const width = this.view.getBoundingClientRect().width; + const height = this.view.getBoundingClientRect().height; + let left = 0; + let top = 0; + let right = width; + let bottom = height; + + if (this.config.hitSlop.horizontal !== undefined) { + left -= this.config.hitSlop.horizontal; + right += this.config.hitSlop.horizontal; + } + + if (this.config.hitSlop.vertical !== undefined) { + top -= this.config.hitSlop.vertical; + bottom += this.config.hitSlop.vertical; + } + + if (this.config.hitSlop.left !== undefined) { + left = -this.config.hitSlop.left; + } + + if (this.config.hitSlop.right !== undefined) { + right = width + this.config.hitSlop.right; + } + + if (this.config.hitSlop.top !== undefined) { + top = -this.config.hitSlop.top; + } + + if (this.config.hitSlop.bottom !== undefined) { + bottom = width + this.config.hitSlop.bottom; + } + + if (this.config.hitSlop.width !== undefined) { + if (this.config.hitSlop.left !== undefined) { + right = left + this.config.hitSlop.width; + } else if (this.config.hitSlop.right !== undefined) { + left = right - this.config.hitSlop.width; + } + } + + if (this.config.hitSlop.height !== undefined) { + if (this.config.hitSlop.top !== undefined) { + bottom = top + this.config.hitSlop.height; + } else if (this.config.hitSlop.bottom !== undefined) { + top = bottom - this.config.hitSlop.height; + } + } + + const rect = this.view.getBoundingClientRect(); + const offsetX = this.tracker.getLastX() - rect.left; + const offsetY = this.tracker.getLastY() - rect.top; + + if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) { + return true; + } + + return false; + } + + isPointerInBounds({ + x, + y + }) { + const rect = this.view.getBoundingClientRect(); + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + } + + resetConfig() {} // + // Getters and setters + // + + + getTag() { + return this.handlerTag; + } + + setTag(tag) { + this.handlerTag = tag; + } + + getConfig() { + return this.config; + } + + getShouldEnableGestureOnSetup() { + throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup'); + } + + getView() { + return this.view; + } + + getEventManagers() { + return this.eventManagers; + } + + getTracker() { + return this.tracker; + } + + getTrackedPointersID() { + return this.tracker.getTrackedPointersID(); + } + + getState() { + return this.currentState; + } + + isEnabled() { + return this.enabled; + } + + isFinished() { + return this.currentState === _State.State.END || this.currentState === _State.State.FAILED || this.currentState === _State.State.CANCELLED; + } + + setShouldCancelWhenOutside(shouldCancel) { + this.shouldCancellWhenOutside = shouldCancel; + } + + getShouldCancelWhenOutside() { + return this.shouldCancellWhenOutside; + } + + getPointerType() { + return this.pointerType; + } + +} + +exports.default = GestureHandler; + +function invokeNullableMethod(method, event) { + if (!method) { + return; + } + + if (typeof method === 'function') { + method(event); + return; + } + + if ('__getHandler' in method && typeof method.__getHandler === 'function') { + const handler = method.__getHandler(); + + invokeNullableMethod(handler, event); + return; + } + + if (!('__nodeConfig' in method)) { + return; + } + + const { + argMapping + } = method.__nodeConfig; + + if (!Array.isArray(argMapping)) { + return; + } + + for (const [index, [key, value]] of argMapping.entries()) { + if (!(key in event.nativeEvent)) { + continue; + } // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + + + const nativeValue = event.nativeEvent[key]; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + + if (value !== null && value !== void 0 && value.setValue) { + //Reanimated API + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + value.setValue(nativeValue); + } else { + //RN Animated API + method.__nodeConfig.argMapping[index] = [key, nativeValue]; + } + } + + return; +} +//# sourceMappingURL=GestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js.map new file mode 100644 index 00000000..aeda5dd5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/GestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","PointerEventManager","view","TouchEventManager","Error","handlerTag","style","config","userSelect","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isPointerInBounds","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = findNodeHandle(this.ref) as unknown as HTMLElement;\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js new file mode 100644 index 00000000..42017a92 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js @@ -0,0 +1,152 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const DEFAULT_MIN_DURATION_MS = 500; +const DEFAULT_MAX_DIST_DP = 10; +const SCALING_FACTOR = 10; + +class LongPressGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "minDurationMs", DEFAULT_MIN_DURATION_MS); + + _defineProperty(this, "defaultMaxDistSq", DEFAULT_MAX_DIST_DP * SCALING_FACTOR); + + _defineProperty(this, "maxDistSq", this.defaultMaxDistSq); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "startTime", 0); + + _defineProperty(this, "previousTime", 0); + + _defineProperty(this, "activationTimeout", void 0); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + + this.view.oncontextmenu = () => false; + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + duration: Date.now() - this.startTime + }; + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.minDurationMs !== undefined) { + this.minDurationMs = this.config.minDurationMs; + } + + if (this.config.maxDist !== undefined) { + this.maxDistSq = this.config.maxDist * this.config.maxDist; + } + } + + resetConfig() { + super.resetConfig(); + this.minDurationMs = DEFAULT_MIN_DURATION_MS; + this.maxDistSq = this.defaultMaxDistSq; + } + + onStateChange(_newState, _oldState) { + clearTimeout(this.activationTimeout); + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.tryBegin(event); + this.tryActivate(); + this.checkDistanceFail(event); + } + + onPointerMove(event) { + super.onPointerMove(event); + this.tracker.track(event); + this.checkDistanceFail(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === _State.State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + tryBegin(event) { + if (this.currentState !== _State.State.UNDETERMINED) { + return; + } + + this.previousTime = Date.now(); + this.startTime = this.previousTime; + this.begin(); + this.startX = event.x; + this.startY = event.y; + } + + tryActivate() { + if (this.minDurationMs > 0) { + this.activationTimeout = setTimeout(() => { + this.activate(); + }, this.minDurationMs); + } else if (this.minDurationMs === 0) { + this.activate(); + } + } + + checkDistanceFail(event) { + const dx = event.x - this.startX; + const dy = event.y - this.startY; + const distSq = dx * dx + dy * dy; + + if (distSq <= this.maxDistSq) { + return; + } + + if (this.currentState === _State.State.ACTIVE) { + this.cancel(); + } else { + this.fail(); + } + } + +} + +exports.default = LongPressGestureHandler; +//# sourceMappingURL=LongPressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js.map new file mode 100644 index 00000000..bab311f1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/LongPressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","GestureHandler","defaultMaxDistSq","init","ref","propsRef","view","oncontextmenu","transformNativeEvent","rect","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","duration","Date","now","startTime","updateGestureConfig","enabled","props","config","minDurationMs","undefined","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","State","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","startY","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":";;;;;;;AAAA;;AAGA;;;;;;AAEA,MAAMA,uBAAuB,GAAG,GAAhC;AACA,MAAMC,mBAAmB,GAAG,EAA5B;AACA,MAAMC,cAAc,GAAG,EAAvB;;AAEe,MAAMC,uBAAN,SAAsCC,uBAAtC,CAAqD;AAAA;AAAA;;AAAA,2CAC1CJ,uBAD0C;;AAAA,8CAEvCC,mBAAmB,GAAGC,cAFiB;;AAAA,uCAI9C,KAAKG,gBAJyC;;AAAA,oCAKjD,CALiD;;AAAA,oCAMjD,CANiD;;AAAA,uCAQ9C,CAR8C;;AAAA,0CAS3C,CAT2C;;AAAA;AAAA;;AAa3DC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;;AAEA,SAAKC,IAAL,CAAUC,aAAV,GAA0B,MAAM,KAAhC;AACD;;AAESC,EAAAA,oBAAoB,GAAG;AAC/B,UAAMC,IAAa,GAAG,KAAKH,IAAL,CAAUI,qBAAV,EAAtB;AAEA,WAAO;AACLC,MAAAA,CAAC,EAAE,KAAKC,OAAL,CAAaC,WAAb,KAA6BJ,IAAI,CAACK,IADhC;AAELC,MAAAA,CAAC,EAAE,KAAKH,OAAL,CAAaI,WAAb,KAA6BP,IAAI,CAACQ,GAFhC;AAGLC,MAAAA,SAAS,EAAE,KAAKN,OAAL,CAAaC,WAAb,EAHN;AAILM,MAAAA,SAAS,EAAE,KAAKP,OAAL,CAAaI,WAAb,EAJN;AAKLI,MAAAA,QAAQ,EAAEC,IAAI,CAACC,GAAL,KAAa,KAAKC;AALvB,KAAP;AAOD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;;AAEA,QAAI,KAAKC,MAAL,CAAYC,aAAZ,KAA8BC,SAAlC,EAA6C;AAC3C,WAAKD,aAAL,GAAqB,KAAKD,MAAL,CAAYC,aAAjC;AACD;;AAED,QAAI,KAAKD,MAAL,CAAYG,OAAZ,KAAwBD,SAA5B,EAAuC;AACrC,WAAKE,SAAL,GAAiB,KAAKJ,MAAL,CAAYG,OAAZ,GAAsB,KAAKH,MAAL,CAAYG,OAAnD;AACD;AACF;;AAESE,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACA,SAAKJ,aAAL,GAAqB/B,uBAArB;AACA,SAAKkC,SAAL,GAAiB,KAAK7B,gBAAtB;AACD;;AAES+B,EAAAA,aAAa,CAACC,SAAD,EAAmBC,SAAnB,EAA2C;AAChEC,IAAAA,YAAY,CAAC,KAAKC,iBAAN,CAAZ;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAK3B,OAAL,CAAa4B,YAAb,CAA0BD,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKE,QAAL,CAAcF,KAAd;AACA,SAAKG,WAAL;AACA,SAAKC,iBAAL,CAAuBJ,KAAvB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,UAAMK,aAAN,CAAoBL,KAApB;AACA,SAAK3B,OAAL,CAAaiC,KAAb,CAAmBN,KAAnB;AACA,SAAKI,iBAAL,CAAuBJ,KAAvB;AACD;;AAESO,EAAAA,WAAW,CAACP,KAAD,EAA4B;AAC/C,UAAMO,WAAN,CAAkBP,KAAlB;AACA,SAAK3B,OAAL,CAAamC,iBAAb,CAA+BR,KAAK,CAACS,SAArC;;AAEA,QAAI,KAAKC,YAAL,KAAsBC,aAAMC,MAAhC,EAAwC;AACtC,WAAKC,GAAL;AACD,KAFD,MAEO;AACL,WAAKC,IAAL;AACD;AACF;;AAEOZ,EAAAA,QAAQ,CAACF,KAAD,EAA4B;AAC1C,QAAI,KAAKU,YAAL,KAAsBC,aAAMI,YAAhC,EAA8C;AAC5C;AACD;;AAED,SAAKC,YAAL,GAAoBlC,IAAI,CAACC,GAAL,EAApB;AACA,SAAKC,SAAL,GAAiB,KAAKgC,YAAtB;AAEA,SAAKC,KAAL;AAEA,SAAKC,MAAL,GAAclB,KAAK,CAAC5B,CAApB;AACA,SAAK+C,MAAL,GAAcnB,KAAK,CAACxB,CAApB;AACD;;AAEO2B,EAAAA,WAAW,GAAS;AAC1B,QAAI,KAAKd,aAAL,GAAqB,CAAzB,EAA4B;AAC1B,WAAKS,iBAAL,GAAyBsB,UAAU,CAAC,MAAM;AACxC,aAAKC,QAAL;AACD,OAFkC,EAEhC,KAAKhC,aAF2B,CAAnC;AAGD,KAJD,MAIO,IAAI,KAAKA,aAAL,KAAuB,CAA3B,EAA8B;AACnC,WAAKgC,QAAL;AACD;AACF;;AAEOjB,EAAAA,iBAAiB,CAACJ,KAAD,EAA4B;AACnD,UAAMsB,EAAE,GAAGtB,KAAK,CAAC5B,CAAN,GAAU,KAAK8C,MAA1B;AACA,UAAMK,EAAE,GAAGvB,KAAK,CAACxB,CAAN,GAAU,KAAK2C,MAA1B;AACA,UAAMK,MAAM,GAAGF,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAA9B;;AAEA,QAAIC,MAAM,IAAI,KAAKhC,SAAnB,EAA8B;AAC5B;AACD;;AAED,QAAI,KAAKkB,YAAL,KAAsBC,aAAMC,MAAhC,EAAwC;AACtC,WAAKa,MAAL;AACD,KAFD,MAEO;AACL,WAAKX,IAAL;AACD;AACF;;AApHiE","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject) {\n super.init(ref, propsRef);\n\n this.view.oncontextmenu = () => false;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js new file mode 100644 index 00000000..7ca9195c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js @@ -0,0 +1,66 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class ManualGestureHandler extends _GestureHandler.default { + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.begin(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + } + + onPointerMove(event) { + this.tracker.track(event); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + this.tracker.track(event); + super.onPointerOutOfBounds(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + +} + +exports.default = ManualGestureHandler; +//# sourceMappingURL=ManualGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js.map new file mode 100644 index 00000000..5c35e78c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/ManualGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ManualGestureHandler.ts"],"names":["ManualGestureHandler","GestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerCancel","reset"],"mappings":";;;;;;;AACA;;;;AAEe,MAAMA,oBAAN,SAAmCC,uBAAnC,CAAkD;AACxDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMK,aAAN,CAAoBL,KAApB;AACD;;AAESO,EAAAA,oBAAoB,CAACP,KAAD,EAA4B;AACxD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMO,oBAAN,CAA2BP,KAA3B;AACD;;AAESQ,EAAAA,WAAW,CAACR,KAAD,EAA4B;AAC/C,UAAMQ,WAAN,CAAkBR,KAAlB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESE,EAAAA,eAAe,CAACZ,KAAD,EAA4B;AACnD,UAAMY,eAAN,CAAsBZ,KAAtB;AACA,SAAKa,KAAL;AACD;;AA3C8D","sourcesContent":["import { AdaptedEvent, Config } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject) {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js new file mode 100644 index 00000000..f52fdbf1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js @@ -0,0 +1,170 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _constants = require("../constants"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class NativeViewGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "buttonRole", void 0); + + _defineProperty(this, "shouldActivateOnStart", false); + + _defineProperty(this, "disallowInterruption", false); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "minDistSq", _constants.DEFAULT_TOUCH_SLOP * _constants.DEFAULT_TOUCH_SLOP); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + this.setShouldCancelWhenOutside(true); + this.view.style['touchAction'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari + + this.view.style['WebkitTouchCallout'] = 'auto'; + + if (this.view.hasAttribute('role')) { + this.buttonRole = true; + } else { + this.buttonRole = false; + } + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.shouldActivateOnStart !== undefined) { + this.shouldActivateOnStart = this.config.shouldActivateOnStart; + } + + if (this.config.disallowInterruption !== undefined) { + this.disallowInterruption = this.config.disallowInterruption; + } + } + + resetConfig() { + super.resetConfig(); + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.newPointerAction(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.newPointerAction(); + } + + newPointerAction() { + this.startX = this.tracker.getLastAvgX(); + this.startY = this.tracker.getLastAvgY(); + + if (this.currentState !== _State.State.UNDETERMINED) { + return; + } + + this.begin(); + + if (this.buttonRole) { + this.activate(); + } + } + + onPointerMove(event) { + this.tracker.track(event); + const dx = this.startX - this.tracker.getLastAvgX(); + const dy = this.startY - this.tracker.getLastAvgY(); + const distSq = dx * dx + dy * dy; + + if (!this.buttonRole && distSq >= this.minDistSq && this.currentState === _State.State.BEGAN) { + this.activate(); + } + } + + onPointerOut() { + this.cancel(); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.onUp(event); + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.onUp(event); + } + + onUp(event) { + this.tracker.removeFromTracker(event.pointerId); + + if (this.tracker.getTrackedPointersCount() === 0) { + if (this.currentState === _State.State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.cancel(); + this.reset(); + } + + shouldRecognizeSimultaneously(handler) { + if (super.shouldRecognizeSimultaneously(handler)) { + return true; + } + + if (handler instanceof NativeViewGestureHandler && handler.getState() === _State.State.ACTIVE && handler.disallowsInterruption()) { + return false; + } + + const canBeInterrupted = !this.disallowInterruption; + + if (this.currentState === _State.State.ACTIVE && handler.getState() === _State.State.ACTIVE && canBeInterrupted) { + return false; + } + + return this.currentState === _State.State.ACTIVE && canBeInterrupted && handler.getTag() > 0; + } + + shouldBeCancelledByOther(_handler) { + return !this.disallowInterruption; + } + + disallowsInterruption() { + return this.disallowInterruption; + } + +} + +exports.default = NativeViewGestureHandler; +//# sourceMappingURL=NativeViewGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map new file mode 100644 index 00000000..a3ceac12 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["NativeViewGestureHandler","GestureHandler","DEFAULT_TOUCH_SLOP","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","State","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","BEGAN","onPointerOut","cancel","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","ACTIVE","end","fail","onPointerCancel","reset","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n this.view.style['touchAction'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (\n !this.buttonRole &&\n distSq >= this.minDistSq &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n }\n\n protected onPointerOut(): void {\n this.cancel();\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.cancel();\n this.reset();\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js new file mode 100644 index 00000000..e2d7b73a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js @@ -0,0 +1,463 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _reactNative = require("react-native"); + +var _State = require("../../State"); + +var _constants = require("../constants"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const DEFAULT_MIN_POINTERS = 1; +const DEFAULT_MAX_POINTERS = 10; +const DEFAULT_MIN_DIST_SQ = _constants.DEFAULT_TOUCH_SLOP * _constants.DEFAULT_TOUCH_SLOP; + +class PanGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "customActivationProperties", ['activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetXStart', 'failOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd', 'failOffsetYStart', 'failOffsetYEnd', 'minVelocityX', 'minVelocityY']); + + _defineProperty(this, "velocityX", 0); + + _defineProperty(this, "velocityY", 0); + + _defineProperty(this, "minDistSq", DEFAULT_MIN_DIST_SQ); + + _defineProperty(this, "activeOffsetXStart", -Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "activeOffsetXEnd", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetXStart", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetXEnd", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "activeOffsetYStart", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "activeOffsetYEnd", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetYStart", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetYEnd", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minVelocityX", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minVelocityY", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minVelocitySq", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minPointers", DEFAULT_MIN_POINTERS); + + _defineProperty(this, "maxPointers", DEFAULT_MAX_POINTERS); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "offsetX", 0); + + _defineProperty(this, "offsetY", 0); + + _defineProperty(this, "lastX", 0); + + _defineProperty(this, "lastY", 0); + + _defineProperty(this, "activateAfterLongPress", 0); + + _defineProperty(this, "activationTimeout", 0); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + this.resetConfig(); + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + this.checkCustomActivationCriteria(this.customActivationProperties); + + if (this.config.minDist !== undefined) { + this.minDistSq = this.config.minDist * this.config.minDist; + } else if (this.hasCustomActivationCriteria) { + this.minDistSq = Number.MAX_SAFE_INTEGER; + } + + if (this.config.minPointers !== undefined) { + this.minPointers = this.config.minPointers; + } + + if (this.config.maxPointers !== undefined) { + this.maxPointers = this.config.maxPointers; + } + + if (this.config.minVelocity !== undefined) { + this.minVelocityX = this.config.minVelocity; + this.minVelocityY = this.config.minVelocity; + } + + if (this.config.minVelocityX !== undefined) { + this.minVelocityX = this.config.minVelocityX; + } + + if (this.config.minVelocityY !== undefined) { + this.minVelocityY = this.config.minVelocityY; + } + + if (this.config.activateAfterLongPress !== undefined) { + this.activateAfterLongPress = this.config.activateAfterLongPress; + } + + if (this.config.activeOffsetXStart !== undefined) { + this.activeOffsetXStart = this.config.activeOffsetXStart; + + if (this.config.activeOffsetXEnd === undefined) { + this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetXEnd !== undefined) { + this.activeOffsetXEnd = this.config.activeOffsetXEnd; + + if (this.config.activeOffsetXStart === undefined) { + this.activeOffsetXStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.failOffsetXStart !== undefined) { + this.failOffsetXStart = this.config.failOffsetXStart; + + if (this.config.failOffsetXEnd === undefined) { + this.failOffsetXEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.failOffsetXEnd !== undefined) { + this.failOffsetXEnd = this.config.failOffsetXEnd; + + if (this.config.failOffsetXStart === undefined) { + this.failOffsetXStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetYStart !== undefined) { + this.activeOffsetYStart = this.config.activeOffsetYStart; + + if (this.config.activeOffsetYEnd === undefined) { + this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetYEnd !== undefined) { + this.activeOffsetYEnd = this.config.activeOffsetYEnd; + + if (this.config.activeOffsetYStart === undefined) { + this.activeOffsetYStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.failOffsetYStart !== undefined) { + this.failOffsetYStart = this.config.failOffsetYStart; + + if (this.config.failOffsetYEnd === undefined) { + this.failOffsetYEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.failOffsetYEnd !== undefined) { + this.failOffsetYEnd = this.config.failOffsetYEnd; + + if (this.config.failOffsetYStart === undefined) { + this.failOffsetYStart = Number.MIN_SAFE_INTEGER; + } + } + } + + resetConfig() { + super.resetConfig(); + this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER; + this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER; + this.failOffsetXStart = Number.MIN_SAFE_INTEGER; + this.failOffsetXEnd = Number.MAX_SAFE_INTEGER; + this.activeOffsetYStart = Number.MAX_SAFE_INTEGER; + this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER; + this.failOffsetYStart = Number.MIN_SAFE_INTEGER; + this.failOffsetYEnd = Number.MAX_SAFE_INTEGER; + this.minVelocityX = Number.MAX_SAFE_INTEGER; + this.minVelocityY = Number.MAX_SAFE_INTEGER; + this.minVelocitySq = Number.MAX_SAFE_INTEGER; + this.minDistSq = DEFAULT_MIN_DIST_SQ; + this.minPointers = DEFAULT_MIN_POINTERS; + this.maxPointers = DEFAULT_MAX_POINTERS; + this.activateAfterLongPress = 0; + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + + const ratio = _reactNative.PixelRatio.get(); + + const translationX = this.getTranslationX(); + const translationY = this.getTranslationY(); + return { + translationX: isNaN(translationX) ? 0 : translationX, + translationY: isNaN(translationY) ? 0 : translationY, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + velocityX: this.velocityX * ratio * 10, + velocityY: this.velocityY * ratio * 10, + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top + }; + } + + getTranslationX() { + return this.lastX - this.startX + this.offsetX; + } + + getTranslationY() { + return this.lastY - this.startY + this.offsetY; + } + + clearActivationTimeout() { + clearTimeout(this.activationTimeout); + } //EventsHandling + + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.tryBegin(event); + this.checkBegan(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(event); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.lastX; + this.startY = this.lastY; + + if (this.tracker.getTrackedPointersCount() > this.maxPointers) { + if (this.currentState === _State.State.ACTIVE) { + this.cancel(); + } else { + this.fail(); + } + } else { + this.checkBegan(); + } + } + + onPointerUp(event) { + super.onPointerUp(event); + + if (this.currentState === _State.State.ACTIVE) { + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + } + + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === _State.State.ACTIVE) { + this.end(); + } else { + this.resetProgress(); + this.fail(); + } + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.lastX; + this.startY = this.lastY; + + if (!(this.currentState === _State.State.ACTIVE && this.tracker.getTrackedPointersCount() < this.minPointers)) { + this.checkBegan(); + } + } + + onPointerMove(event) { + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + this.checkBegan(); + super.onPointerMove(event); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + + onPointerOutOfBounds(event) { + if (this.getShouldCancelWhenOutside()) { + return; + } + + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + this.checkBegan(); + + if (this.currentState === _State.State.ACTIVE) { + super.onPointerOutOfBounds(event); + } + } + + shouldActivate() { + const dx = this.getTranslationX(); + + if (this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER && dx < this.activeOffsetXStart) { + return true; + } + + if (this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER && dx > this.activeOffsetXEnd) { + return true; + } + + const dy = this.getTranslationY(); + + if (this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER && dy < this.activeOffsetYStart) { + return true; + } + + if (this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER && dy > this.activeOffsetYEnd) { + return true; + } + + const distanceSq = dx * dx + dy * dy; + + if (this.minDistSq !== Number.MAX_SAFE_INTEGER && distanceSq >= this.minDistSq) { + return true; + } + + const vx = this.velocityX; + + if (this.minVelocityX !== Number.MAX_SAFE_INTEGER && (this.minVelocityX < 0 && vx <= this.minVelocityX || this.minVelocityX >= 0 && this.minVelocityX <= vx)) { + return true; + } + + const vy = this.velocityY; + + if (this.minVelocityY !== Number.MAX_SAFE_INTEGER && (this.minVelocityY < 0 && vy <= this.minVelocityY || this.minVelocityY >= 0 && this.minVelocityY <= vy)) { + return true; + } + + const velocitySq = vx * vx + vy * vy; + return this.minVelocitySq !== Number.MAX_SAFE_INTEGER && velocitySq >= this.minVelocitySq; + } + + shouldFail() { + const dx = this.getTranslationX(); + const dy = this.getTranslationY(); + const distanceSq = dx * dx + dy * dy; + + if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) { + this.clearActivationTimeout(); + return true; + } + + if (this.failOffsetXStart !== Number.MIN_SAFE_INTEGER && dx < this.failOffsetXStart) { + return true; + } + + if (this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER && dx > this.failOffsetXEnd) { + return true; + } + + if (this.failOffsetYStart !== Number.MIN_SAFE_INTEGER && dy < this.failOffsetYStart) { + return true; + } + + return this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER && dy > this.failOffsetYEnd; + } + + tryBegin(event) { + if (this.currentState === _State.State.UNDETERMINED && this.tracker.getTrackedPointersCount() >= this.minPointers) { + this.resetProgress(); + this.offsetX = 0; + this.offsetY = 0; + this.velocityX = 0; + this.velocityY = 0; + this.begin(); + + if (this.activateAfterLongPress > 0) { + this.activationTimeout = setTimeout(() => { + this.activate(); + }, this.activateAfterLongPress); + } + } else { + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + } + } + + checkBegan() { + if (this.currentState === _State.State.BEGAN) { + if (this.shouldFail()) { + this.fail(); + } else if (this.shouldActivate()) { + this.activate(); + } + } + } + + activate(force = false) { + if (this.currentState !== _State.State.ACTIVE) { + this.resetProgress(); + } + + super.activate(force); + } + + onCancel() { + this.clearActivationTimeout(); + } + + onReset() { + this.clearActivationTimeout(); + } + + resetProgress() { + if (this.currentState === _State.State.ACTIVE) { + return; + } + + this.startX = this.lastX; + this.startY = this.lastY; + } + +} + +exports.default = PanGestureHandler; +//# sourceMappingURL=PanGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js.map new file mode 100644 index 00000000..e65e9142 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PanGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PanGestureHandler.ts"],"names":["DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","DEFAULT_TOUCH_SLOP","PanGestureHandler","GestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","rect","view","getBoundingClientRect","ratio","PixelRatio","get","translationX","getTranslationX","translationY","getTranslationY","isNaN","absoluteX","tracker","getLastAvgX","absoluteY","getLastAvgY","velocityX","velocityY","x","left","y","top","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","State","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerCancel","reset","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { PixelRatio } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n const ratio = PixelRatio.get();\n\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n velocityX: this.velocityX * ratio * 10,\n velocityY: this.velocityY * ratio * 10,\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js new file mode 100644 index 00000000..5ab38e3e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js @@ -0,0 +1,179 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _constants = require("../constants"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +var _ScaleGestureDetector = _interopRequireDefault(require("../detectors/ScaleGestureDetector")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class PinchGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "scale", 1); + + _defineProperty(this, "velocity", 0); + + _defineProperty(this, "startingSpan", 0); + + _defineProperty(this, "spanSlop", _constants.DEFAULT_TOUCH_SLOP); + + _defineProperty(this, "scaleDetectorListener", { + onScaleBegin: detector => { + this.startingSpan = detector.getCurrentSpan(); + return true; + }, + onScale: detector => { + const prevScaleFactor = this.scale; + this.scale *= detector.getScaleFactor(this.tracker.getTrackedPointersCount()); + const delta = detector.getTimeDelta(); + + if (delta > 0) { + this.velocity = (this.scale - prevScaleFactor) / delta; + } + + if (Math.abs(this.startingSpan - detector.getCurrentSpan()) >= this.spanSlop && this.currentState === _State.State.BEGAN) { + this.activate(); + } + + return true; + }, + onScaleEnd: _detector => {} + }); + + _defineProperty(this, "scaleGestureDetector", new _ScaleGestureDetector.default(this.scaleDetectorListener)); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + this.setShouldCancelWhenOutside(false); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + } + + transformNativeEvent() { + return { + focalX: this.scaleGestureDetector.getFocusX(), + focalY: this.scaleGestureDetector.getFocusY(), + velocity: this.velocity, + scale: this.scale + }; + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState !== _State.State.ACTIVE) { + return; + } + + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + + if (this.currentState === _State.State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === _State.State.ACTIVE && this.tracker.getTrackedPointersCount() < 2) { + this.end(); + } + } + + onPointerMove(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + this.tracker.track(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + this.tracker.track(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerOutOfBounds(event); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + + tryBegin() { + if (this.currentState !== _State.State.UNDETERMINED) { + return; + } + + this.resetProgress(); + this.begin(); + } + + activate(force) { + if (this.currentState !== _State.State.ACTIVE) { + this.resetProgress(); + } + + super.activate(force); + } + + onReset() { + this.resetProgress(); + } + + resetProgress() { + if (this.currentState === _State.State.ACTIVE) { + return; + } + + this.velocity = 0; + this.scale = 1; + } + +} + +exports.default = PinchGestureHandler; +//# sourceMappingURL=PinchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js.map new file mode 100644 index 00000000..48a18499 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/PinchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PinchGestureHandler.ts"],"names":["PinchGestureHandler","GestureHandler","DEFAULT_TOUCH_SLOP","onScaleBegin","detector","startingSpan","getCurrentSpan","onScale","prevScaleFactor","scale","getScaleFactor","tracker","getTrackedPointersCount","delta","getTimeDelta","velocity","Math","abs","spanSlop","currentState","State","BEGAN","activate","onScaleEnd","_detector","ScaleGestureDetector","scaleDetectorListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","focalX","scaleGestureDetector","getFocusX","focalY","getFocusY","onPointerDown","event","addToTracker","onPointerAdd","tryBegin","onTouchEvent","onPointerUp","removeFromTracker","pointerId","ACTIVE","end","fail","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","reset","UNDETERMINED","resetProgress","begin","force","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport ScaleGestureDetector, {\n ScaleGestureListener,\n} from '../detectors/ScaleGestureDetector';\n\nexport default class PinchGestureHandler extends GestureHandler {\n private scale = 1;\n private velocity = 0;\n\n private startingSpan = 0;\n private spanSlop = DEFAULT_TOUCH_SLOP;\n\n private scaleDetectorListener: ScaleGestureListener = {\n onScaleBegin: (detector: ScaleGestureDetector): boolean => {\n this.startingSpan = detector.getCurrentSpan();\n return true;\n },\n onScale: (detector: ScaleGestureDetector): boolean => {\n const prevScaleFactor: number = this.scale;\n this.scale *= detector.getScaleFactor(\n this.tracker.getTrackedPointersCount()\n );\n\n const delta = detector.getTimeDelta();\n if (delta > 0) {\n this.velocity = (this.scale - prevScaleFactor) / delta;\n }\n\n if (\n Math.abs(this.startingSpan - detector.getCurrentSpan()) >=\n this.spanSlop &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n return true;\n },\n onScaleEnd: (\n _detector: ScaleGestureDetector\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ): void => {},\n };\n\n private scaleGestureDetector: ScaleGestureDetector = new ScaleGestureDetector(\n this.scaleDetectorListener\n );\n\n public init(ref: number, propsRef: React.RefObject) {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected transformNativeEvent() {\n return {\n focalX: this.scaleGestureDetector.getFocusX(),\n focalY: this.scaleGestureDetector.getFocusY(),\n velocity: this.velocity,\n scale: this.scale,\n };\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin();\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < 2\n ) {\n this.end();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n super.onPointerMove(event);\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n\n private tryBegin(): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.resetProgress();\n this.begin();\n }\n\n public activate(force?: boolean): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onReset(): void {\n this.resetProgress();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n this.velocity = 0;\n this.scale = 1;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js new file mode 100644 index 00000000..8bff3db4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js @@ -0,0 +1,192 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +var _RotationGestureDetector = _interopRequireDefault(require("../detectors/RotationGestureDetector")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36; + +class RotationGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "rotation", 0); + + _defineProperty(this, "velocity", 0); + + _defineProperty(this, "cachedAnchorX", 0); + + _defineProperty(this, "cachedAnchorY", 0); + + _defineProperty(this, "rotationGestureListener", { + onRotationBegin: _detector => true, + onRotation: detector => { + const previousRotation = this.rotation; + this.rotation += detector.getRotation(); + const delta = detector.getTimeDelta(); + + if (delta > 0) { + this.velocity = (this.rotation - previousRotation) / delta; + } + + if (Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD && this.currentState === _State.State.BEGAN) { + this.activate(); + } + + return true; + }, + onRotationEnd: _detector => { + this.end(); + } + }); + + _defineProperty(this, "rotationGestureDetector", new _RotationGestureDetector.default(this.rotationGestureListener)); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + this.setShouldCancelWhenOutside(false); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + } + + transformNativeEvent() { + return { + rotation: this.rotation ? this.rotation : 0, + anchorX: this.getAnchorX(), + anchorY: this.getAnchorY(), + velocity: this.velocity ? this.velocity : 0 + }; + } + + getAnchorX() { + const anchorX = this.rotationGestureDetector.getAnchorX(); + return anchorX ? anchorX : this.cachedAnchorX; + } + + getAnchorY() { + const anchorY = this.rotationGestureDetector.getAnchorY(); + return anchorY ? anchorY : this.cachedAnchorY; + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + } + + onPointerMove(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + if (this.getAnchorX()) { + this.cachedAnchorX = this.getAnchorX(); + } + + if (this.getAnchorY()) { + this.cachedAnchorY = this.getAnchorY(); + } + + this.tracker.track(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + if (this.getAnchorX()) { + this.cachedAnchorX = this.getAnchorX(); + } + + if (this.getAnchorY()) { + this.cachedAnchorY = this.getAnchorY(); + } + + this.tracker.track(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerOutOfBounds(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + + if (this.currentState !== _State.State.ACTIVE) { + return; + } + + if (this.currentState === _State.State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + this.tracker.removeFromTracker(event.pointerId); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.end(); + this.reset(); + } + + tryBegin() { + if (this.currentState !== _State.State.UNDETERMINED) { + return; + } + + this.begin(); + } + + activate(_force) { + super.activate(); + } + + onReset() { + if (this.currentState === _State.State.ACTIVE) { + return; + } + + this.rotation = 0; + this.velocity = 0; + this.rotationGestureDetector.reset(); + } + +} + +exports.default = RotationGestureHandler; +//# sourceMappingURL=RotationGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js.map new file mode 100644 index 00000000..5d9d4e4a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/RotationGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureHandler.ts"],"names":["ROTATION_RECOGNITION_THRESHOLD","Math","PI","RotationGestureHandler","GestureHandler","onRotationBegin","_detector","onRotation","detector","previousRotation","rotation","getRotation","delta","getTimeDelta","velocity","abs","currentState","State","BEGAN","activate","onRotationEnd","end","RotationGestureDetector","rotationGestureListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","anchorX","getAnchorX","anchorY","getAnchorY","rotationGestureDetector","cachedAnchorX","cachedAnchorY","onPointerDown","event","tracker","addToTracker","onPointerAdd","tryBegin","onTouchEvent","onPointerMove","getTrackedPointersCount","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","ACTIVE","fail","onPointerRemove","onPointerCancel","reset","UNDETERMINED","begin","_force","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport RotationGestureDetector, {\n RotationGestureListener,\n} from '../detectors/RotationGestureDetector';\n\nconst ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36;\n\nexport default class RotationGestureHandler extends GestureHandler {\n private rotation = 0;\n private velocity = 0;\n\n private cachedAnchorX = 0;\n private cachedAnchorY = 0;\n\n private rotationGestureListener: RotationGestureListener = {\n onRotationBegin: (_detector: RotationGestureDetector): boolean => true,\n onRotation: (detector: RotationGestureDetector): boolean => {\n const previousRotation: number = this.rotation;\n this.rotation += detector.getRotation();\n\n const delta = detector.getTimeDelta();\n\n if (delta > 0) {\n this.velocity = (this.rotation - previousRotation) / delta;\n }\n\n if (\n Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n\n return true;\n },\n onRotationEnd: (_detector: RotationGestureDetector): void => {\n this.end();\n },\n };\n\n private rotationGestureDetector: RotationGestureDetector =\n new RotationGestureDetector(this.rotationGestureListener);\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected transformNativeEvent() {\n return {\n rotation: this.rotation ? this.rotation : 0,\n anchorX: this.getAnchorX(),\n anchorY: this.getAnchorY(),\n velocity: this.velocity ? this.velocity : 0,\n };\n }\n\n public getAnchorX(): number {\n const anchorX = this.rotationGestureDetector.getAnchorX();\n\n return anchorX ? anchorX : this.cachedAnchorX;\n }\n\n public getAnchorY(): number {\n const anchorY = this.rotationGestureDetector.getAnchorY();\n\n return anchorY ? anchorY : this.cachedAnchorY;\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n\n this.tryBegin();\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.end();\n\n this.reset();\n }\n\n protected tryBegin(): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n }\n\n public activate(_force?: boolean): void {\n super.activate();\n }\n\n protected onReset(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.rotation = 0;\n this.velocity = 0;\n this.rotationGestureDetector.reset();\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js new file mode 100644 index 00000000..3e83ba67 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js @@ -0,0 +1,296 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _interfaces = require("../interfaces"); + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +const DEFAULT_MAX_DURATION_MS = 500; +const DEFAULT_MAX_DELAY_MS = 500; +const DEFAULT_NUMBER_OF_TAPS = 1; +const DEFAULT_MIN_NUMBER_OF_POINTERS = 1; + +class TapGestureHandler extends _GestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "maxDeltaX", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "maxDeltaY", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "maxDistSq", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "maxDurationMs", DEFAULT_MAX_DURATION_MS); + + _defineProperty(this, "maxDelayMs", DEFAULT_MAX_DELAY_MS); + + _defineProperty(this, "numberOfTaps", DEFAULT_NUMBER_OF_TAPS); + + _defineProperty(this, "minNumberOfPointers", DEFAULT_MIN_NUMBER_OF_POINTERS); + + _defineProperty(this, "currentMaxNumberOfPointers", 1); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "offsetX", 0); + + _defineProperty(this, "offsetY", 0); + + _defineProperty(this, "lastX", 0); + + _defineProperty(this, "lastY", 0); + + _defineProperty(this, "waitTimeout", void 0); + + _defineProperty(this, "delayTimeout", void 0); + + _defineProperty(this, "tapsSoFar", 0); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.numberOfTaps !== undefined) { + this.numberOfTaps = this.config.numberOfTaps; + } + + if (this.config.maxDurationMs !== undefined) { + this.maxDurationMs = this.config.maxDurationMs; + } + + if (this.config.maxDelayMs !== undefined) { + this.maxDelayMs = this.config.maxDelayMs; + } + + if (this.config.maxDeltaX !== undefined) { + this.maxDeltaX = this.config.maxDeltaX; + } + + if (this.config.maxDeltaY !== undefined) { + this.maxDeltaY = this.config.maxDeltaY; + } + + if (this.config.maxDist !== undefined) { + this.maxDistSq = this.config.maxDist * this.config.maxDist; + } + + if (this.config.minPointers !== undefined) { + this.minNumberOfPointers = this.config.minPointers; + } + } + + resetConfig() { + super.resetConfig(); + this.maxDeltaX = Number.MIN_SAFE_INTEGER; + this.maxDeltaY = Number.MIN_SAFE_INTEGER; + this.maxDistSq = Number.MIN_SAFE_INTEGER; + this.maxDurationMs = DEFAULT_MAX_DURATION_MS; + this.maxDelayMs = DEFAULT_MAX_DELAY_MS; + this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS; + this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS; + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY() + }; + } + + clearTimeouts() { + clearTimeout(this.waitTimeout); + clearTimeout(this.delayTimeout); + } + + startTap() { + this.clearTimeouts(); + this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs); + } + + endTap() { + this.clearTimeouts(); + + if (++this.tapsSoFar === this.numberOfTaps && this.currentMaxNumberOfPointers >= this.minNumberOfPointers) { + this.activate(); + } else { + this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs); + } + } //Handling Events + + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.trySettingPosition(event); + this.startX = event.x; + this.startY = event.y; + this.lastX = event.x; + this.lastY = event.y; + this.updateState(event); + } + + onPointerAdd(event) { + super.onPointerAdd(event); + this.tracker.addToTracker(event); + this.trySettingPosition(event); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.tracker.getLastAvgX(); + this.startY = this.tracker.getLastAvgY(); + this.updateState(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.tracker.removeFromTracker(event.pointerId); + this.updateState(event); + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY = this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.lastX; + this.startY = this.lastY; + this.updateState(event); + } + + onPointerMove(event) { + this.trySettingPosition(event); + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.updateState(event); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + this.trySettingPosition(event); + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.updateState(event); + super.onPointerOutOfBounds(event); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.tracker.resetTracker(); + this.fail(); + } + + updateState(event) { + if (this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()) { + this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount(); + } + + if (this.shouldFail()) { + this.fail(); + return; + } + + switch (this.currentState) { + case _State.State.UNDETERMINED: + if (event.eventType === _interfaces.EventTypes.DOWN) { + this.begin(); + } + + this.startTap(); + break; + + case _State.State.BEGAN: + if (event.eventType === _interfaces.EventTypes.UP) { + this.endTap(); + } + + if (event.eventType === _interfaces.EventTypes.DOWN) { + this.startTap(); + } + + break; + + default: + break; + } + } + + trySettingPosition(event) { + if (this.currentState !== _State.State.UNDETERMINED) { + return; + } + + this.offsetX = 0; + this.offsetY = 0; + this.startX = event.x; + this.startY = event.y; + } + + shouldFail() { + const dx = this.lastX - this.startX + this.offsetX; + + if (this.maxDeltaX !== Number.MIN_SAFE_INTEGER && Math.abs(dx) > this.maxDeltaX) { + return true; + } + + const dy = this.lastY - this.startY + this.offsetY; + + if (this.maxDeltaY !== Number.MIN_SAFE_INTEGER && Math.abs(dy) > this.maxDeltaY) { + return true; + } + + const distSq = dy * dy + dx * dx; + return this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq; + } + + activate() { + super.activate(); + this.end(); + } + + onCancel() { + this.resetProgress(); + this.clearTimeouts(); + } + + resetProgress() { + this.clearTimeouts(); + this.tapsSoFar = 0; + this.currentMaxNumberOfPointers = 0; + } + +} + +exports.default = TapGestureHandler; +//# sourceMappingURL=TapGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js.map new file mode 100644 index 00000000..5f1a04c0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/handlers/TapGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TapGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","GestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDist","maxDistSq","minPointers","minNumberOfPointers","resetConfig","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","event","addToTracker","trySettingPosition","startX","startY","lastX","lastY","updateState","onPointerAdd","offsetX","offsetY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","resetTracker","getTrackedPointersCount","shouldFail","currentState","State","UNDETERMINED","eventType","EventTypes","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 500;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private endTap(): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.trySettingPosition(event);\n\n this.startX = event.x;\n this.startY = event.y;\n\n this.lastX = event.x;\n this.lastY = event.y;\n\n this.updateState(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n super.onPointerAdd(event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n\n this.updateState(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.updateState(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.tracker.resetTracker();\n this.fail();\n }\n\n private updateState(event: AdaptedEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const distSq = dy * dy + dx * dx;\n\n return (\n this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq\n );\n }\n\n public activate(): void {\n super.activate();\n\n this.end();\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js new file mode 100644 index 00000000..4111b201 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js @@ -0,0 +1,55 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PointerType = exports.TouchEventType = exports.EventTypes = exports.MouseButtons = void 0; +let MouseButtons; +exports.MouseButtons = MouseButtons; + +(function (MouseButtons) { + MouseButtons[MouseButtons["NONE"] = 0] = "NONE"; + MouseButtons[MouseButtons["LEFT"] = 1] = "LEFT"; + MouseButtons[MouseButtons["RIGHT"] = 2] = "RIGHT"; + MouseButtons[MouseButtons["LEFT_RIGHT"] = 3] = "LEFT_RIGHT"; + MouseButtons[MouseButtons["SCROLL"] = 4] = "SCROLL"; + MouseButtons[MouseButtons["SCROLL_LEFT"] = 5] = "SCROLL_LEFT"; + MouseButtons[MouseButtons["SCROLL_RIGHT"] = 6] = "SCROLL_RIGHT"; + MouseButtons[MouseButtons["SCROLL_LEFT_RIGHT"] = 7] = "SCROLL_LEFT_RIGHT"; +})(MouseButtons || (exports.MouseButtons = MouseButtons = {})); + +let EventTypes; +exports.EventTypes = EventTypes; + +(function (EventTypes) { + EventTypes[EventTypes["DOWN"] = 0] = "DOWN"; + EventTypes[EventTypes["ADDITIONAL_POINTER_DOWN"] = 1] = "ADDITIONAL_POINTER_DOWN"; + EventTypes[EventTypes["UP"] = 2] = "UP"; + EventTypes[EventTypes["ADDITIONAL_POINTER_UP"] = 3] = "ADDITIONAL_POINTER_UP"; + EventTypes[EventTypes["MOVE"] = 4] = "MOVE"; + EventTypes[EventTypes["ENTER"] = 5] = "ENTER"; + EventTypes[EventTypes["OUT"] = 6] = "OUT"; + EventTypes[EventTypes["CANCEL"] = 7] = "CANCEL"; +})(EventTypes || (exports.EventTypes = EventTypes = {})); + +let TouchEventType; +exports.TouchEventType = TouchEventType; + +(function (TouchEventType) { + TouchEventType[TouchEventType["UNDETERMINED"] = 0] = "UNDETERMINED"; + TouchEventType[TouchEventType["DOWN"] = 1] = "DOWN"; + TouchEventType[TouchEventType["MOVE"] = 2] = "MOVE"; + TouchEventType[TouchEventType["UP"] = 3] = "UP"; + TouchEventType[TouchEventType["CANCELLED"] = 4] = "CANCELLED"; +})(TouchEventType || (exports.TouchEventType = TouchEventType = {})); + +let PointerType; +exports.PointerType = PointerType; + +(function (PointerType) { + PointerType["NONE"] = "none"; + PointerType["MOUSE"] = "mouse"; + PointerType["TOUCH"] = "touch"; + PointerType["PEN"] = "pen"; +})(PointerType || (exports.PointerType = PointerType = {})); +//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js.map new file mode 100644 index 00000000..45cecc50 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes","TouchEventType","PointerType"],"mappings":";;;;;;IAgIYA,Y;;;WAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;GAAAA,Y,4BAAAA,Y;;IAWAC,U;;;WAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;IAWAC,c;;;WAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,8BAAAA,c;;IAQAC,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W","sourcesContent":["import { UserSelect } from '../handlers/gestureHandlerCommon';\nimport { Directions } from '../Directions';\nimport { State } from '../State';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | UserSelect\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record {\n enabled?: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n hitSlop?: HitSlop;\n shouldCancelWhenOutside?: boolean;\n userSelect?: UserSelect;\n\n activateAfterLongPress?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n}\n\nexport interface PointerData {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n}\n\ntype TouchNativeArgs = number | State | TouchEventType | PointerData[];\n\ninterface NativeTouchEvent extends Record {\n handlerTag: number;\n state: State;\n eventType: TouchEventType;\n changedTouches: PointerData[];\n allTouches: PointerData[];\n numberOfTouches: number;\n}\n\nexport interface ResultEvent extends Record {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface ResultTouchEvent\n extends Record {\n nativeEvent: NativeTouchEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface AdaptedEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: PointerType;\n buttons: number;\n time: number;\n allTouches?: TouchList;\n changedTouches?: TouchList;\n touchEventType?: TouchEventType;\n}\n\nexport enum MouseButtons {\n NONE,\n LEFT,\n RIGHT,\n LEFT_RIGHT,\n SCROLL,\n SCROLL_LEFT,\n SCROLL_RIGHT,\n SCROLL_LEFT_RIGHT,\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n OUT,\n CANCEL,\n}\n\nexport enum TouchEventType {\n UNDETERMINED,\n DOWN,\n MOVE,\n UP,\n CANCELLED,\n}\n\nexport enum PointerType {\n NONE = 'none',\n MOUSE = 'mouse',\n TOUCH = 'touch',\n PEN = 'pen',\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js new file mode 100644 index 00000000..335fb58b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js @@ -0,0 +1,113 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/* eslint-disable @typescript-eslint/no-empty-function */ +class EventManager { + constructor(view) { + _defineProperty(this, "view", void 0); + + _defineProperty(this, "pointersInBounds", []); + + _defineProperty(this, "activePointersCounter", void 0); + + this.view = view; + this.activePointersCounter = 0; + } + + onPointerDown(_event) {} + + onPointerAdd(_event) {} + + onPointerUp(_event) {} + + onPointerRemove(_event) {} + + onPointerMove(_event) {} + + onPointerOut(_event) {} + + onPointerEnter(_event) {} + + onPointerCancel(_event) {// When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled + // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0 + // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter + // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled + } + + onPointerOutOfBounds(_event) {} + + setOnPointerDown(callback) { + this.onPointerDown = callback; + } + + setOnPointerAdd(callback) { + this.onPointerAdd = callback; + } + + setOnPointerUp(callback) { + this.onPointerUp = callback; + } + + setOnPointerRemove(callback) { + this.onPointerRemove = callback; + } + + setOnPointerMove(callback) { + this.onPointerMove = callback; + } + + setOnPointerOut(callback) { + this.onPointerOut = callback; + } + + setOnPointerEnter(callback) { + this.onPointerEnter = callback; + } + + setOnPointerCancel(callback) { + this.onPointerCancel = callback; + } + + setOnPointerOutOfBounds(callback) { + this.onPointerOutOfBounds = callback; + } + + markAsInBounds(pointerId) { + if (this.pointersInBounds.indexOf(pointerId) >= 0) { + return; + } + + this.pointersInBounds.push(pointerId); + } + + markAsOutOfBounds(pointerId) { + const index = this.pointersInBounds.indexOf(pointerId); + + if (index < 0) { + return; + } + + this.pointersInBounds.splice(index, 1); + } + + resetManager() { + // Reseting activePointersCounter is necessary to make gestures such as pinch work properly + // There are gestures that end when there is still one active pointer (like pinch/rotation) + // When these gestures end, they are reset, but they still receive events from pointer that is active + // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive + // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one + // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED + this.activePointersCounter = 0; + this.pointersInBounds = []; + } + +} + +exports.default = EventManager; +//# sourceMappingURL=EventManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js.map new file mode 100644 index 00000000..0f1a5519 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/EventManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["EventManager.ts"],"names":["EventManager","constructor","view","activePointersCounter","onPointerDown","_event","onPointerAdd","onPointerUp","onPointerRemove","onPointerMove","onPointerOut","onPointerEnter","onPointerCancel","onPointerOutOfBounds","setOnPointerDown","callback","setOnPointerAdd","setOnPointerUp","setOnPointerRemove","setOnPointerMove","setOnPointerOut","setOnPointerEnter","setOnPointerCancel","setOnPointerOutOfBounds","markAsInBounds","pointerId","pointersInBounds","indexOf","push","markAsOutOfBounds","index","splice","resetManager"],"mappings":";;;;;;;;;AAAA;AAGe,MAAeA,YAAf,CAA4B;AAKzCC,EAAAA,WAAW,CAACC,IAAD,EAAoB;AAAA;;AAAA,8CAHQ,EAGR;;AAAA;;AAC7B,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAKC,qBAAL,GAA6B,CAA7B;AACD;;AAUSC,EAAAA,aAAa,CAACC,MAAD,EAA6B,CAAE;;AAC5CC,EAAAA,YAAY,CAACD,MAAD,EAA6B,CAAE;;AAC3CE,EAAAA,WAAW,CAACF,MAAD,EAA6B,CAAE;;AAC1CG,EAAAA,eAAe,CAACH,MAAD,EAA6B,CAAE;;AAC9CI,EAAAA,aAAa,CAACJ,MAAD,EAA6B,CAAE;;AAC5CK,EAAAA,YAAY,CAACL,MAAD,EAA6B,CAAE;;AAC3CM,EAAAA,cAAc,CAACN,MAAD,EAA6B,CAAE;;AAC7CO,EAAAA,eAAe,CAACP,MAAD,EAA6B,CACpD;AACA;AACA;AACA;AACD;;AACSQ,EAAAA,oBAAoB,CAACR,MAAD,EAA6B,CAAE;;AAEtDS,EAAAA,gBAAgB,CAACC,QAAD,EAAgD;AACrE,SAAKX,aAAL,GAAqBW,QAArB;AACD;;AACMC,EAAAA,eAAe,CAACD,QAAD,EAAgD;AACpE,SAAKT,YAAL,GAAoBS,QAApB;AACD;;AACME,EAAAA,cAAc,CAACF,QAAD,EAAgD;AACnE,SAAKR,WAAL,GAAmBQ,QAAnB;AACD;;AACMG,EAAAA,kBAAkB,CAACH,QAAD,EAAgD;AACvE,SAAKP,eAAL,GAAuBO,QAAvB;AACD;;AACMI,EAAAA,gBAAgB,CAACJ,QAAD,EAAgD;AACrE,SAAKN,aAAL,GAAqBM,QAArB;AACD;;AACMK,EAAAA,eAAe,CAACL,QAAD,EAAgD;AACpE,SAAKL,YAAL,GAAoBK,QAApB;AACD;;AACMM,EAAAA,iBAAiB,CAACN,QAAD,EAAgD;AACtE,SAAKJ,cAAL,GAAsBI,QAAtB;AACD;;AACMO,EAAAA,kBAAkB,CAACP,QAAD,EAAgD;AACvE,SAAKH,eAAL,GAAuBG,QAAvB;AACD;;AACMQ,EAAAA,uBAAuB,CAC5BR,QAD4B,EAEtB;AACN,SAAKF,oBAAL,GAA4BE,QAA5B;AACD;;AAESS,EAAAA,cAAc,CAACC,SAAD,EAA0B;AAChD,QAAI,KAAKC,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,KAA4C,CAAhD,EAAmD;AACjD;AACD;;AAED,SAAKC,gBAAL,CAAsBE,IAAtB,CAA2BH,SAA3B;AACD;;AAESI,EAAAA,iBAAiB,CAACJ,SAAD,EAA0B;AACnD,UAAMK,KAAa,GAAG,KAAKJ,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,CAAtB;;AAEA,QAAIK,KAAK,GAAG,CAAZ,EAAe;AACb;AACD;;AAED,SAAKJ,gBAAL,CAAsBK,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AAEME,EAAAA,YAAY,GAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AAEA,SAAK7B,qBAAL,GAA6B,CAA7B;AACA,SAAKuB,gBAAL,GAAwB,EAAxB;AACD;;AA3FwC","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';\n\nexport default abstract class EventManager {\n protected readonly view: HTMLElement;\n protected pointersInBounds: number[] = [];\n protected activePointersCounter: number;\n\n constructor(view: HTMLElement) {\n this.view = view;\n this.activePointersCounter = 0;\n }\n\n public abstract setListeners(): void;\n protected abstract mapEvent(\n event: Event,\n eventType: EventTypes,\n index?: number,\n touchEventType?: TouchEventType\n ): AdaptedEvent;\n\n protected onPointerDown(_event: AdaptedEvent): void {}\n protected onPointerAdd(_event: AdaptedEvent): void {}\n protected onPointerUp(_event: AdaptedEvent): void {}\n protected onPointerRemove(_event: AdaptedEvent): void {}\n protected onPointerMove(_event: AdaptedEvent): void {}\n protected onPointerOut(_event: AdaptedEvent): void {}\n protected onPointerEnter(_event: AdaptedEvent): void {}\n protected onPointerCancel(_event: AdaptedEvent): void {\n // When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled\n // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0\n // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter\n // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled\n }\n protected onPointerOutOfBounds(_event: AdaptedEvent): void {}\n\n public setOnPointerDown(callback: (event: AdaptedEvent) => void): void {\n this.onPointerDown = callback;\n }\n public setOnPointerAdd(callback: (event: AdaptedEvent) => void): void {\n this.onPointerAdd = callback;\n }\n public setOnPointerUp(callback: (event: AdaptedEvent) => void): void {\n this.onPointerUp = callback;\n }\n public setOnPointerRemove(callback: (event: AdaptedEvent) => void): void {\n this.onPointerRemove = callback;\n }\n public setOnPointerMove(callback: (event: AdaptedEvent) => void): void {\n this.onPointerMove = callback;\n }\n public setOnPointerOut(callback: (event: AdaptedEvent) => void): void {\n this.onPointerOut = callback;\n }\n public setOnPointerEnter(callback: (event: AdaptedEvent) => void): void {\n this.onPointerEnter = callback;\n }\n public setOnPointerCancel(callback: (event: AdaptedEvent) => void): void {\n this.onPointerCancel = callback;\n }\n public setOnPointerOutOfBounds(\n callback: (event: AdaptedEvent) => void\n ): void {\n this.onPointerOutOfBounds = callback;\n }\n\n protected markAsInBounds(pointerId: number): void {\n if (this.pointersInBounds.indexOf(pointerId) >= 0) {\n return;\n }\n\n this.pointersInBounds.push(pointerId);\n }\n\n protected markAsOutOfBounds(pointerId: number): void {\n const index: number = this.pointersInBounds.indexOf(pointerId);\n\n if (index < 0) {\n return;\n }\n\n this.pointersInBounds.splice(index, 1);\n }\n\n public resetManager(): void {\n // Reseting activePointersCounter is necessary to make gestures such as pinch work properly\n // There are gestures that end when there is still one active pointer (like pinch/rotation)\n // When these gestures end, they are reset, but they still receive events from pointer that is active\n // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive\n // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one\n // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED\n\n this.activePointersCounter = 0;\n this.pointersInBounds = [];\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js new file mode 100644 index 00000000..37fc5a38 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js @@ -0,0 +1,362 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _State = require("../../State"); + +var _interfaces = require("../interfaces"); + +var _PointerTracker = _interopRequireDefault(require("./PointerTracker")); + +var _utils = require("../utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class GestureHandlerOrchestrator { + // Private beacuse of Singleton + // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + constructor() { + _defineProperty(this, "gestureHandlers", []); + + _defineProperty(this, "awaitingHandlers", []); + + _defineProperty(this, "handlersToCancel", []); + + _defineProperty(this, "handlingChangeSemaphore", 0); + + _defineProperty(this, "activationIndex", 0); + } + + scheduleFinishedHandlersCleanup() { + if (this.handlingChangeSemaphore === 0) { + this.cleanupFinishedHandlers(); + } + } + + cleanHandler(handler) { + handler.reset(); + handler.setActive(false); + handler.setAwaiting(false); + handler.setActivationIndex(Number.MAX_VALUE); + } + + removeHandlerFromOrchestrator(handler) { + this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1); + this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1); + this.handlersToCancel.splice(this.handlersToCancel.indexOf(handler), 1); + } + + cleanupFinishedHandlers() { + for (let i = this.gestureHandlers.length - 1; i >= 0; --i) { + const handler = this.gestureHandlers[i]; + + if (!handler) { + continue; + } + + if (this.isFinished(handler.getState()) && !handler.isAwaiting()) { + this.gestureHandlers.splice(i, 1); + this.cleanHandler(handler); + } + } + } + + hasOtherHandlerToWaitFor(handler) { + let hasToWait = false; + this.gestureHandlers.forEach(otherHandler => { + if (otherHandler && !this.isFinished(otherHandler.getState()) && this.shouldHandlerWaitForOther(handler, otherHandler)) { + hasToWait = true; + return; + } + }); + return hasToWait; + } + + tryActivate(handler) { + if (this.hasOtherHandlerToWaitFor(handler)) { + this.addAwaitingHandler(handler); + } else if (handler.getState() !== _State.State.CANCELLED && handler.getState() !== _State.State.FAILED) { + if (this.shouldActivate(handler)) { + this.makeActive(handler); + } else { + switch (handler.getState()) { + case _State.State.ACTIVE: + handler.fail(); + break; + + case _State.State.BEGAN: + handler.cancel(); + } + } + } + } + + shouldActivate(handler) { + for (const otherHandler of this.gestureHandlers) { + if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) { + return false; + } + } + + return true; + } + + cleanupAwaitingHandlers(handler) { + for (let i = 0; i < this.awaitingHandlers.length; ++i) { + if (!this.awaitingHandlers[i].isAwaiting() && this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)) { + this.cleanHandler(this.awaitingHandlers[i]); + this.awaitingHandlers.splice(i, 1); + } + } + } + + onHandlerStateChange(handler, newState, oldState, sendIfDisabled) { + if (!handler.isEnabled() && !sendIfDisabled) { + return; + } + + this.handlingChangeSemaphore += 1; + + if (this.isFinished(newState)) { + this.awaitingHandlers.forEach(otherHandler => { + if (this.shouldHandlerWaitForOther(otherHandler, handler)) { + if (newState === _State.State.END) { + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.cancel(); + + if (otherHandler.getState() === _State.State.END) { + // Handle edge case, where discrete gestures end immediately after activation thus + // their state is set to END and when the gesture they are waiting for activates they + // should be cancelled, however `cancel` was never sent as gestures were already in the END state. + // Send synthetic BEGAN -> CANCELLED to properly handle JS logic + otherHandler.sendEvent(_State.State.CANCELLED, _State.State.BEGAN); + } + + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.setAwaiting(false); + } else { + this.tryActivate(otherHandler); + } + } + }); + } + + if (newState === _State.State.ACTIVE) { + this.tryActivate(handler); + } else if (oldState === _State.State.ACTIVE || oldState === _State.State.END) { + if (handler.isActive()) { + handler.sendEvent(newState, oldState); + } else if (oldState === _State.State.ACTIVE && (newState === _State.State.CANCELLED || newState === _State.State.FAILED)) { + handler.sendEvent(newState, _State.State.BEGAN); + } + } else if (oldState !== _State.State.UNDETERMINED || newState !== _State.State.CANCELLED) { + handler.sendEvent(newState, oldState); + } + + this.handlingChangeSemaphore -= 1; + this.scheduleFinishedHandlersCleanup(); + + if (this.awaitingHandlers.indexOf(handler) < 0) { + this.cleanupAwaitingHandlers(handler); + } + } + + makeActive(handler) { + const currentState = handler.getState(); + handler.setActive(true); + handler.setShouldResetProgress(true); + handler.setActivationIndex(this.activationIndex++); + this.gestureHandlers.forEach(otherHandler => { + // Order of arguments is correct - we check whether current handler should cancel existing handlers + if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) { + this.handlersToCancel.push(otherHandler); + } + }); + + for (let i = this.handlersToCancel.length - 1; i >= 0; --i) { + var _this$handlersToCance; + + (_this$handlersToCance = this.handlersToCancel[i]) === null || _this$handlersToCance === void 0 ? void 0 : _this$handlersToCance.cancel(); + } + + this.awaitingHandlers.forEach(otherHandler => { + if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) { + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.cancel(); + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.setAwaiting(true); + } + }); + handler.sendEvent(_State.State.ACTIVE, _State.State.BEGAN); + + if (currentState !== _State.State.ACTIVE) { + handler.sendEvent(_State.State.END, _State.State.ACTIVE); + + if (currentState !== _State.State.END) { + handler.sendEvent(_State.State.UNDETERMINED, _State.State.END); + } + } + + if (handler.isAwaiting()) { + handler.setAwaiting(false); + + for (let i = 0; i < this.awaitingHandlers.length; ++i) { + if (this.awaitingHandlers[i] === handler) { + this.awaitingHandlers.splice(i, 1); + } + } + } + + this.handlersToCancel = []; + } + + addAwaitingHandler(handler) { + let alreadyExists = false; + this.awaitingHandlers.forEach(otherHandler => { + if (otherHandler === handler) { + alreadyExists = true; + return; + } + }); + + if (alreadyExists) { + return; + } + + this.awaitingHandlers.push(handler); + handler.setAwaiting(true); + handler.setActivationIndex(this.activationIndex++); + } + + recordHandlerIfNotPresent(handler) { + let alreadyExists = false; + this.gestureHandlers.forEach(otherHandler => { + if (otherHandler === handler) { + alreadyExists = true; + return; + } + }); + + if (alreadyExists) { + return; + } + + this.gestureHandlers.push(handler); + handler.setActive(false); + handler.setAwaiting(false); + handler.setActivationIndex(Number.MAX_SAFE_INTEGER); + } + + shouldHandlerWaitForOther(handler, otherHandler) { + return handler !== otherHandler && (handler.shouldWaitForHandlerFailure(otherHandler) || otherHandler.shouldRequireToWaitForFailure(handler)); + } + + canRunSimultaneously(gh1, gh2) { + return gh1 === gh2 || gh1.shouldRecognizeSimultaneously(gh2) || gh2.shouldRecognizeSimultaneously(gh1); + } + + shouldHandlerBeCancelledBy(handler, otherHandler) { + if (this.canRunSimultaneously(handler, otherHandler)) { + return false; + } + + if (handler !== otherHandler && (handler.isAwaiting() || handler.getState() === _State.State.ACTIVE)) { + // For now it always returns false + return handler.shouldBeCancelledByOther(otherHandler); + } + + const handlerPointers = handler.getTrackedPointersID(); + const otherPointers = otherHandler.getTrackedPointersID(); + + if (!_PointerTracker.default.shareCommonPointers(handlerPointers, otherPointers) && handler.getView() !== otherHandler.getView()) { + return this.checkOverlap(handler, otherHandler); + } + + return true; + } + + checkOverlap(handler, otherHandler) { + // If handlers don't have common pointers, default return value is false. + // However, if at least on pointer overlaps with both handlers, we return true + // This solves issue in overlapping parents example + // TODO: Find better way to handle that issue, for example by activation order and handler cancelling + const handlerPointers = handler.getTrackedPointersID(); + const otherPointers = otherHandler.getTrackedPointersID(); + let overlap = false; + handlerPointers.forEach(pointer => { + const handlerX = handler.getTracker().getLastX(pointer); + const handlerY = handler.getTracker().getLastY(pointer); + + if ((0, _utils.isPointerInBounds)(handler.getView(), { + x: handlerX, + y: handlerY + }) && (0, _utils.isPointerInBounds)(otherHandler.getView(), { + x: handlerX, + y: handlerY + })) { + overlap = true; + } + }); + otherPointers.forEach(pointer => { + const otherX = otherHandler.getTracker().getLastX(pointer); + const otherY = otherHandler.getTracker().getLastY(pointer); + + if ((0, _utils.isPointerInBounds)(handler.getView(), { + x: otherX, + y: otherY + }) && (0, _utils.isPointerInBounds)(otherHandler.getView(), { + x: otherX, + y: otherY + })) { + overlap = true; + } + }); + return overlap; + } + + isFinished(state) { + return state === _State.State.END || state === _State.State.FAILED || state === _State.State.CANCELLED; + } // This function is called when handler receives touchdown event + // If handler is using mouse or pen as a pointer and any handler receives touch event, + // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others) + // This became a problem because handler was left at active state without any signal to end or fail + // To handle this, when new touch event is received, we loop through active handlers and check which type of + // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them + + + cancelMouseAndPenGestures(currentHandler) { + this.gestureHandlers.forEach(handler => { + if (handler.getPointerType() !== _interfaces.PointerType.MOUSE && handler.getPointerType() !== _interfaces.PointerType.PEN) { + return; + } + + if (handler !== currentHandler) { + handler.cancel(); + } else { + // Handler that received touch event should have its pointer tracker reset + // This allows handler to smoothly change from mouse/pen to touch + // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time + // so it is required to click two times to get handler to work + // + // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method. + // There may be possibility to use that fact to make handler respond properly to first mouse click + handler.getTracker().resetTracker(); + } + }); + } + + static getInstance() { + if (!GestureHandlerOrchestrator.instance) { + GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator(); + } + + return GestureHandlerOrchestrator.instance; + } + +} + +exports.default = GestureHandlerOrchestrator; + +_defineProperty(GestureHandlerOrchestrator, "instance", void 0); +//# sourceMappingURL=GestureHandlerOrchestrator.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map new file mode 100644 index 00000000..327eb033 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerOrchestrator.ts"],"names":["GestureHandlerOrchestrator","constructor","scheduleFinishedHandlersCleanup","handlingChangeSemaphore","cleanupFinishedHandlers","cleanHandler","handler","reset","setActive","setAwaiting","setActivationIndex","Number","MAX_VALUE","removeHandlerFromOrchestrator","gestureHandlers","splice","indexOf","awaitingHandlers","handlersToCancel","i","length","isFinished","getState","isAwaiting","hasOtherHandlerToWaitFor","hasToWait","forEach","otherHandler","shouldHandlerWaitForOther","tryActivate","addAwaitingHandler","State","CANCELLED","FAILED","shouldActivate","makeActive","ACTIVE","fail","BEGAN","cancel","shouldHandlerBeCancelledBy","cleanupAwaitingHandlers","onHandlerStateChange","newState","oldState","sendIfDisabled","isEnabled","END","sendEvent","isActive","UNDETERMINED","currentState","setShouldResetProgress","activationIndex","push","alreadyExists","recordHandlerIfNotPresent","MAX_SAFE_INTEGER","shouldWaitForHandlerFailure","shouldRequireToWaitForFailure","canRunSimultaneously","gh1","gh2","shouldRecognizeSimultaneously","shouldBeCancelledByOther","handlerPointers","getTrackedPointersID","otherPointers","PointerTracker","shareCommonPointers","getView","checkOverlap","overlap","pointer","handlerX","getTracker","getLastX","handlerY","getLastY","x","y","otherX","otherY","state","cancelMouseAndPenGestures","currentHandler","getPointerType","PointerType","MOUSE","PEN","resetTracker","getInstance","instance"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { PointerType } from '../interfaces';\n\nimport GestureHandler from '../handlers/GestureHandler';\nimport PointerTracker from './PointerTracker';\nimport { isPointerInBounds } from '../utils';\n\nexport default class GestureHandlerOrchestrator {\n private static instance: GestureHandlerOrchestrator;\n\n private gestureHandlers: GestureHandler[] = [];\n private awaitingHandlers: GestureHandler[] = [];\n private handlersToCancel: GestureHandler[] = [];\n\n private handlingChangeSemaphore = 0;\n private activationIndex = 0;\n\n // Private beacuse of Singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n private scheduleFinishedHandlersCleanup(): void {\n if (this.handlingChangeSemaphore === 0) {\n this.cleanupFinishedHandlers();\n }\n }\n\n private cleanHandler(handler: GestureHandler): void {\n handler.reset();\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_VALUE);\n }\n\n public removeHandlerFromOrchestrator(handler: GestureHandler): void {\n this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1);\n this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1);\n this.handlersToCancel.splice(this.handlersToCancel.indexOf(handler), 1);\n }\n\n private cleanupFinishedHandlers(): void {\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n const handler = this.gestureHandlers[i];\n\n if (!handler) {\n continue;\n }\n if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {\n this.gestureHandlers.splice(i, 1);\n\n this.cleanHandler(handler);\n }\n }\n }\n\n private hasOtherHandlerToWaitFor(handler: GestureHandler): boolean {\n let hasToWait = false;\n this.gestureHandlers.forEach((otherHandler) => {\n if (\n otherHandler &&\n !this.isFinished(otherHandler.getState()) &&\n this.shouldHandlerWaitForOther(handler, otherHandler)\n ) {\n hasToWait = true;\n return;\n }\n });\n\n return hasToWait;\n }\n\n private tryActivate(handler: GestureHandler): void {\n if (this.hasOtherHandlerToWaitFor(handler)) {\n this.addAwaitingHandler(handler);\n } else if (\n handler.getState() !== State.CANCELLED &&\n handler.getState() !== State.FAILED\n ) {\n if (this.shouldActivate(handler)) {\n this.makeActive(handler);\n } else {\n switch (handler.getState()) {\n case State.ACTIVE:\n handler.fail();\n break;\n case State.BEGAN:\n handler.cancel();\n }\n }\n }\n }\n\n private shouldActivate(handler: GestureHandler): boolean {\n for (const otherHandler of this.gestureHandlers) {\n if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) {\n return false;\n }\n }\n\n return true;\n }\n\n private cleanupAwaitingHandlers(handler: GestureHandler): void {\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (\n !this.awaitingHandlers[i].isAwaiting() &&\n this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)\n ) {\n this.cleanHandler(this.awaitingHandlers[i]);\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n public onHandlerStateChange(\n handler: GestureHandler,\n newState: State,\n oldState: State,\n sendIfDisabled?: boolean\n ): void {\n if (!handler.isEnabled() && !sendIfDisabled) {\n return;\n }\n\n this.handlingChangeSemaphore += 1;\n\n if (this.isFinished(newState)) {\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerWaitForOther(otherHandler, handler)) {\n if (newState === State.END) {\n otherHandler?.cancel();\n if (otherHandler.getState() === State.END) {\n // Handle edge case, where discrete gestures end immediately after activation thus\n // their state is set to END and when the gesture they are waiting for activates they\n // should be cancelled, however `cancel` was never sent as gestures were already in the END state.\n // Send synthetic BEGAN -> CANCELLED to properly handle JS logic\n otherHandler.sendEvent(State.CANCELLED, State.BEGAN);\n }\n otherHandler?.setAwaiting(false);\n } else {\n this.tryActivate(otherHandler);\n }\n }\n });\n }\n\n if (newState === State.ACTIVE) {\n this.tryActivate(handler);\n } else if (oldState === State.ACTIVE || oldState === State.END) {\n if (handler.isActive()) {\n handler.sendEvent(newState, oldState);\n } else if (\n oldState === State.ACTIVE &&\n (newState === State.CANCELLED || newState === State.FAILED)\n ) {\n handler.sendEvent(newState, State.BEGAN);\n }\n } else if (\n oldState !== State.UNDETERMINED ||\n newState !== State.CANCELLED\n ) {\n handler.sendEvent(newState, oldState);\n }\n\n this.handlingChangeSemaphore -= 1;\n\n this.scheduleFinishedHandlersCleanup();\n\n if (this.awaitingHandlers.indexOf(handler) < 0) {\n this.cleanupAwaitingHandlers(handler);\n }\n }\n\n private makeActive(handler: GestureHandler): void {\n const currentState = handler.getState();\n\n handler.setActive(true);\n handler.setShouldResetProgress(true);\n handler.setActivationIndex(this.activationIndex++);\n\n this.gestureHandlers.forEach((otherHandler) => {\n // Order of arguments is correct - we check whether current handler should cancel existing handlers\n\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n this.handlersToCancel.push(otherHandler);\n }\n });\n\n for (let i = this.handlersToCancel.length - 1; i >= 0; --i) {\n this.handlersToCancel[i]?.cancel();\n }\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n otherHandler?.cancel();\n otherHandler?.setAwaiting(true);\n }\n });\n\n handler.sendEvent(State.ACTIVE, State.BEGAN);\n\n if (currentState !== State.ACTIVE) {\n handler.sendEvent(State.END, State.ACTIVE);\n if (currentState !== State.END) {\n handler.sendEvent(State.UNDETERMINED, State.END);\n }\n }\n\n if (handler.isAwaiting()) {\n handler.setAwaiting(false);\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (this.awaitingHandlers[i] === handler) {\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n this.handlersToCancel = [];\n }\n\n private addAwaitingHandler(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.awaitingHandlers.push(handler);\n\n handler.setAwaiting(true);\n handler.setActivationIndex(this.activationIndex++);\n }\n\n public recordHandlerIfNotPresent(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.gestureHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.gestureHandlers.push(handler);\n\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_SAFE_INTEGER);\n }\n\n private shouldHandlerWaitForOther(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n return (\n handler !== otherHandler &&\n (handler.shouldWaitForHandlerFailure(otherHandler) ||\n otherHandler.shouldRequireToWaitForFailure(handler))\n );\n }\n\n private canRunSimultaneously(\n gh1: GestureHandler,\n gh2: GestureHandler\n ): boolean {\n return (\n gh1 === gh2 ||\n gh1.shouldRecognizeSimultaneously(gh2) ||\n gh2.shouldRecognizeSimultaneously(gh1)\n );\n }\n\n private shouldHandlerBeCancelledBy(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n if (this.canRunSimultaneously(handler, otherHandler)) {\n return false;\n }\n\n if (\n handler !== otherHandler &&\n (handler.isAwaiting() || handler.getState() === State.ACTIVE)\n ) {\n // For now it always returns false\n return handler.shouldBeCancelledByOther(otherHandler);\n }\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n if (\n !PointerTracker.shareCommonPointers(handlerPointers, otherPointers) &&\n handler.getView() !== otherHandler.getView()\n ) {\n return this.checkOverlap(handler, otherHandler);\n }\n\n return true;\n }\n\n private checkOverlap(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n // If handlers don't have common pointers, default return value is false.\n // However, if at least on pointer overlaps with both handlers, we return true\n // This solves issue in overlapping parents example\n\n // TODO: Find better way to handle that issue, for example by activation order and handler cancelling\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n let overlap = false;\n\n handlerPointers.forEach((pointer: number) => {\n const handlerX: number = handler.getTracker().getLastX(pointer);\n const handlerY: number = handler.getTracker().getLastY(pointer);\n\n if (\n isPointerInBounds(handler.getView(), { x: handlerX, y: handlerY }) &&\n isPointerInBounds(otherHandler.getView(), { x: handlerX, y: handlerY })\n ) {\n overlap = true;\n }\n });\n\n otherPointers.forEach((pointer: number) => {\n const otherX: number = otherHandler.getTracker().getLastX(pointer);\n const otherY: number = otherHandler.getTracker().getLastY(pointer);\n\n if (\n isPointerInBounds(handler.getView(), { x: otherX, y: otherY }) &&\n isPointerInBounds(otherHandler.getView(), { x: otherX, y: otherY })\n ) {\n overlap = true;\n }\n });\n\n return overlap;\n }\n\n private isFinished(state: State): boolean {\n return (\n state === State.END || state === State.FAILED || state === State.CANCELLED\n );\n }\n\n // This function is called when handler receives touchdown event\n // If handler is using mouse or pen as a pointer and any handler receives touch event,\n // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others)\n // This became a problem because handler was left at active state without any signal to end or fail\n // To handle this, when new touch event is received, we loop through active handlers and check which type of\n // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them\n public cancelMouseAndPenGestures(currentHandler: GestureHandler): void {\n this.gestureHandlers.forEach((handler: GestureHandler) => {\n if (\n handler.getPointerType() !== PointerType.MOUSE &&\n handler.getPointerType() !== PointerType.PEN\n ) {\n return;\n }\n\n if (handler !== currentHandler) {\n handler.cancel();\n } else {\n // Handler that received touch event should have its pointer tracker reset\n // This allows handler to smoothly change from mouse/pen to touch\n // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time\n // so it is required to click two times to get handler to work\n //\n // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method.\n // There may be possibility to use that fact to make handler respond properly to first mouse click\n handler.getTracker().resetTracker();\n }\n });\n }\n\n public static getInstance(): GestureHandlerOrchestrator {\n if (!GestureHandlerOrchestrator.instance) {\n GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator();\n }\n\n return GestureHandlerOrchestrator.instance;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js new file mode 100644 index 00000000..074b73fa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js @@ -0,0 +1,116 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class InteractionManager { + // Private becaues of singleton + // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + constructor() { + _defineProperty(this, "waitForRelations", new Map()); + + _defineProperty(this, "simultaneousRelations", new Map()); + } + + configureInteractions(handler, config) { + this.dropRelationsForHandlerWithTag(handler.getTag()); + + if (config.waitFor) { + const waitFor = []; + config.waitFor.forEach(otherHandler => { + // New API reference + if (typeof otherHandler === 'number') { + waitFor.push(otherHandler); + } else { + // Old API reference + waitFor.push(otherHandler.handlerTag); + } + }); + this.waitForRelations.set(handler.getTag(), waitFor); + } + + if (config.simultaneousHandlers) { + const simultaneousHandlers = []; + config.simultaneousHandlers.forEach(otherHandler => { + if (typeof otherHandler === 'number') { + simultaneousHandlers.push(otherHandler); + } else { + simultaneousHandlers.push(otherHandler.handlerTag); + } + }); + this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers); + } + } + + shouldWaitForHandlerFailure(handler, otherHandler) { + const waitFor = this.waitForRelations.get(handler.getTag()); + + if (!waitFor) { + return false; + } + + let shouldWait = false; + waitFor.forEach(tag => { + if (tag === otherHandler.getTag()) { + shouldWait = true; + return; //Returns from callback + } + }); + return shouldWait; + } + + shouldRecognizeSimultaneously(handler, otherHandler) { + const simultaneousHandlers = this.simultaneousRelations.get(handler.getTag()); + + if (!simultaneousHandlers) { + return false; + } + + let shouldRecognizeSimultaneously = false; + simultaneousHandlers.forEach(tag => { + if (tag === otherHandler.getTag()) { + shouldRecognizeSimultaneously = true; + return; + } + }); + return shouldRecognizeSimultaneously; + } + + shouldRequireHandlerToWaitForFailure(_handler, _otherHandler) { + //TODO: Implement logic + return false; + } + + shouldHandlerBeCancelledBy(_handler, _otherHandler) { + //TODO: Implement logic + return false; + } + + dropRelationsForHandlerWithTag(handlerTag) { + this.waitForRelations.delete(handlerTag); + this.simultaneousRelations.delete(handlerTag); + } + + reset() { + this.waitForRelations.clear(); + this.simultaneousRelations.clear(); + } + + static getInstance() { + if (!this.instance) { + this.instance = new InteractionManager(); + } + + return this.instance; + } + +} + +exports.default = InteractionManager; + +_defineProperty(InteractionManager, "instance", void 0); +//# sourceMappingURL=InteractionManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js.map new file mode 100644 index 00000000..3a4f20da --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/InteractionManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["InteractionManager.ts"],"names":["InteractionManager","constructor","Map","configureInteractions","handler","config","dropRelationsForHandlerWithTag","getTag","waitFor","forEach","otherHandler","push","handlerTag","waitForRelations","set","simultaneousHandlers","simultaneousRelations","shouldWaitForHandlerFailure","get","shouldWait","tag","shouldRecognizeSimultaneously","shouldRequireHandlerToWaitForFailure","_handler","_otherHandler","shouldHandlerBeCancelledBy","delete","reset","clear","getInstance","instance"],"mappings":"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","sourcesContent":["import GestureHandler from '../handlers/GestureHandler';\nimport { Config, Handler } from '../interfaces';\n\nexport default class InteractionManager {\n private static instance: InteractionManager;\n private readonly waitForRelations: Map = new Map();\n private readonly simultaneousRelations: Map = new Map();\n\n // Private becaues of singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n public configureInteractions(handler: GestureHandler, config: Config) {\n this.dropRelationsForHandlerWithTag(handler.getTag());\n\n if (config.waitFor) {\n const waitFor: number[] = [];\n config.waitFor.forEach((otherHandler: Handler): void => {\n // New API reference\n if (typeof otherHandler === 'number') {\n waitFor.push(otherHandler);\n } else {\n // Old API reference\n waitFor.push(otherHandler.handlerTag);\n }\n });\n\n this.waitForRelations.set(handler.getTag(), waitFor);\n }\n\n if (config.simultaneousHandlers) {\n const simultaneousHandlers: number[] = [];\n config.simultaneousHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n simultaneousHandlers.push(otherHandler);\n } else {\n simultaneousHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);\n }\n }\n\n public shouldWaitForHandlerFailure(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.waitForRelations.get(\n handler.getTag()\n );\n if (!waitFor) {\n return false;\n }\n\n let shouldWait = false;\n\n waitFor.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldWait = true;\n return; //Returns from callback\n }\n });\n\n return shouldWait;\n }\n\n public shouldRecognizeSimultaneously(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const simultaneousHandlers: number[] | undefined =\n this.simultaneousRelations.get(handler.getTag());\n if (!simultaneousHandlers) {\n return false;\n }\n\n let shouldRecognizeSimultaneously = false;\n\n simultaneousHandlers.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldRecognizeSimultaneously = true;\n return;\n }\n });\n\n return shouldRecognizeSimultaneously;\n }\n\n public shouldRequireHandlerToWaitForFailure(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n //TODO: Implement logic\n return false;\n }\n\n public shouldHandlerBeCancelledBy(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n //TODO: Implement logic\n return false;\n }\n\n public dropRelationsForHandlerWithTag(handlerTag: number): void {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n }\n\n public reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n }\n\n public static getInstance(): InteractionManager {\n if (!this.instance) {\n this.instance = new InteractionManager();\n }\n\n return this.instance;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js new file mode 100644 index 00000000..e8b8222f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js @@ -0,0 +1,48 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// eslint-disable-next-line @typescript-eslint/no-extraneous-class +class NodeManager { + static getHandler(tag) { + if (tag in this.gestures) { + return this.gestures[tag]; + } + + throw new Error(`No handler for tag ${tag}`); + } + + static createGestureHandler(handlerTag, handler) { + if (handlerTag in this.gestures) { + throw new Error(`Handler with tag ${handlerTag} already exists`); + } + + this.gestures[handlerTag] = handler; + this.gestures[handlerTag].setTag(handlerTag); + } + + static dropGestureHandler(handlerTag) { + if (!(handlerTag in this.gestures)) { + return; + } // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + + + delete this.gestures[handlerTag]; + } + + static getNodes() { + return { ...this.gestures + }; + } + +} + +exports.default = NodeManager; + +_defineProperty(NodeManager, "gestures", {}); +//# sourceMappingURL=NodeManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js.map new file mode 100644 index 00000000..3f7d843a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/NodeManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NodeManager.ts"],"names":["NodeManager","getHandler","tag","gestures","Error","createGestureHandler","handlerTag","handler","setTag","dropGestureHandler","getNodes"],"mappings":";;;;;;;;;AAGA;AACe,MAAeA,WAAf,CAA2B;AAMhB,SAAVC,UAAU,CAACC,GAAD,EAAc;AACpC,QAAIA,GAAG,IAAI,KAAKC,QAAhB,EAA0B;AACxB,aAAO,KAAKA,QAAL,CAAcD,GAAd,CAAP;AACD;;AAED,UAAM,IAAIE,KAAJ,CAAW,sBAAqBF,GAAI,EAApC,CAAN;AACD;;AAEiC,SAApBG,oBAAoB,CAChCC,UADgC,EAEhCC,OAFgC,EAG1B;AACN,QAAID,UAAU,IAAI,KAAKH,QAAvB,EAAiC;AAC/B,YAAM,IAAIC,KAAJ,CAAW,oBAAmBE,UAAW,iBAAzC,CAAN;AACD;;AAED,SAAKH,QAAL,CAAcG,UAAd,IAA4BC,OAA5B;AACA,SAAKJ,QAAL,CAAcG,UAAd,EAA0BE,MAA1B,CAAiCF,UAAjC;AACD;;AAE+B,SAAlBG,kBAAkB,CAACH,UAAD,EAA2B;AACzD,QAAI,EAAEA,UAAU,IAAI,KAAKH,QAArB,CAAJ,EAAoC;AAClC;AACD,KAHwD,CAKzD;;;AACA,WAAO,KAAKA,QAAL,CAAcG,UAAd,CAAP;AACD;;AAEqB,SAARI,QAAQ,GAAG;AACvB,WAAO,EAAE,GAAG,KAAKP;AAAV,KAAP;AACD;;AArCuC;;;;gBAAZH,W,cAIxB,E","sourcesContent":["import { ValueOf } from '../../typeUtils';\nimport { Gestures } from '../../RNGestureHandlerModule.web';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport default abstract class NodeManager {\n private static gestures: Record<\n number,\n InstanceType>\n > = {};\n\n public static getHandler(tag: number) {\n if (tag in this.gestures) {\n return this.gestures[tag];\n }\n\n throw new Error(`No handler for tag ${tag}`);\n }\n\n public static createGestureHandler(\n handlerTag: number,\n handler: InstanceType>\n ): void {\n if (handlerTag in this.gestures) {\n throw new Error(`Handler with tag ${handlerTag} already exists`);\n }\n\n this.gestures[handlerTag] = handler;\n this.gestures[handlerTag].setTag(handlerTag);\n }\n\n public static dropGestureHandler(handlerTag: number): void {\n if (!(handlerTag in this.gestures)) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.gestures[handlerTag];\n }\n\n public static getNodes() {\n return { ...this.gestures };\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js new file mode 100644 index 00000000..218f74cd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js @@ -0,0 +1,130 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _interfaces = require("../interfaces"); + +var _EventManager = _interopRequireDefault(require("./EventManager")); + +var _utils = require("../utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class PointerEventManager extends _EventManager.default { + setListeners() { + this.view.addEventListener('pointerdown', event => { + if (event.pointerType === _interfaces.PointerType.TOUCH) { + return; + } + + if (!(0, _utils.isPointerInBounds)(this.view, { + x: event.clientX, + y: event.clientY + })) { + return; + } + + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.DOWN); + const target = event.target; + target.setPointerCapture(adaptedEvent.pointerId); + this.markAsInBounds(adaptedEvent.pointerId); + + if (++this.activePointersCounter > 1) { + adaptedEvent.eventType = _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN; + this.onPointerAdd(adaptedEvent); + } else { + this.onPointerDown(adaptedEvent); + } + }); + this.view.addEventListener('pointerup', event => { + if (event.pointerType === _interfaces.PointerType.TOUCH) { + return; + } // When we call reset on gesture handlers, it also resets their event managers + // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view + // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view + // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly + + + if (this.activePointersCounter === 0) { + return; + } + + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.UP); + const target = event.target; + target.releasePointerCapture(adaptedEvent.pointerId); + this.markAsOutOfBounds(adaptedEvent.pointerId); + + if (--this.activePointersCounter > 0) { + adaptedEvent.eventType = _interfaces.EventTypes.ADDITIONAL_POINTER_UP; + this.onPointerRemove(adaptedEvent); + } else { + this.onPointerUp(adaptedEvent); + } + }); + this.view.addEventListener('pointermove', event => { + if (event.pointerType === _interfaces.PointerType.TOUCH) { + return; + } + + if (event.pointerType === _interfaces.PointerType.MOUSE && event.buttons !== _interfaces.MouseButtons.LEFT) { + return; + } + + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.MOVE); + const inBounds = (0, _utils.isPointerInBounds)(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y + }); + const pointerIndex = this.pointersInBounds.indexOf(adaptedEvent.pointerId); + + if (inBounds) { + if (pointerIndex < 0) { + adaptedEvent.eventType = _interfaces.EventTypes.ENTER; + this.onPointerEnter(adaptedEvent); + this.markAsInBounds(adaptedEvent.pointerId); + } else { + this.onPointerMove(adaptedEvent); + } + } else { + if (pointerIndex >= 0) { + adaptedEvent.eventType = _interfaces.EventTypes.OUT; + this.onPointerOut(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + } else { + this.onPointerOutOfBounds(adaptedEvent); + } + } + }); + this.view.addEventListener('pointercancel', event => { + if (event.pointerType === _interfaces.PointerType.TOUCH) { + return; + } + + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.CANCEL); + this.onPointerCancel(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + this.activePointersCounter = 0; + }); + } + + mapEvent(event, eventType) { + return { + x: event.clientX, + y: event.clientY, + offsetX: event.offsetX, + offsetY: event.offsetY, + pointerId: event.pointerId, + eventType: eventType, + pointerType: event.pointerType, + buttons: event.buttons, + time: event.timeStamp + }; + } + +} + +exports.default = PointerEventManager; +//# sourceMappingURL=PointerEventManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js.map new file mode 100644 index 00000000..fe308679 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerEventManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PointerEventManager.ts"],"names":["PointerEventManager","EventManager","setListeners","view","addEventListener","event","pointerType","PointerType","TOUCH","x","clientX","y","clientY","adaptedEvent","mapEvent","EventTypes","DOWN","target","setPointerCapture","pointerId","markAsInBounds","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOUSE","buttons","MouseButtons","LEFT","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","onPointerOutOfBounds","CANCEL","onPointerCancel","offsetX","offsetY","time","timeStamp"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class PointerEventManager extends EventManager {\n public setListeners(): void {\n this.view.addEventListener('pointerdown', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (\n !isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n target.setPointerCapture(adaptedEvent.pointerId);\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointerup', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n target.releasePointerCapture(adaptedEvent.pointerId);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointermove', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n if (\n event.pointerType === PointerType.MOUSE &&\n event.buttons !== MouseButtons.LEFT\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('pointercancel', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n });\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType as PointerType,\n buttons: event.buttons,\n time: event.timeStamp,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js new file mode 100644 index 00000000..1e166e98 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js @@ -0,0 +1,222 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// Used to scale velocity so that it is similar to velocity in Android/iOS +const VELOCITY_FACTOR = 0.2; +const MAX_POINTERS = 20; + +class PointerTracker { + constructor() { + _defineProperty(this, "trackedPointers", new Map()); + + _defineProperty(this, "touchEventsIds", new Map()); + + _defineProperty(this, "lastMovedPointerId", void 0); + + _defineProperty(this, "cachedAverages", { + x: 0, + y: 0 + }); + + this.lastMovedPointerId = NaN; + + for (let i = 0; i < MAX_POINTERS; ++i) { + this.touchEventsIds.set(i, NaN); + } + } + + addToTracker(event) { + if (this.trackedPointers.has(event.pointerId)) { + return; + } + + this.lastMovedPointerId = event.pointerId; + const newElement = { + lastX: event.x, + lastY: event.y, + timeStamp: event.time, + velocityX: 0, + velocityY: 0 + }; + this.trackedPointers.set(event.pointerId, newElement); + this.mapTouchEventId(event.pointerId); + this.cachedAverages = { + x: this.getLastAvgX(), + y: this.getLastAvgY() + }; + } + + removeFromTracker(pointerId) { + this.trackedPointers.delete(pointerId); + this.removeMappedTouchId(pointerId); + } + + track(event) { + const element = this.trackedPointers.get(event.pointerId); + + if (!element) { + return; + } + + this.lastMovedPointerId = event.pointerId; + const dx = event.x - element.lastX; + const dy = event.y - element.lastY; + const dt = event.time - element.timeStamp; + element.velocityX = dx / dt * 1000 * VELOCITY_FACTOR; + element.velocityY = dy / dt * 1000 * VELOCITY_FACTOR; + element.lastX = event.x; + element.lastY = event.y; + this.trackedPointers.set(event.pointerId, element); + const avgX = this.getLastAvgX(); + const avgY = this.getLastAvgY(); + this.cachedAverages = { + x: avgX, + y: avgY + }; + } //Mapping TouchEvents ID + + + mapTouchEventId(id) { + for (const [mappedId, touchId] of this.touchEventsIds) { + if (isNaN(touchId)) { + this.touchEventsIds.set(mappedId, id); + break; + } + } + } + + removeMappedTouchId(id) { + const mappedId = this.getMappedTouchEventId(id); + + if (!isNaN(mappedId)) { + this.touchEventsIds.set(mappedId, NaN); + } + } + + getMappedTouchEventId(touchEventId) { + for (const [key, value] of this.touchEventsIds.entries()) { + if (value === touchEventId) { + return key; + } + } + + return NaN; + } + + getVelocityX(pointerId) { + var _this$trackedPointers; + + return (_this$trackedPointers = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers === void 0 ? void 0 : _this$trackedPointers.velocityX; + } + + getVelocityY(pointerId) { + var _this$trackedPointers2; + + return (_this$trackedPointers2 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers2 === void 0 ? void 0 : _this$trackedPointers2.velocityY; + } + /** + * Returns X coordinate of last moved pointer + */ + + + getLastX(pointerId) { + if (pointerId !== undefined) { + var _this$trackedPointers3; + + return (_this$trackedPointers3 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers3 === void 0 ? void 0 : _this$trackedPointers3.lastX; + } else { + var _this$trackedPointers4; + + return (_this$trackedPointers4 = this.trackedPointers.get(this.lastMovedPointerId)) === null || _this$trackedPointers4 === void 0 ? void 0 : _this$trackedPointers4.lastX; + } + } + /** + * Returns Y coordinate of last moved pointer + */ + + + getLastY(pointerId) { + if (pointerId !== undefined) { + var _this$trackedPointers5; + + return (_this$trackedPointers5 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers5 === void 0 ? void 0 : _this$trackedPointers5.lastY; + } else { + var _this$trackedPointers6; + + return (_this$trackedPointers6 = this.trackedPointers.get(this.lastMovedPointerId)) === null || _this$trackedPointers6 === void 0 ? void 0 : _this$trackedPointers6.lastY; + } + } // Some handlers use these methods to send average values in native event. + // This may happen when pointers have already been removed from tracker (i.e. pointerup event). + // In situation when NaN would be sent as a response, we return cached value. + // That prevents handlers from crashing + + + getLastAvgX() { + const avgX = this.getSumX() / this.trackedPointers.size; + return isNaN(avgX) ? this.cachedAverages.x : avgX; + } + + getLastAvgY() { + const avgY = this.getSumY() / this.trackedPointers.size; + return isNaN(avgY) ? this.cachedAverages.y : avgY; + } + + getSumX(ignoredPointer) { + let sumX = 0; + this.trackedPointers.forEach((value, key) => { + if (key !== ignoredPointer) { + sumX += value.lastX; + } + }); + return sumX; + } + + getSumY(ignoredPointer) { + let sumY = 0; + this.trackedPointers.forEach((value, key) => { + if (key !== ignoredPointer) { + sumY += value.lastY; + } + }); + return sumY; + } + + getTrackedPointersCount() { + return this.trackedPointers.size; + } + + getTrackedPointersID() { + const keys = []; + this.trackedPointers.forEach((_value, key) => { + keys.push(key); + }); + return keys; + } + + getData() { + return this.trackedPointers; + } + + resetTracker() { + this.trackedPointers.clear(); + this.lastMovedPointerId = NaN; + + for (let i = 0; i < MAX_POINTERS; ++i) { + this.touchEventsIds.set(i, NaN); + } + } + + static shareCommonPointers(stPointers, ndPointers) { + return stPointers.some(pointerId => ndPointers.includes(pointerId)); + } + +} + +exports.default = PointerTracker; +//# sourceMappingURL=PointerTracker.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js.map new file mode 100644 index 00000000..61540183 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/PointerTracker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PointerTracker.ts"],"names":["VELOCITY_FACTOR","MAX_POINTERS","PointerTracker","constructor","Map","x","y","lastMovedPointerId","NaN","i","touchEventsIds","set","addToTracker","event","trackedPointers","has","pointerId","newElement","lastX","lastY","timeStamp","time","velocityX","velocityY","mapTouchEventId","cachedAverages","getLastAvgX","getLastAvgY","removeFromTracker","delete","removeMappedTouchId","track","element","get","dx","dy","dt","avgX","avgY","id","mappedId","touchId","isNaN","getMappedTouchEventId","touchEventId","key","value","entries","getVelocityX","getVelocityY","getLastX","undefined","getLastY","getSumX","size","getSumY","ignoredPointer","sumX","forEach","sumY","getTrackedPointersCount","getTrackedPointersID","keys","_value","push","getData","resetTracker","clear","shareCommonPointers","stPointers","ndPointers","some","includes"],"mappings":"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","sourcesContent":["import { AdaptedEvent } from '../interfaces';\n\nexport interface TrackerElement {\n lastX: number;\n lastY: number;\n\n timeStamp: number;\n\n velocityX: number;\n velocityY: number;\n}\n\n// Used to scale velocity so that it is similar to velocity in Android/iOS\nconst VELOCITY_FACTOR = 0.2;\nconst MAX_POINTERS = 20;\n\nexport default class PointerTracker {\n private trackedPointers: Map = new Map<\n number,\n TrackerElement\n >();\n\n private touchEventsIds: Map = new Map();\n\n private lastMovedPointerId: number;\n\n private cachedAverages: { x: number; y: number } = { x: 0, y: 0 };\n\n public constructor() {\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public addToTracker(event: AdaptedEvent): void {\n if (this.trackedPointers.has(event.pointerId)) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const newElement: TrackerElement = {\n lastX: event.x,\n lastY: event.y,\n timeStamp: event.time,\n velocityX: 0,\n velocityY: 0,\n };\n\n this.trackedPointers.set(event.pointerId, newElement);\n this.mapTouchEventId(event.pointerId);\n\n this.cachedAverages = {\n x: this.getLastAvgX(),\n y: this.getLastAvgY(),\n };\n }\n\n public removeFromTracker(pointerId: number): void {\n this.trackedPointers.delete(pointerId);\n this.removeMappedTouchId(pointerId);\n }\n\n public track(event: AdaptedEvent): void {\n const element: TrackerElement = this.trackedPointers.get(\n event.pointerId\n ) as TrackerElement;\n\n if (!element) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const dx = event.x - element.lastX;\n const dy = event.y - element.lastY;\n const dt = event.time - element.timeStamp;\n\n element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR;\n element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR;\n\n element.lastX = event.x;\n element.lastY = event.y;\n\n this.trackedPointers.set(event.pointerId, element);\n\n const avgX: number = this.getLastAvgX();\n const avgY: number = this.getLastAvgY();\n\n this.cachedAverages = {\n x: avgX,\n y: avgY,\n };\n }\n\n //Mapping TouchEvents ID\n private mapTouchEventId(id: number): void {\n for (const [mappedId, touchId] of this.touchEventsIds) {\n if (isNaN(touchId)) {\n this.touchEventsIds.set(mappedId, id);\n break;\n }\n }\n }\n\n private removeMappedTouchId(id: number): void {\n const mappedId: number = this.getMappedTouchEventId(id);\n if (!isNaN(mappedId)) {\n this.touchEventsIds.set(mappedId, NaN);\n }\n }\n\n public getMappedTouchEventId(touchEventId: number): number {\n for (const [key, value] of this.touchEventsIds.entries()) {\n if (value === touchEventId) {\n return key;\n }\n }\n\n return NaN;\n }\n\n public getVelocityX(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityX as number;\n }\n public getVelocityY(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityY as number;\n }\n\n /**\n * Returns X coordinate of last moved pointer\n */\n public getLastX(): number;\n\n /**\n *\n * @param pointerId\n * Returns X coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastX(pointerId: number): number;\n\n public getLastX(pointerId?: number): number {\n if (pointerId !== undefined) {\n return this.trackedPointers.get(pointerId)?.lastX as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number;\n }\n }\n\n /**\n * Returns Y coordinate of last moved pointer\n */\n public getLastY(): number;\n\n /**\n *\n * @param pointerId\n * Returns Y coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastY(pointerId: number): number;\n\n public getLastY(pointerId?: number): number {\n if (pointerId !== undefined) {\n return this.trackedPointers.get(pointerId)?.lastY as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number;\n }\n }\n\n // Some handlers use these methods to send average values in native event.\n // This may happen when pointers have already been removed from tracker (i.e. pointerup event).\n // In situation when NaN would be sent as a response, we return cached value.\n // That prevents handlers from crashing\n public getLastAvgX(): number {\n const avgX: number = this.getSumX() / this.trackedPointers.size;\n return isNaN(avgX) ? this.cachedAverages.x : avgX;\n }\n public getLastAvgY(): number {\n const avgY: number = this.getSumY() / this.trackedPointers.size;\n return isNaN(avgY) ? this.cachedAverages.y : avgY;\n }\n public getSumX(ignoredPointer?: number): number {\n let sumX = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumX += value.lastX;\n }\n });\n\n return sumX;\n }\n public getSumY(ignoredPointer?: number): number {\n let sumY = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumY += value.lastY;\n }\n });\n\n return sumY;\n }\n public getTrackedPointersCount(): number {\n return this.trackedPointers.size;\n }\n public getTrackedPointersID(): number[] {\n const keys: number[] = [];\n\n this.trackedPointers.forEach((_value, key) => {\n keys.push(key);\n });\n\n return keys;\n }\n\n public getData(): Map {\n return this.trackedPointers;\n }\n\n public resetTracker(): void {\n this.trackedPointers.clear();\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public static shareCommonPointers(\n stPointers: number[],\n ndPointers: number[]\n ): boolean {\n return stPointers.some((pointerId) => ndPointers.includes(pointerId));\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js new file mode 100644 index 00000000..d8543263 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js @@ -0,0 +1,138 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _interfaces = require("../interfaces"); + +var _EventManager = _interopRequireDefault(require("./EventManager")); + +var _utils = require("../utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class TouchEventManager extends _EventManager.default { + setListeners() { + this.view.addEventListener('touchstart', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.DOWN, i, _interfaces.TouchEventType.DOWN); // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents + // If we leave stylus to send touch events, handlers will receive every action twice + + if (!(0, _utils.isPointerInBounds)(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y + }) || //@ts-ignore touchType field does exist + event.changedTouches[i].touchType === 'stylus') { + continue; + } + + this.markAsInBounds(adaptedEvent.pointerId); + + if (++this.activePointersCounter > 1) { + adaptedEvent.eventType = _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN; + this.onPointerAdd(adaptedEvent); + } else { + this.onPointerDown(adaptedEvent); + } + } + }); + this.view.addEventListener('touchmove', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.MOVE, i, _interfaces.TouchEventType.MOVE); //@ts-ignore touchType field does exist + + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + const inBounds = (0, _utils.isPointerInBounds)(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y + }); + const pointerIndex = this.pointersInBounds.indexOf(adaptedEvent.pointerId); + + if (inBounds) { + if (pointerIndex < 0) { + adaptedEvent.eventType = _interfaces.EventTypes.ENTER; + this.onPointerEnter(adaptedEvent); + this.markAsInBounds(adaptedEvent.pointerId); + } else { + this.onPointerMove(adaptedEvent); + } + } else { + if (pointerIndex >= 0) { + adaptedEvent.eventType = _interfaces.EventTypes.OUT; + this.onPointerOut(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + } else { + this.onPointerOutOfBounds(adaptedEvent); + } + } + } + }); + this.view.addEventListener('touchend', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + // When we call reset on gesture handlers, it also resets their event managers + // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view + // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view + // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly + if (this.activePointersCounter === 0) { + break; + } //@ts-ignore touchType field does exist + + + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.UP, i, _interfaces.TouchEventType.UP); + this.markAsOutOfBounds(adaptedEvent.pointerId); + + if (--this.activePointersCounter > 0) { + adaptedEvent.eventType = _interfaces.EventTypes.ADDITIONAL_POINTER_UP; + this.onPointerRemove(adaptedEvent); + } else { + this.onPointerUp(adaptedEvent); + } + } + }); + this.view.addEventListener('touchcancel', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.CANCEL, i, _interfaces.TouchEventType.CANCELLED); //@ts-ignore touchType field does exist + + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + this.onPointerCancel(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + this.activePointersCounter = 0; + } + }); + } + + mapEvent(event, eventType, index, touchEventType) { + const rect = this.view.getBoundingClientRect(); + const clientX = event.changedTouches[index].clientX; + const clientY = event.changedTouches[index].clientY; + return { + x: clientX, + y: clientY, + offsetX: clientX - rect.left, + offsetY: clientY - rect.top, + pointerId: event.changedTouches[index].identifier, + eventType: eventType, + pointerType: _interfaces.PointerType.TOUCH, + buttons: _interfaces.MouseButtons.NONE, + time: event.timeStamp, + allTouches: event.touches, + changedTouches: event.changedTouches, + touchEventType: touchEventType + }; + } + +} + +exports.default = TouchEventManager; +//# sourceMappingURL=TouchEventManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js.map new file mode 100644 index 00000000..61d52adf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/tools/TouchEventManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchEventManager.ts"],"names":["TouchEventManager","EventManager","setListeners","view","addEventListener","event","i","changedTouches","length","adaptedEvent","mapEvent","EventTypes","DOWN","TouchEventType","x","y","touchType","markAsInBounds","pointerId","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","markAsOutOfBounds","onPointerOutOfBounds","UP","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","CANCEL","CANCELLED","onPointerCancel","index","touchEventType","rect","getBoundingClientRect","clientX","clientY","offsetX","left","offsetY","top","identifier","pointerType","PointerType","TOUCH","buttons","MouseButtons","NONE","time","timeStamp","allTouches","touches"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n TouchEventType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class TouchEventManager extends EventManager {\n public setListeners(): void {\n this.view.addEventListener('touchstart', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.DOWN,\n i,\n TouchEventType.DOWN\n );\n\n // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents\n // If we leave stylus to send touch events, handlers will receive every action twice\n if (\n !isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n }) ||\n //@ts-ignore touchType field does exist\n event.changedTouches[i].touchType === 'stylus'\n ) {\n continue;\n }\n\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchmove', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.MOVE,\n i,\n TouchEventType.MOVE\n );\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n }\n });\n\n this.view.addEventListener('touchend', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n break;\n }\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.UP,\n i,\n TouchEventType.UP\n );\n\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchcancel', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL,\n i,\n TouchEventType.CANCELLED\n );\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n }\n });\n }\n\n protected mapEvent(\n event: TouchEvent,\n eventType: EventTypes,\n index: number,\n touchEventType: TouchEventType\n ): AdaptedEvent {\n const rect = this.view.getBoundingClientRect();\n const clientX = event.changedTouches[index].clientX;\n const clientY = event.changedTouches[index].clientY;\n\n return {\n x: clientX,\n y: clientY,\n offsetX: clientX - rect.left,\n offsetY: clientY - rect.top,\n pointerId: event.changedTouches[index].identifier,\n eventType: eventType,\n pointerType: PointerType.TOUCH,\n buttons: MouseButtons.NONE,\n time: event.timeStamp,\n allTouches: event.touches,\n changedTouches: event.changedTouches,\n touchEventType: touchEventType,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js new file mode 100644 index 00000000..5795f10a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isPointerInBounds = isPointerInBounds; + +function isPointerInBounds(view, { + x, + y +}) { + const rect = view.getBoundingClientRect(); + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js.map new file mode 100644 index 00000000..92d4f1b2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.ts"],"names":["isPointerInBounds","view","x","y","rect","getBoundingClientRect","left","right","top","bottom"],"mappings":";;;;;;;AAAO,SAASA,iBAAT,CACLC,IADK,EAEL;AAAEC,EAAAA,CAAF;AAAKC,EAAAA;AAAL,CAFK,EAGI;AACT,QAAMC,IAAa,GAAGH,IAAI,CAACI,qBAAL,EAAtB;AAEA,SAAOH,CAAC,IAAIE,IAAI,CAACE,IAAV,IAAkBJ,CAAC,IAAIE,IAAI,CAACG,KAA5B,IAAqCJ,CAAC,IAAIC,IAAI,CAACI,GAA/C,IAAsDL,CAAC,IAAIC,IAAI,CAACK,MAAvE;AACD","sourcesContent":["export function isPointerInBounds(\n view: HTMLElement,\n { x, y }: { x: number; y: number }\n): boolean {\n const rect: DOMRect = view.getBoundingClientRect();\n\n return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js new file mode 100644 index 00000000..e9cf916a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js @@ -0,0 +1,105 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +class DiscreteGestureHandler extends _GestureHandler.default { + get isDiscrete() { + return true; + } + + get shouldEnableGestureOnSetup() { + return true; + } + + shouldFailUnderCustomCriteria({ + x, + y, + deltaX, + deltaY + }, { + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside + }) { + if (shouldCancelWhenOutside) { + if (!this.isPointInView({ + x, + y + })) { + return true; + } + } + + return (0, _utils.TEST_MAX_IF_NOT_NAN)(Math.abs(deltaX), maxDeltaX) || (0, _utils.TEST_MAX_IF_NOT_NAN)(Math.abs(deltaY), maxDeltaY) || (0, _utils.TEST_MAX_IF_NOT_NAN)(Math.abs(deltaY * deltaY + deltaX * deltaX), maxDistSq); + } + + transformNativeEvent({ + center: { + x, + y + } + }) { + // @ts-ignore FIXME(TS) + const rect = this.view.getBoundingClientRect(); + return { + absoluteX: x, + absoluteY: y, + x: x - rect.left, + y: y - rect.top + }; + } + + isGestureEnabledForEvent({ + minPointers, + maxPointers, + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside + }, _recognizer, { + maxPointers: pointerLength, + center, + deltaX, + deltaY + }) { + const validPointerCount = pointerLength >= minPointers && pointerLength <= maxPointers; + + if (this.shouldFailUnderCustomCriteria({ ...center, + deltaX, + deltaY + }, { + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside + }) || // A user probably won't land a multi-pointer tap on the first tick (so we cannot just cancel each time) + // but if the gesture is running and the user adds or subtracts another pointer then it should fail. + !validPointerCount && this.isGestureRunning) { + return { + failed: true + }; + } + + return { + success: validPointerCount + }; + } + +} + +var _default = DiscreteGestureHandler; +exports.default = _default; +//# sourceMappingURL=DiscreteGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map new file mode 100644 index 00000000..a15efc5a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["DiscreteGestureHandler.ts"],"names":["DiscreteGestureHandler","GestureHandler","isDiscrete","shouldEnableGestureOnSetup","shouldFailUnderCustomCriteria","x","y","deltaX","deltaY","maxDeltaX","maxDeltaY","maxDistSq","shouldCancelWhenOutside","isPointInView","Math","abs","transformNativeEvent","center","rect","view","getBoundingClientRect","absoluteX","absoluteY","left","top","isGestureEnabledForEvent","minPointers","maxPointers","_recognizer","pointerLength","validPointerCount","isGestureRunning","failed","success"],"mappings":";;;;;;;AAEA;;AACA;;;;AAHA;;AACA;AAIA,MAAeA,sBAAf,SAA8CC,uBAA9C,CAA6D;AAC7C,MAAVC,UAAU,GAAG;AACf,WAAO,IAAP;AACD;;AAE6B,MAA1BC,0BAA0B,GAAG;AAC/B,WAAO,IAAP;AACD;;AAEDC,EAAAA,6BAA6B,CAC3B;AAAEC,IAAAA,CAAF;AAAKC,IAAAA,CAAL;AAAQC,IAAAA,MAAR;AAAgBC,IAAAA;AAAhB,GAD2B,EAE3B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA,SAAxB;AAAmCC,IAAAA;AAAnC,GAF2B,EAG3B;AACA,QAAIA,uBAAJ,EAA6B;AAC3B,UAAI,CAAC,KAAKC,aAAL,CAAmB;AAAER,QAAAA,CAAF;AAAKC,QAAAA;AAAL,OAAnB,CAAL,EAAmC;AACjC,eAAO,IAAP;AACD;AACF;;AACD,WACE,gCAAoBQ,IAAI,CAACC,GAAL,CAASR,MAAT,CAApB,EAAsCE,SAAtC,KACA,gCAAoBK,IAAI,CAACC,GAAL,CAASP,MAAT,CAApB,EAAsCE,SAAtC,CADA,IAEA,gCACEI,IAAI,CAACC,GAAL,CAASP,MAAM,GAAGA,MAAT,GAAkBD,MAAM,GAAGA,MAApC,CADF,EAEEI,SAFF,CAHF;AAQD;;AAEDK,EAAAA,oBAAoB,CAAC;AAAEC,IAAAA,MAAM,EAAE;AAAEZ,MAAAA,CAAF;AAAKC,MAAAA;AAAL;AAAV,GAAD,EAA4B;AAC9C;AACA,UAAMY,IAAI,GAAG,KAAKC,IAAL,CAAWC,qBAAX,EAAb;AAEA,WAAO;AACLC,MAAAA,SAAS,EAAEhB,CADN;AAELiB,MAAAA,SAAS,EAAEhB,CAFN;AAGLD,MAAAA,CAAC,EAAEA,CAAC,GAAGa,IAAI,CAACK,IAHP;AAILjB,MAAAA,CAAC,EAAEA,CAAC,GAAGY,IAAI,CAACM;AAJP,KAAP;AAMD;;AAEDC,EAAAA,wBAAwB,CACtB;AACEC,IAAAA,WADF;AAEEC,IAAAA,WAFF;AAGElB,IAAAA,SAHF;AAIEC,IAAAA,SAJF;AAKEC,IAAAA,SALF;AAMEC,IAAAA;AANF,GADsB,EAStBgB,WATsB,EAUtB;AAAED,IAAAA,WAAW,EAAEE,aAAf;AAA8BZ,IAAAA,MAA9B;AAAsCV,IAAAA,MAAtC;AAA8CC,IAAAA;AAA9C,GAVsB,EAWtB;AACA,UAAMsB,iBAAiB,GACrBD,aAAa,IAAIH,WAAjB,IAAgCG,aAAa,IAAIF,WADnD;;AAGA,QACE,KAAKvB,6BAAL,CACE,EAAE,GAAGa,MAAL;AAAaV,MAAAA,MAAb;AAAqBC,MAAAA;AAArB,KADF,EAEE;AACEC,MAAAA,SADF;AAEEC,MAAAA,SAFF;AAGEC,MAAAA,SAHF;AAIEC,MAAAA;AAJF,KAFF,KASA;AACA;AACC,KAACkB,iBAAD,IAAsB,KAAKC,gBAZ9B,EAaE;AACA,aAAO;AAAEC,QAAAA,MAAM,EAAE;AAAV,OAAP;AACD;;AAED,WAAO;AAAEC,MAAAA,OAAO,EAAEH;AAAX,KAAP;AACD;;AAzE0D;;eA4E9C9B,sB","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport GestureHandler from './GestureHandler';\nimport { TEST_MAX_IF_NOT_NAN } from './utils';\n\nabstract class DiscreteGestureHandler extends GestureHandler {\n get isDiscrete() {\n return true;\n }\n\n get shouldEnableGestureOnSetup() {\n return true;\n }\n\n shouldFailUnderCustomCriteria(\n { x, y, deltaX, deltaY }: any,\n { maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside }: any\n ) {\n if (shouldCancelWhenOutside) {\n if (!this.isPointInView({ x, y })) {\n return true;\n }\n }\n return (\n TEST_MAX_IF_NOT_NAN(Math.abs(deltaX), maxDeltaX) ||\n TEST_MAX_IF_NOT_NAN(Math.abs(deltaY), maxDeltaY) ||\n TEST_MAX_IF_NOT_NAN(\n Math.abs(deltaY * deltaY + deltaX * deltaX),\n maxDistSq\n )\n );\n }\n\n transformNativeEvent({ center: { x, y } }: any) {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n\n return {\n absoluteX: x,\n absoluteY: y,\n x: x - rect.left,\n y: y - rect.top,\n };\n }\n\n isGestureEnabledForEvent(\n {\n minPointers,\n maxPointers,\n maxDeltaX,\n maxDeltaY,\n maxDistSq,\n shouldCancelWhenOutside,\n }: any,\n _recognizer: any,\n { maxPointers: pointerLength, center, deltaX, deltaY }: any\n ) {\n const validPointerCount =\n pointerLength >= minPointers && pointerLength <= maxPointers;\n\n if (\n this.shouldFailUnderCustomCriteria(\n { ...center, deltaX, deltaY },\n {\n maxDeltaX,\n maxDeltaY,\n maxDistSq,\n shouldCancelWhenOutside,\n }\n ) ||\n // A user probably won't land a multi-pointer tap on the first tick (so we cannot just cancel each time)\n // but if the gesture is running and the user adds or subtracts another pointer then it should fail.\n (!validPointerCount && this.isGestureRunning)\n ) {\n return { failed: true };\n }\n\n return { success: validPointerCount };\n }\n}\n\nexport default DiscreteGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js new file mode 100644 index 00000000..82a4e215 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js @@ -0,0 +1,53 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +var _reactNative = require("react-native"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +class DraggingGestureHandler extends _GestureHandler.default { + get shouldEnableGestureOnSetup() { + return true; + } + + transformNativeEvent({ + deltaX, + deltaY, + velocityX, + velocityY, + center: { + x, + y + } + }) { + // @ts-ignore FIXME(TS) + const rect = this.view.getBoundingClientRect(); + + const ratio = _reactNative.PixelRatio.get(); + + return { + translationX: deltaX - (this.__initialX || 0), + translationY: deltaY - (this.__initialY || 0), + absoluteX: x, + absoluteY: y, + velocityX: velocityX * ratio, + velocityY: velocityY * ratio, + x: x - rect.left, + y: y - rect.top + }; + } + +} + +var _default = DraggingGestureHandler; +exports.default = _default; +//# sourceMappingURL=DraggingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js.map new file mode 100644 index 00000000..f2b17a86 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/DraggingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["DraggingGestureHandler.ts"],"names":["DraggingGestureHandler","GestureHandler","shouldEnableGestureOnSetup","transformNativeEvent","deltaX","deltaY","velocityX","velocityY","center","x","y","rect","view","getBoundingClientRect","ratio","PixelRatio","get","translationX","__initialX","translationY","__initialY","absoluteX","absoluteY","left","top"],"mappings":";;;;;;;AAEA;;AACA;;;;AAHA;;AACA;AAIA,MAAeA,sBAAf,SAA8CC,uBAA9C,CAA6D;AAC7B,MAA1BC,0BAA0B,GAAG;AAC/B,WAAO,IAAP;AACD;;AAEDC,EAAAA,oBAAoB,CAAC;AACnBC,IAAAA,MADmB;AAEnBC,IAAAA,MAFmB;AAGnBC,IAAAA,SAHmB;AAInBC,IAAAA,SAJmB;AAKnBC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL;AALW,GAAD,EAMD;AACjB;AACA,UAAMC,IAAI,GAAG,KAAKC,IAAL,CAAWC,qBAAX,EAAb;;AACA,UAAMC,KAAK,GAAGC,wBAAWC,GAAX,EAAd;;AACA,WAAO;AACLC,MAAAA,YAAY,EAAEb,MAAM,IAAI,KAAKc,UAAL,IAAmB,CAAvB,CADf;AAELC,MAAAA,YAAY,EAAEd,MAAM,IAAI,KAAKe,UAAL,IAAmB,CAAvB,CAFf;AAGLC,MAAAA,SAAS,EAAEZ,CAHN;AAILa,MAAAA,SAAS,EAAEZ,CAJN;AAKLJ,MAAAA,SAAS,EAAEA,SAAS,GAAGQ,KALlB;AAMLP,MAAAA,SAAS,EAAEA,SAAS,GAAGO,KANlB;AAOLL,MAAAA,CAAC,EAAEA,CAAC,GAAGE,IAAI,CAACY,IAPP;AAQLb,MAAAA,CAAC,EAAEA,CAAC,GAAGC,IAAI,CAACa;AARP,KAAP;AAUD;;AAzB0D;;eA4B9CxB,sB","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport GestureHandler, { HammerInputExt } from './GestureHandler';\nimport { PixelRatio } from 'react-native';\n\nabstract class DraggingGestureHandler extends GestureHandler {\n get shouldEnableGestureOnSetup() {\n return true;\n }\n\n transformNativeEvent({\n deltaX,\n deltaY,\n velocityX,\n velocityY,\n center: { x, y },\n }: HammerInputExt) {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n const ratio = PixelRatio.get();\n return {\n translationX: deltaX - (this.__initialX || 0),\n translationY: deltaY - (this.__initialY || 0),\n absoluteX: x,\n absoluteY: y,\n velocityX: velocityX * ratio,\n velocityY: velocityY * ratio,\n x: x - rect.left,\n y: y - rect.top,\n };\n }\n}\n\nexport default DraggingGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js new file mode 100644 index 00000000..01eeb4ee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GesturePropError = void 0; + +class GesturePropError extends Error { + constructor(name, value, expectedType) { + super(`Invalid property \`${name}: ${value}\` expected \`${expectedType}\``); + } + +} + +exports.GesturePropError = GesturePropError; +//# sourceMappingURL=Errors.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js.map new file mode 100644 index 00000000..97a926b4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/Errors.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["Errors.ts"],"names":["GesturePropError","Error","constructor","name","value","expectedType"],"mappings":";;;;;;;AAAO,MAAMA,gBAAN,SAA+BC,KAA/B,CAAqC;AAC1CC,EAAAA,WAAW,CAACC,IAAD,EAAeC,KAAf,EAA+BC,YAA/B,EAAqD;AAC9D,UACG,sBAAqBF,IAAK,KAAIC,KAAM,iBAAgBC,YAAa,IADpE;AAGD;;AALyC","sourcesContent":["export class GesturePropError extends Error {\n constructor(name: string, value: unknown, expectedType: string) {\n super(\n `Invalid property \\`${name}: ${value}\\` expected \\`${expectedType}\\``\n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js new file mode 100644 index 00000000..554f5fd8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js @@ -0,0 +1,170 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _constants = require("./constants"); + +var _Errors = require("./Errors"); + +var _DraggingGestureHandler = _interopRequireDefault(require("./DraggingGestureHandler")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +class FlingGestureHandler extends _DraggingGestureHandler.default { + get name() { + return 'swipe'; + } + + get NativeGestureClass() { + return _hammerjs.default.Swipe; + } + + onGestureActivated(event) { + this.sendEvent({ ...event, + eventType: _hammerjs.default.INPUT_MOVE, + isFinal: false, + isFirst: true + }); + this.isGestureRunning = false; + this.hasGestureFailed = false; + this.sendEvent({ ...event, + eventType: _hammerjs.default.INPUT_END, + isFinal: true + }); + } + + onRawEvent(ev) { + super.onRawEvent(ev); + + if (this.hasGestureFailed) { + return; + } // Hammer doesn't send a `cancel` event for taps. + // Manually fail the event. + + + if (ev.isFinal) { + setTimeout(() => { + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } else if (!this.hasGestureFailed && !this.isGestureRunning) { + // Tap Gesture start event + const gesture = this.hammer.get(this.name); // @ts-ignore FIXME(TS) + + if (gesture.options.enable(gesture, ev)) { + this.onStart(ev); + this.sendEvent(ev); + } + } + } + + getHammerConfig() { + return { + // @ts-ignore FIXME(TS) + pointers: this.config.numberOfPointers, + direction: this.getDirection() + }; + } + + getTargetDirections(direction) { + const directions = []; + + if (direction & _constants.Direction.RIGHT) { + directions.push(_hammerjs.default.DIRECTION_RIGHT); + } + + if (direction & _constants.Direction.LEFT) { + directions.push(_hammerjs.default.DIRECTION_LEFT); + } + + if (direction & _constants.Direction.UP) { + directions.push(_hammerjs.default.DIRECTION_UP); + } + + if (direction & _constants.Direction.DOWN) { + directions.push(_hammerjs.default.DIRECTION_DOWN); + } // const hammerDirection = directions.reduce((a, b) => a | b, 0); + + + return directions; + } + + getDirection() { + // @ts-ignore FIXME(TS) + const { + direction + } = this.getConfig(); + let directions = []; + + if (direction & _constants.Direction.RIGHT) { + directions.push(_hammerjs.default.DIRECTION_HORIZONTAL); + } + + if (direction & _constants.Direction.LEFT) { + directions.push(_hammerjs.default.DIRECTION_HORIZONTAL); + } + + if (direction & _constants.Direction.UP) { + directions.push(_hammerjs.default.DIRECTION_VERTICAL); + } + + if (direction & _constants.Direction.DOWN) { + directions.push(_hammerjs.default.DIRECTION_VERTICAL); + } + + directions = [...new Set(directions)]; + if (directions.length === 0) return _hammerjs.default.DIRECTION_NONE; + if (directions.length === 1) return directions[0]; + return _hammerjs.default.DIRECTION_ALL; + } + + isGestureEnabledForEvent({ + numberOfPointers + }, _recognizer, { + maxPointers: pointerLength + }) { + const validPointerCount = pointerLength === numberOfPointers; + + if (!validPointerCount && this.isGestureRunning) { + return { + failed: true + }; + } + + return { + success: validPointerCount + }; + } + + updateGestureConfig({ + numberOfPointers = 1, + direction, + ...props + }) { + if ((0, _utils.isnan)(direction) || typeof direction !== 'number') { + throw new _Errors.GesturePropError('direction', direction, 'number'); + } + + return super.updateGestureConfig({ + numberOfPointers, + direction, + ...props + }); + } + +} + +var _default = FlingGestureHandler; +exports.default = _default; +//# sourceMappingURL=FlingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js.map new file mode 100644 index 00000000..226f1149 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/FlingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["FlingGestureHandler.ts"],"names":["FlingGestureHandler","DraggingGestureHandler","name","NativeGestureClass","Hammer","Swipe","onGestureActivated","event","sendEvent","eventType","INPUT_MOVE","isFinal","isFirst","isGestureRunning","hasGestureFailed","INPUT_END","onRawEvent","ev","setTimeout","cancelEvent","gesture","hammer","get","options","enable","onStart","getHammerConfig","pointers","config","numberOfPointers","direction","getDirection","getTargetDirections","directions","Direction","RIGHT","push","DIRECTION_RIGHT","LEFT","DIRECTION_LEFT","UP","DIRECTION_UP","DOWN","DIRECTION_DOWN","getConfig","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","Set","length","DIRECTION_NONE","DIRECTION_ALL","isGestureEnabledForEvent","_recognizer","maxPointers","pointerLength","validPointerCount","failed","success","updateGestureConfig","props","GesturePropError"],"mappings":"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","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\n\nimport { Direction } from './constants';\nimport { GesturePropError } from './Errors';\nimport DraggingGestureHandler from './DraggingGestureHandler';\nimport { isnan } from './utils';\nimport { HammerInputExt } from './GestureHandler';\n\nclass FlingGestureHandler extends DraggingGestureHandler {\n get name() {\n return 'swipe';\n }\n\n get NativeGestureClass() {\n return Hammer.Swipe;\n }\n\n onGestureActivated(event: HammerInputExt) {\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_MOVE,\n isFinal: false,\n isFirst: true,\n });\n this.isGestureRunning = false;\n this.hasGestureFailed = false;\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_END,\n isFinal: true,\n });\n }\n\n onRawEvent(ev: HammerInputExt) {\n super.onRawEvent(ev);\n if (this.hasGestureFailed) {\n return;\n }\n // Hammer doesn't send a `cancel` event for taps.\n // Manually fail the event.\n if (ev.isFinal) {\n setTimeout(() => {\n if (this.isGestureRunning) {\n this.cancelEvent(ev);\n }\n });\n } else if (!this.hasGestureFailed && !this.isGestureRunning) {\n // Tap Gesture start event\n const gesture = this.hammer!.get(this.name);\n // @ts-ignore FIXME(TS)\n if (gesture.options.enable(gesture, ev)) {\n this.onStart(ev);\n this.sendEvent(ev);\n }\n }\n }\n\n getHammerConfig() {\n return {\n // @ts-ignore FIXME(TS)\n pointers: this.config.numberOfPointers,\n direction: this.getDirection(),\n };\n }\n\n getTargetDirections(direction: number) {\n const directions = [];\n if (direction & Direction.RIGHT) {\n directions.push(Hammer.DIRECTION_RIGHT);\n }\n if (direction & Direction.LEFT) {\n directions.push(Hammer.DIRECTION_LEFT);\n }\n if (direction & Direction.UP) {\n directions.push(Hammer.DIRECTION_UP);\n }\n if (direction & Direction.DOWN) {\n directions.push(Hammer.DIRECTION_DOWN);\n }\n // const hammerDirection = directions.reduce((a, b) => a | b, 0);\n return directions;\n }\n\n getDirection() {\n // @ts-ignore FIXME(TS)\n const { direction } = this.getConfig();\n\n let directions = [];\n if (direction & Direction.RIGHT) {\n directions.push(Hammer.DIRECTION_HORIZONTAL);\n }\n if (direction & Direction.LEFT) {\n directions.push(Hammer.DIRECTION_HORIZONTAL);\n }\n if (direction & Direction.UP) {\n directions.push(Hammer.DIRECTION_VERTICAL);\n }\n if (direction & Direction.DOWN) {\n directions.push(Hammer.DIRECTION_VERTICAL);\n }\n directions = [...new Set(directions)];\n\n if (directions.length === 0) return Hammer.DIRECTION_NONE;\n if (directions.length === 1) return directions[0];\n return Hammer.DIRECTION_ALL;\n }\n\n isGestureEnabledForEvent(\n { numberOfPointers }: any,\n _recognizer: any,\n { maxPointers: pointerLength }: any\n ) {\n const validPointerCount = pointerLength === numberOfPointers;\n if (!validPointerCount && this.isGestureRunning) {\n return { failed: true };\n }\n return { success: validPointerCount };\n }\n\n updateGestureConfig({ numberOfPointers = 1, direction, ...props }: any) {\n if (isnan(direction) || typeof direction !== 'number') {\n throw new GesturePropError('direction', direction, 'number');\n }\n return super.updateGestureConfig({\n numberOfPointers,\n direction,\n ...props,\n });\n }\n}\n\nexport default FlingGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js new file mode 100644 index 00000000..39c889dc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js @@ -0,0 +1,577 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _reactNative = require("react-native"); + +var _State = require("../State"); + +var _constants = require("./constants"); + +var NodeManager = _interopRequireWildcard(require("./NodeManager")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +let gestureInstances = 0; + +class GestureHandler { + get id() { + return `${this.name}${this.gestureInstance}`; + } // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it + // here to use instanceof would cause import cycle + + + get isNative() { + return false; + } + + get isDiscrete() { + return false; + } + + get shouldEnableGestureOnSetup() { + throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup'); + } + + constructor() { + _defineProperty(this, "handlerTag", void 0); + + _defineProperty(this, "isGestureRunning", false); + + _defineProperty(this, "view", null); + + _defineProperty(this, "hasCustomActivationCriteria", void 0); + + _defineProperty(this, "hasGestureFailed", false); + + _defineProperty(this, "hammer", null); + + _defineProperty(this, "initialRotation", null); + + _defineProperty(this, "__initialX", void 0); + + _defineProperty(this, "__initialY", void 0); + + _defineProperty(this, "config", {}); + + _defineProperty(this, "previousState", _State.State.UNDETERMINED); + + _defineProperty(this, "pendingGestures", {}); + + _defineProperty(this, "oldState", _State.State.UNDETERMINED); + + _defineProperty(this, "lastSentState", null); + + _defineProperty(this, "gestureInstance", void 0); + + _defineProperty(this, "_stillWaiting", void 0); + + _defineProperty(this, "propsRef", void 0); + + _defineProperty(this, "ref", void 0); + + _defineProperty(this, "clearSelfAsPending", () => { + if (Array.isArray(this.config.waitFor)) { + for (const gesture of this.config.waitFor) { + gesture.removePendingGesture(this.id); + } + } + }); + + _defineProperty(this, "destroy", () => { + this.clearSelfAsPending(); + + if (this.hammer) { + this.hammer.stop(false); + this.hammer.destroy(); + } + + this.hammer = null; + }); + + _defineProperty(this, "isPointInView", ({ + x, + y + }) => { + // @ts-ignore FIXME(TS) + const rect = this.view.getBoundingClientRect(); + const pointerInside = x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + return pointerInside; + }); + + _defineProperty(this, "sendEvent", nativeEvent => { + const { + onGestureHandlerEvent, + onGestureHandlerStateChange + } = this.propsRef.current; + const event = this.transformEventData(nativeEvent); + invokeNullableMethod(onGestureHandlerEvent, event); + + if (this.lastSentState !== event.nativeEvent.state) { + this.lastSentState = event.nativeEvent.state; + invokeNullableMethod(onGestureHandlerStateChange, event); + } + }); + + _defineProperty(this, "sync", () => { + const gesture = this.hammer.get(this.name); + if (!gesture) return; + + const enable = (recognizer, inputData) => { + if (!this.config.enabled) { + this.isGestureRunning = false; + this.hasGestureFailed = false; + return false; + } // Prevent events before the system is ready. + + + if (!inputData || !recognizer.options || typeof inputData.maxPointers === 'undefined') { + return this.shouldEnableGestureOnSetup; + } + + if (this.hasGestureFailed) { + return false; + } + + if (!this.isDiscrete) { + if (this.isGestureRunning) { + return true; + } // The built-in hammer.js "waitFor" doesn't work across multiple views. + // Only process if there are views to wait for. + + + this._stillWaiting = this._getPendingGestures(); // This gesture should continue waiting. + + if (this._stillWaiting.length) { + // Check to see if one of the gestures you're waiting for has started. + // If it has then the gesture should fail. + for (const gesture of this._stillWaiting) { + // When the target gesture has started, this gesture must force fail. + if (!gesture.isDiscrete && gesture.isGestureRunning) { + this.hasGestureFailed = true; + this.isGestureRunning = false; + return false; + } + } // This gesture shouldn't start until the others have finished. + + + return false; + } + } // Use default behaviour + + + if (!this.hasCustomActivationCriteria) { + return true; + } + + const deltaRotation = this.initialRotation == null ? 0 : inputData.rotation - this.initialRotation; // @ts-ignore FIXME(TS) + + const { + success, + failed + } = this.isGestureEnabledForEvent(this.getConfig(), recognizer, { ...inputData, + deltaRotation + }); + + if (failed) { + this.simulateCancelEvent(inputData); + this.hasGestureFailed = true; + } + + return success; + }; + + const params = this.getHammerConfig(); // @ts-ignore FIXME(TS) + + gesture.set({ ...params, + enable + }); + }); + + this.gestureInstance = gestureInstances++; + this.hasCustomActivationCriteria = false; + } + + getConfig() { + return this.config; + } + + onWaitingEnded(_gesture) {} + + removePendingGesture(id) { + delete this.pendingGestures[id]; + } + + addPendingGesture(gesture) { + this.pendingGestures[gesture.id] = gesture; + } + + isGestureEnabledForEvent(_config, _recognizer, _event) { + return { + success: true + }; + } + + get NativeGestureClass() { + throw new Error('Must override GestureHandler.NativeGestureClass'); + } + + updateHasCustomActivationCriteria(_config) { + return true; + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + this.clearSelfAsPending(); + this.config = this.ensureConfig({ + enabled, + ...props + }); + this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(this.config); + + if (Array.isArray(this.config.waitFor)) { + for (const gesture of this.config.waitFor) { + gesture.addPendingGesture(this); + } + } + + if (this.hammer) { + this.sync(); + } + + return this.config; + } + + getState(type) { + // @ts-ignore TODO(TS) check if this is needed + if (type == 0) { + return 0; + } + + return _constants.EventMap[type]; + } + + transformEventData(event) { + const { + eventType, + maxPointers: numberOfPointers + } = event; // const direction = DirectionMap[ev.direction]; + + const changedTouch = event.changedPointers[0]; + const pointerInside = this.isPointInView({ + x: changedTouch.clientX, + y: changedTouch.clientY + }); // TODO(TS) Remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50966 is merged. + + const state = this.getState(eventType); + + if (state !== this.previousState) { + this.oldState = this.previousState; + this.previousState = state; + } + + return { + nativeEvent: { + numberOfPointers, + state, + pointerInside, + ...this.transformNativeEvent(event), + // onHandlerStateChange only + handlerTag: this.handlerTag, + target: this.ref, + // send oldState only when the state was changed, or is different than ACTIVE + // GestureDetector relies on the presence of `oldState` to differentiate between + // update events and state change events + oldState: state !== this.previousState || state != 4 ? this.oldState : undefined + }, + timeStamp: Date.now() + }; + } + + transformNativeEvent(_event) { + return {}; + } + + cancelPendingGestures(event) { + for (const gesture of Object.values(this.pendingGestures)) { + if (gesture && gesture.isGestureRunning) { + gesture.hasGestureFailed = true; + gesture.cancelEvent(event); + } + } + } + + notifyPendingGestures() { + for (const gesture of Object.values(this.pendingGestures)) { + if (gesture) { + gesture.onWaitingEnded(this); + } + } + } // FIXME event is undefined in runtime when firstly invoked (see Draggable example), check other functions taking event as input + + + onGestureEnded(event) { + this.isGestureRunning = false; + this.cancelPendingGestures(event); + } + + forceInvalidate(event) { + if (this.isGestureRunning) { + this.hasGestureFailed = true; + this.cancelEvent(event); + } + } + + cancelEvent(event) { + this.notifyPendingGestures(); + this.sendEvent({ ...event, + eventType: _hammerjs.default.INPUT_CANCEL, + isFinal: true + }); + this.onGestureEnded(event); + } + + onRawEvent({ + isFirst + }) { + if (isFirst) { + this.hasGestureFailed = false; + } + } + + shouldUseTouchEvents(config) { + var _config$simultaneousH, _config$simultaneousH2; + + return (_config$simultaneousH = (_config$simultaneousH2 = config.simultaneousHandlers) === null || _config$simultaneousH2 === void 0 ? void 0 : _config$simultaneousH2.some(handler => handler.isNative)) !== null && _config$simultaneousH !== void 0 ? _config$simultaneousH : false; + } + + setView(ref, propsRef) { + if (ref == null) { + this.destroy(); + this.view = null; + return; + } // @ts-ignore window doesn't exist on global type as we don't want to use Node types + + + const SUPPORTS_TOUCH = ('ontouchstart' in window); + this.propsRef = propsRef; + this.ref = ref; + this.view = (0, _reactNative.findNodeHandle)(ref); // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops + // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous + // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible. + + this.hammer = SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config) ? new _hammerjs.default.Manager(this.view, { + inputClass: _hammerjs.default.TouchInput + }) : new _hammerjs.default.Manager(this.view); + this.oldState = _State.State.UNDETERMINED; + this.previousState = _State.State.UNDETERMINED; + this.lastSentState = null; + const { + NativeGestureClass + } = this; // @ts-ignore TODO(TS) + + const gesture = new NativeGestureClass(this.getHammerConfig()); + this.hammer.add(gesture); + this.hammer.on('hammer.input', ev => { + if (!this.config.enabled) { + this.hasGestureFailed = false; + this.isGestureRunning = false; + return; + } + + this.onRawEvent(ev); // TODO: Bacon: Check against something other than null + // The isFirst value is not called when the first rotation is calculated. + + if (this.initialRotation === null && ev.rotation !== 0) { + this.initialRotation = ev.rotation; + } + + if (ev.isFinal) { + // in favor of a willFail otherwise the last frame of the gesture will be captured. + setTimeout(() => { + this.initialRotation = null; + this.hasGestureFailed = false; + }); + } + }); + this.setupEvents(); + this.sync(); + } + + setupEvents() { + // TODO(TS) Hammer types aren't exactly that what we get in runtime + if (!this.isDiscrete) { + this.hammer.on(`${this.name}start`, event => this.onStart(event)); + this.hammer.on(`${this.name}end ${this.name}cancel`, event => { + this.onGestureEnded(event); + }); + } + + this.hammer.on(this.name, ev => this.onGestureActivated(ev)); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged + } + + onStart({ + deltaX, + deltaY, + rotation + }) { + // Reset the state for the next gesture + this.oldState = _State.State.UNDETERMINED; + this.previousState = _State.State.UNDETERMINED; + this.lastSentState = null; + this.isGestureRunning = true; + this.__initialX = deltaX; + this.__initialY = deltaY; + this.initialRotation = rotation; + } + + onGestureActivated(ev) { + this.sendEvent(ev); + } + + onSuccess() {} + + _getPendingGestures() { + if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) { + // Get the list of gestures that this gesture is still waiting for. + // Use `=== false` in case a ref that isn't a gesture handler is used. + const stillWaiting = this.config.waitFor.filter(({ + hasGestureFailed + }) => hasGestureFailed === false); + return stillWaiting; + } + + return []; + } + + getHammerConfig() { + const pointers = this.config.minPointers === this.config.maxPointers ? this.config.minPointers : 0; + return { + pointers + }; + } + + simulateCancelEvent(_inputData) {} // Validate the props + + + ensureConfig(config) { + const props = { ...config + }; // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined) + + if ('minDist' in config) { + props.minDist = config.minDist; + props.minDistSq = props.minDist * props.minDist; + } + + if ('minVelocity' in config) { + props.minVelocity = config.minVelocity; + props.minVelocitySq = props.minVelocity * props.minVelocity; + } + + if ('maxDist' in config) { + props.maxDist = config.maxDist; + props.maxDistSq = config.maxDist * config.maxDist; + } + + if ('waitFor' in config) { + props.waitFor = asArray(config.waitFor).map(({ + handlerTag + }) => NodeManager.getHandler(handlerTag)).filter(v => v); + } else { + props.waitFor = null; + } + + if ('simultaneousHandlers' in config) { + const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config); + props.simultaneousHandlers = asArray(config.simultaneousHandlers).map(handler => { + if (typeof handler === 'number') { + return NodeManager.getHandler(handler); + } else { + return NodeManager.getHandler(handler.handlerTag); + } + }).filter(v => v); + + if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) { + requestAnimationFrame(() => { + // if the undelying event API needs to be changed, we need to unmount and mount + // the hammer instance again. + this.destroy(); + this.setView(this.ref, this.propsRef); + }); + } + } else { + props.simultaneousHandlers = null; + } + + const configProps = ['minPointers', 'maxPointers', 'minDist', 'maxDist', 'maxDistSq', 'minVelocitySq', 'minDistSq', 'minVelocity', 'failOffsetXStart', 'failOffsetYStart', 'failOffsetXEnd', 'failOffsetYEnd', 'activeOffsetXStart', 'activeOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd']; + configProps.forEach(prop => { + if (typeof props[prop] === 'undefined') { + props[prop] = Number.NaN; + } + }); + return props; // TODO(TS) how to convince TS that props are filled? + } + +} // TODO(TS) investigate this method +// Used for sending data to a callback or AnimatedEvent + + +function invokeNullableMethod(method, event) { + if (method) { + if (typeof method === 'function') { + method(event); + } else { + // For use with reanimated's AnimatedEvent + if ('__getHandler' in method && typeof method.__getHandler === 'function') { + const handler = method.__getHandler(); + + invokeNullableMethod(handler, event); + } else { + if ('__nodeConfig' in method) { + const { + argMapping + } = method.__nodeConfig; + + if (Array.isArray(argMapping)) { + for (const [index, [key, value]] of argMapping.entries()) { + if (key in event.nativeEvent) { + // @ts-ignore fix method type + const nativeValue = event.nativeEvent[key]; + + if (value && value.setValue) { + // Reanimated API + value.setValue(nativeValue); + } else { + // RN Animated API + method.__nodeConfig.argMapping[index] = [key, nativeValue]; + } + } + } + } + } + } + } + } +} + +function asArray(value) { + // TODO(TS) use config.waitFor type + return value == null ? [] : Array.isArray(value) ? value : [value]; +} + +var _default = GestureHandler; +exports.default = _default; +//# sourceMappingURL=GestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js.map new file mode 100644 index 00000000..024d5552 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/GestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandler.ts"],"names":["gestureInstances","GestureHandler","id","name","gestureInstance","isNative","isDiscrete","shouldEnableGestureOnSetup","Error","constructor","State","UNDETERMINED","Array","isArray","config","waitFor","gesture","removePendingGesture","clearSelfAsPending","hammer","stop","destroy","x","y","rect","view","getBoundingClientRect","pointerInside","left","right","top","bottom","nativeEvent","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","event","transformEventData","invokeNullableMethod","lastSentState","state","get","enable","recognizer","inputData","enabled","isGestureRunning","hasGestureFailed","options","maxPointers","_stillWaiting","_getPendingGestures","length","hasCustomActivationCriteria","deltaRotation","initialRotation","rotation","success","failed","isGestureEnabledForEvent","getConfig","simulateCancelEvent","params","getHammerConfig","set","onWaitingEnded","_gesture","pendingGestures","addPendingGesture","_config","_recognizer","_event","NativeGestureClass","updateHasCustomActivationCriteria","updateGestureConfig","props","ensureConfig","sync","getState","type","EventMap","eventType","numberOfPointers","changedTouch","changedPointers","isPointInView","clientX","clientY","previousState","oldState","transformNativeEvent","handlerTag","target","ref","undefined","timeStamp","Date","now","cancelPendingGestures","Object","values","cancelEvent","notifyPendingGestures","onGestureEnded","forceInvalidate","sendEvent","Hammer","INPUT_CANCEL","isFinal","onRawEvent","isFirst","shouldUseTouchEvents","simultaneousHandlers","some","handler","setView","SUPPORTS_TOUCH","window","Manager","inputClass","TouchInput","add","on","ev","setTimeout","setupEvents","onStart","onGestureActivated","deltaX","deltaY","__initialX","__initialY","onSuccess","stillWaiting","filter","pointers","minPointers","_inputData","minDist","minDistSq","minVelocity","minVelocitySq","maxDist","maxDistSq","asArray","map","NodeManager","getHandler","v","requestAnimationFrame","configProps","forEach","prop","Number","NaN","method","__getHandler","argMapping","__nodeConfig","index","key","value","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\nimport { findNodeHandle } from 'react-native';\n\nimport { State } from '../State';\nimport { EventMap } from './constants';\nimport * as NodeManager from './NodeManager';\n\n// TODO(TS) Replace with HammerInput if https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438/files is merged\nexport type HammerInputExt = Omit;\n\nexport type Config = Partial<{\n enabled: boolean;\n minPointers: number;\n maxPointers: number;\n minDist: number;\n minDistSq: number;\n minVelocity: number;\n minVelocitySq: number;\n maxDist: number;\n maxDistSq: number;\n failOffsetXStart: number;\n failOffsetYStart: number;\n failOffsetXEnd: number;\n failOffsetYEnd: number;\n activeOffsetXStart: number;\n activeOffsetXEnd: number;\n activeOffsetYStart: number;\n activeOffsetYEnd: number;\n waitFor: any[] | null;\n simultaneousHandlers: any[] | null;\n}>;\n\ntype NativeEvent = ReturnType;\n\nlet gestureInstances = 0;\n\nabstract class GestureHandler {\n public handlerTag: any;\n public isGestureRunning = false;\n public view: number | null = null;\n protected hasCustomActivationCriteria: boolean;\n protected hasGestureFailed = false;\n protected hammer: HammerManager | null = null;\n protected initialRotation: number | null = null;\n protected __initialX: any;\n protected __initialY: any;\n protected config: Config = {};\n protected previousState: State = State.UNDETERMINED;\n private pendingGestures: Record = {};\n private oldState: State = State.UNDETERMINED;\n private lastSentState: State | null = null;\n private gestureInstance: number;\n private _stillWaiting: any;\n private propsRef: any;\n private ref: any;\n\n abstract get name(): string;\n\n get id() {\n return `${this.name}${this.gestureInstance}`;\n }\n\n // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it\n // here to use instanceof would cause import cycle\n get isNative() {\n return false;\n }\n\n get isDiscrete() {\n return false;\n }\n\n get shouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n constructor() {\n this.gestureInstance = gestureInstances++;\n this.hasCustomActivationCriteria = false;\n }\n\n getConfig() {\n return this.config;\n }\n\n onWaitingEnded(_gesture: this) {}\n\n removePendingGesture(id: string) {\n delete this.pendingGestures[id];\n }\n\n addPendingGesture(gesture: this) {\n this.pendingGestures[gesture.id] = gesture;\n }\n\n isGestureEnabledForEvent(\n _config: any,\n _recognizer: any,\n _event: any\n ): { failed?: boolean; success?: boolean } {\n return { success: true };\n }\n\n get NativeGestureClass(): RecognizerStatic {\n throw new Error('Must override GestureHandler.NativeGestureClass');\n }\n\n updateHasCustomActivationCriteria(_config: Config) {\n return true;\n }\n\n clearSelfAsPending = () => {\n if (Array.isArray(this.config.waitFor)) {\n for (const gesture of this.config.waitFor) {\n gesture.removePendingGesture(this.id);\n }\n }\n };\n\n updateGestureConfig({ enabled = true, ...props }) {\n this.clearSelfAsPending();\n\n this.config = this.ensureConfig({ enabled, ...props });\n this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(\n this.config\n );\n if (Array.isArray(this.config.waitFor)) {\n for (const gesture of this.config.waitFor) {\n gesture.addPendingGesture(this);\n }\n }\n\n if (this.hammer) {\n this.sync();\n }\n return this.config;\n }\n\n destroy = () => {\n this.clearSelfAsPending();\n\n if (this.hammer) {\n this.hammer.stop(false);\n this.hammer.destroy();\n }\n this.hammer = null;\n };\n\n isPointInView = ({ x, y }: { x: number; y: number }) => {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n const pointerInside =\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n return pointerInside;\n };\n\n getState(type: keyof typeof EventMap): State {\n // @ts-ignore TODO(TS) check if this is needed\n if (type == 0) {\n return 0;\n }\n return EventMap[type];\n }\n\n transformEventData(event: HammerInputExt) {\n const { eventType, maxPointers: numberOfPointers } = event;\n // const direction = DirectionMap[ev.direction];\n const changedTouch = event.changedPointers[0];\n const pointerInside = this.isPointInView({\n x: changedTouch.clientX,\n y: changedTouch.clientY,\n });\n\n // TODO(TS) Remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50966 is merged.\n const state = this.getState(eventType as 1 | 2 | 4 | 8);\n if (state !== this.previousState) {\n this.oldState = this.previousState;\n this.previousState = state;\n }\n\n return {\n nativeEvent: {\n numberOfPointers,\n state,\n pointerInside,\n ...this.transformNativeEvent(event),\n // onHandlerStateChange only\n handlerTag: this.handlerTag,\n target: this.ref,\n // send oldState only when the state was changed, or is different than ACTIVE\n // GestureDetector relies on the presence of `oldState` to differentiate between\n // update events and state change events\n oldState:\n state !== this.previousState || state != 4\n ? this.oldState\n : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n transformNativeEvent(_event: HammerInputExt) {\n return {};\n }\n\n sendEvent = (nativeEvent: HammerInputExt) => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange } =\n this.propsRef.current;\n\n const event = this.transformEventData(nativeEvent);\n\n invokeNullableMethod(onGestureHandlerEvent, event);\n if (this.lastSentState !== event.nativeEvent.state) {\n this.lastSentState = event.nativeEvent.state as State;\n invokeNullableMethod(onGestureHandlerStateChange, event);\n }\n };\n\n cancelPendingGestures(event: HammerInputExt) {\n for (const gesture of Object.values(this.pendingGestures)) {\n if (gesture && gesture.isGestureRunning) {\n gesture.hasGestureFailed = true;\n gesture.cancelEvent(event);\n }\n }\n }\n\n notifyPendingGestures() {\n for (const gesture of Object.values(this.pendingGestures)) {\n if (gesture) {\n gesture.onWaitingEnded(this);\n }\n }\n }\n\n // FIXME event is undefined in runtime when firstly invoked (see Draggable example), check other functions taking event as input\n onGestureEnded(event: HammerInputExt) {\n this.isGestureRunning = false;\n this.cancelPendingGestures(event);\n }\n\n forceInvalidate(event: HammerInputExt) {\n if (this.isGestureRunning) {\n this.hasGestureFailed = true;\n this.cancelEvent(event);\n }\n }\n\n cancelEvent(event: HammerInputExt) {\n this.notifyPendingGestures();\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_CANCEL,\n isFinal: true,\n });\n this.onGestureEnded(event);\n }\n\n onRawEvent({ isFirst }: HammerInputExt) {\n if (isFirst) {\n this.hasGestureFailed = false;\n }\n }\n\n shouldUseTouchEvents(config: Config) {\n return (\n config.simultaneousHandlers?.some((handler) => handler.isNative) ?? false\n );\n }\n\n setView(ref: Parameters['0'], propsRef: any) {\n if (ref == null) {\n this.destroy();\n this.view = null;\n return;\n }\n\n // @ts-ignore window doesn't exist on global type as we don't want to use Node types\n const SUPPORTS_TOUCH = 'ontouchstart' in window;\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.view = findNodeHandle(ref);\n\n // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops\n // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous\n // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible.\n this.hammer =\n SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config)\n ? new Hammer.Manager(this.view as any, {\n inputClass: Hammer.TouchInput,\n })\n : new Hammer.Manager(this.view as any);\n\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n\n const { NativeGestureClass } = this;\n // @ts-ignore TODO(TS)\n const gesture = new NativeGestureClass(this.getHammerConfig());\n this.hammer.add(gesture);\n\n this.hammer.on('hammer.input', (ev: HammerInput) => {\n if (!this.config.enabled) {\n this.hasGestureFailed = false;\n this.isGestureRunning = false;\n return;\n }\n\n this.onRawEvent(ev as unknown as HammerInputExt);\n\n // TODO: Bacon: Check against something other than null\n // The isFirst value is not called when the first rotation is calculated.\n if (this.initialRotation === null && ev.rotation !== 0) {\n this.initialRotation = ev.rotation;\n }\n if (ev.isFinal) {\n // in favor of a willFail otherwise the last frame of the gesture will be captured.\n setTimeout(() => {\n this.initialRotation = null;\n this.hasGestureFailed = false;\n });\n }\n });\n\n this.setupEvents();\n this.sync();\n }\n\n setupEvents() {\n // TODO(TS) Hammer types aren't exactly that what we get in runtime\n if (!this.isDiscrete) {\n this.hammer!.on(`${this.name}start`, (event: HammerInput) =>\n this.onStart(event as unknown as HammerInputExt)\n );\n this.hammer!.on(\n `${this.name}end ${this.name}cancel`,\n (event: HammerInput) => {\n this.onGestureEnded(event as unknown as HammerInputExt);\n }\n );\n }\n this.hammer!.on(this.name, (ev: HammerInput) =>\n this.onGestureActivated(ev as unknown as HammerInputExt)\n ); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged\n }\n\n onStart({ deltaX, deltaY, rotation }: HammerInputExt) {\n // Reset the state for the next gesture\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n\n this.isGestureRunning = true;\n this.__initialX = deltaX;\n this.__initialY = deltaY;\n this.initialRotation = rotation;\n }\n\n onGestureActivated(ev: HammerInputExt) {\n this.sendEvent(ev);\n }\n\n onSuccess() {}\n\n _getPendingGestures() {\n if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) {\n // Get the list of gestures that this gesture is still waiting for.\n // Use `=== false` in case a ref that isn't a gesture handler is used.\n const stillWaiting = this.config.waitFor.filter(\n ({ hasGestureFailed }) => hasGestureFailed === false\n );\n return stillWaiting;\n }\n return [];\n }\n\n getHammerConfig() {\n const pointers =\n this.config.minPointers === this.config.maxPointers\n ? this.config.minPointers\n : 0;\n return {\n pointers,\n };\n }\n\n sync = () => {\n const gesture = this.hammer!.get(this.name);\n if (!gesture) return;\n\n const enable = (recognizer: any, inputData: any) => {\n if (!this.config.enabled) {\n this.isGestureRunning = false;\n this.hasGestureFailed = false;\n return false;\n }\n\n // Prevent events before the system is ready.\n if (\n !inputData ||\n !recognizer.options ||\n typeof inputData.maxPointers === 'undefined'\n ) {\n return this.shouldEnableGestureOnSetup;\n }\n\n if (this.hasGestureFailed) {\n return false;\n }\n\n if (!this.isDiscrete) {\n if (this.isGestureRunning) {\n return true;\n }\n // The built-in hammer.js \"waitFor\" doesn't work across multiple views.\n // Only process if there are views to wait for.\n this._stillWaiting = this._getPendingGestures();\n // This gesture should continue waiting.\n if (this._stillWaiting.length) {\n // Check to see if one of the gestures you're waiting for has started.\n // If it has then the gesture should fail.\n for (const gesture of this._stillWaiting) {\n // When the target gesture has started, this gesture must force fail.\n if (!gesture.isDiscrete && gesture.isGestureRunning) {\n this.hasGestureFailed = true;\n this.isGestureRunning = false;\n return false;\n }\n }\n // This gesture shouldn't start until the others have finished.\n return false;\n }\n }\n\n // Use default behaviour\n if (!this.hasCustomActivationCriteria) {\n return true;\n }\n\n const deltaRotation =\n this.initialRotation == null\n ? 0\n : inputData.rotation - this.initialRotation;\n // @ts-ignore FIXME(TS)\n const { success, failed } = this.isGestureEnabledForEvent(\n this.getConfig(),\n recognizer,\n {\n ...inputData,\n deltaRotation,\n }\n );\n\n if (failed) {\n this.simulateCancelEvent(inputData);\n this.hasGestureFailed = true;\n }\n return success;\n };\n\n const params = this.getHammerConfig();\n // @ts-ignore FIXME(TS)\n gesture.set({ ...params, enable });\n };\n\n simulateCancelEvent(_inputData: any) {}\n\n // Validate the props\n ensureConfig(config: Config): Required {\n const props = { ...config };\n\n // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)\n if ('minDist' in config) {\n props.minDist = config.minDist;\n props.minDistSq = props.minDist! * props.minDist!;\n }\n if ('minVelocity' in config) {\n props.minVelocity = config.minVelocity;\n props.minVelocitySq = props.minVelocity! * props.minVelocity!;\n }\n if ('maxDist' in config) {\n props.maxDist = config.maxDist;\n props.maxDistSq = config.maxDist! * config.maxDist!;\n }\n if ('waitFor' in config) {\n props.waitFor = asArray(config.waitFor)\n .map(({ handlerTag }: { handlerTag: number }) =>\n NodeManager.getHandler(handlerTag)\n )\n .filter((v) => v);\n } else {\n props.waitFor = null;\n }\n if ('simultaneousHandlers' in config) {\n const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config);\n props.simultaneousHandlers = asArray(config.simultaneousHandlers)\n .map((handler: number | GestureHandler) => {\n if (typeof handler === 'number') {\n return NodeManager.getHandler(handler);\n } else {\n return NodeManager.getHandler(handler.handlerTag);\n }\n })\n .filter((v) => v);\n\n if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {\n requestAnimationFrame(() => {\n // if the undelying event API needs to be changed, we need to unmount and mount\n // the hammer instance again.\n this.destroy();\n this.setView(this.ref, this.propsRef);\n });\n }\n } else {\n props.simultaneousHandlers = null;\n }\n\n const configProps = [\n 'minPointers',\n 'maxPointers',\n 'minDist',\n 'maxDist',\n 'maxDistSq',\n 'minVelocitySq',\n 'minDistSq',\n 'minVelocity',\n 'failOffsetXStart',\n 'failOffsetYStart',\n 'failOffsetXEnd',\n 'failOffsetYEnd',\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n ] as const;\n configProps.forEach((prop: typeof configProps[number]) => {\n if (typeof props[prop] === 'undefined') {\n props[prop] = Number.NaN;\n }\n });\n return props as Required; // TODO(TS) how to convince TS that props are filled?\n }\n}\n\n// TODO(TS) investigate this method\n// Used for sending data to a callback or AnimatedEvent\nfunction invokeNullableMethod(\n method:\n | ((event: NativeEvent) => void)\n | { __getHandler: () => (event: NativeEvent) => void }\n | { __nodeConfig: { argMapping: any } },\n event: NativeEvent\n) {\n if (method) {\n if (typeof method === 'function') {\n method(event);\n } else {\n // For use with reanimated's AnimatedEvent\n if (\n '__getHandler' in method &&\n typeof method.__getHandler === 'function'\n ) {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n } else {\n if ('__nodeConfig' in method) {\n const { argMapping } = method.__nodeConfig;\n if (Array.isArray(argMapping)) {\n for (const [index, [key, value]] of argMapping.entries()) {\n if (key in event.nativeEvent) {\n // @ts-ignore fix method type\n const nativeValue = event.nativeEvent[key];\n if (value && value.setValue) {\n // Reanimated API\n value.setValue(nativeValue);\n } else {\n // RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction asArray(value: T | T[]) {\n // TODO(TS) use config.waitFor type\n return value == null ? [] : Array.isArray(value) ? value : [value];\n}\n\nexport default GestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js new file mode 100644 index 00000000..af2ea46c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js @@ -0,0 +1,54 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _GestureHandler = _interopRequireDefault(require("./GestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The base class for **Rotation** and **Pinch** gesture handlers. + */ +class IndiscreteGestureHandler extends _GestureHandler.default { + get shouldEnableGestureOnSetup() { + return false; + } + + updateGestureConfig({ + minPointers = 2, + maxPointers = 2, + ...props + }) { + return super.updateGestureConfig({ + minPointers, + maxPointers, + ...props + }); + } + + isGestureEnabledForEvent({ + minPointers, + maxPointers + }, _recognizer, { + maxPointers: pointerLength + }) { + if (pointerLength > maxPointers) { + return { + failed: true + }; + } + + const validPointerCount = pointerLength >= minPointers; + return { + success: validPointerCount + }; + } + +} + +var _default = IndiscreteGestureHandler; +exports.default = _default; +//# sourceMappingURL=IndiscreteGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map new file mode 100644 index 00000000..e2d9306c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["IndiscreteGestureHandler.ts"],"names":["IndiscreteGestureHandler","GestureHandler","shouldEnableGestureOnSetup","updateGestureConfig","minPointers","maxPointers","props","isGestureEnabledForEvent","_recognizer","pointerLength","failed","validPointerCount","success"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA,MAAeA,wBAAf,SAAgDC,uBAAhD,CAA+D;AAC/B,MAA1BC,0BAA0B,GAAG;AAC/B,WAAO,KAAP;AACD;;AAEDC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,WAAW,GAAG,CAAhB;AAAmBC,IAAAA,WAAW,GAAG,CAAjC;AAAoC,OAAGC;AAAvC,GAAD,EAAiD;AAClE,WAAO,MAAMH,mBAAN,CAA0B;AAC/BC,MAAAA,WAD+B;AAE/BC,MAAAA,WAF+B;AAG/B,SAAGC;AAH4B,KAA1B,CAAP;AAKD;;AAEDC,EAAAA,wBAAwB,CACtB;AAAEH,IAAAA,WAAF;AAAeC,IAAAA;AAAf,GADsB,EAEtBG,WAFsB,EAGtB;AAAEH,IAAAA,WAAW,EAAEI;AAAf,GAHsB,EAItB;AACA,QAAIA,aAAa,GAAGJ,WAApB,EAAiC;AAC/B,aAAO;AAAEK,QAAAA,MAAM,EAAE;AAAV,OAAP;AACD;;AACD,UAAMC,iBAAiB,GAAGF,aAAa,IAAIL,WAA3C;AACA,WAAO;AACLQ,MAAAA,OAAO,EAAED;AADJ,KAAP;AAGD;;AAzB4D;;eA2BhDX,wB","sourcesContent":["import GestureHandler from './GestureHandler';\n\n/**\n * The base class for **Rotation** and **Pinch** gesture handlers.\n */\nabstract class IndiscreteGestureHandler extends GestureHandler {\n get shouldEnableGestureOnSetup() {\n return false;\n }\n\n updateGestureConfig({ minPointers = 2, maxPointers = 2, ...props }) {\n return super.updateGestureConfig({\n minPointers,\n maxPointers,\n ...props,\n });\n }\n\n isGestureEnabledForEvent(\n { minPointers, maxPointers }: any,\n _recognizer: any,\n { maxPointers: pointerLength }: any\n ) {\n if (pointerLength > maxPointers) {\n return { failed: true };\n }\n const validPointerCount = pointerLength >= minPointers;\n return {\n success: validPointerCount,\n };\n }\n}\nexport default IndiscreteGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js new file mode 100644 index 00000000..4b4db63b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js @@ -0,0 +1,71 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _State = require("../State"); + +var _PressGestureHandler = _interopRequireDefault(require("./PressGestureHandler")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +class LongPressGestureHandler extends _PressGestureHandler.default { + get minDurationMs() { + // @ts-ignore FIXNE(TS) + return (0, _utils.isnan)(this.config.minDurationMs) ? 251 : this.config.minDurationMs; + } + + get maxDist() { + // @ts-ignore FIXNE(TS) + return (0, _utils.isnan)(this.config.maxDist) ? 9 : this.config.maxDist; + } + + updateHasCustomActivationCriteria({ + maxDistSq + }) { + return !(0, _utils.isValidNumber)(maxDistSq); + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + shouldCancelWhenOutside: true, + maxDistSq: 10 + }; + } + + return this.config; + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + // threshold: this.maxDist, + time: this.minDurationMs + }; + } + + getState(type) { + return { + [_hammerjs.default.INPUT_START]: _State.State.ACTIVE, + [_hammerjs.default.INPUT_MOVE]: _State.State.ACTIVE, + [_hammerjs.default.INPUT_END]: _State.State.END, + [_hammerjs.default.INPUT_CANCEL]: _State.State.FAILED + }[type]; + } + +} + +var _default = LongPressGestureHandler; +exports.default = _default; +//# sourceMappingURL=LongPressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js.map new file mode 100644 index 00000000..193998a7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/LongPressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["LongPressGestureHandler","PressGestureHandler","minDurationMs","config","maxDist","updateHasCustomActivationCriteria","maxDistSq","getConfig","hasCustomActivationCriteria","shouldCancelWhenOutside","getHammerConfig","time","getState","type","Hammer","INPUT_START","State","ACTIVE","INPUT_MOVE","INPUT_END","END","INPUT_CANCEL","FAILED"],"mappings":";;;;;;;AAEA;;AAEA;;AACA;;AACA;;;;AANA;;AACA;AASA,MAAMA,uBAAN,SAAsCC,4BAAtC,CAA0D;AACvC,MAAbC,aAAa,GAAW;AAC1B;AACA,WAAO,kBAAM,KAAKC,MAAL,CAAYD,aAAlB,IAAmC,GAAnC,GAAyC,KAAKC,MAAL,CAAYD,aAA5D;AACD;;AAEU,MAAPE,OAAO,GAAG;AACZ;AACA,WAAO,kBAAM,KAAKD,MAAL,CAAYC,OAAlB,IAA6B,CAA7B,GAAiC,KAAKD,MAAL,CAAYC,OAApD;AACD;;AAEDC,EAAAA,iCAAiC,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAAwB;AACvD,WAAO,CAAC,0BAAcA,SAAd,CAAR;AACD;;AAEDC,EAAAA,SAAS,GAAG;AACV,QAAI,CAAC,KAAKC,2BAAV,EAAuC;AACrC;AACA;AACA,aAAO;AACLC,QAAAA,uBAAuB,EAAE,IADpB;AAELH,QAAAA,SAAS,EAAE;AAFN,OAAP;AAID;;AACD,WAAO,KAAKH,MAAZ;AACD;;AAEDO,EAAAA,eAAe,GAAG;AAChB,WAAO,EACL,GAAG,MAAMA,eAAN,EADE;AAEL;AACAC,MAAAA,IAAI,EAAE,KAAKT;AAHN,KAAP;AAKD;;AAEDU,EAAAA,QAAQ,CAACC,IAAD,EAAsC;AAC5C,WAAO;AACL,OAACC,kBAAOC,WAAR,GAAsBC,aAAMC,MADvB;AAEL,OAACH,kBAAOI,UAAR,GAAqBF,aAAMC,MAFtB;AAGL,OAACH,kBAAOK,SAAR,GAAoBH,aAAMI,GAHrB;AAIL,OAACN,kBAAOO,YAAR,GAAuBL,aAAMM;AAJxB,MAKLT,IALK,CAAP;AAMD;;AA1CuD;;eA6C3Cb,uB","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\nimport PressGestureHandler from './PressGestureHandler';\nimport { isnan, isValidNumber } from './utils';\nimport { Config } from './GestureHandler';\nimport { HammerInputNames } from './constants';\n\nclass LongPressGestureHandler extends PressGestureHandler {\n get minDurationMs(): number {\n // @ts-ignore FIXNE(TS)\n return isnan(this.config.minDurationMs) ? 251 : this.config.minDurationMs;\n }\n\n get maxDist() {\n // @ts-ignore FIXNE(TS)\n return isnan(this.config.maxDist) ? 9 : this.config.maxDist;\n }\n\n updateHasCustomActivationCriteria({ maxDistSq }: Config) {\n return !isValidNumber(maxDistSq);\n }\n\n getConfig() {\n if (!this.hasCustomActivationCriteria) {\n // Default config\n // If no params have been defined then this config should emulate the native gesture as closely as possible.\n return {\n shouldCancelWhenOutside: true,\n maxDistSq: 10,\n };\n }\n return this.config;\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n // threshold: this.maxDist,\n time: this.minDurationMs,\n };\n }\n\n getState(type: keyof typeof HammerInputNames) {\n return {\n [Hammer.INPUT_START]: State.ACTIVE,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.FAILED,\n }[type];\n }\n}\n\nexport default LongPressGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js new file mode 100644 index 00000000..524cb015 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js @@ -0,0 +1,66 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _DiscreteGestureHandler = _interopRequireDefault(require("./DiscreteGestureHandler")); + +var NodeManager = _interopRequireWildcard(require("./NodeManager")); + +var _PressGestureHandler = _interopRequireDefault(require("./PressGestureHandler")); + +var _utils = require("./utils"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class NativeViewGestureHandler extends _PressGestureHandler.default { + get isNative() { + return true; + } + + onRawEvent(ev) { + super.onRawEvent(ev); + + if (!ev.isFinal) { + // if (this.ref instanceof ScrollView) { + if ((0, _utils.TEST_MIN_IF_NOT_NAN)((0, _utils.VEC_LEN_SQ)({ + x: ev.deltaX, + y: ev.deltaY + }), 10)) { + // @ts-ignore FIXME(TS) config type + if (this.config.disallowInterruption) { + const gestures = Object.values(NodeManager.getNodes()).filter(gesture => { + const { + handlerTag, + view, + isGestureRunning + } = gesture; + return (// Check if this gesture isn't self + handlerTag !== this.handlerTag && // Ensure the gesture needs to be cancelled + isGestureRunning && // ScrollView can cancel discrete gestures like taps and presses + gesture instanceof _DiscreteGestureHandler.default && // Ensure a view exists and is a child of the current view + view && // @ts-ignore FIXME(TS) view type + this.view.contains(view) + ); + }); // Cancel all of the gestures that passed the filter + + for (const gesture of gestures) { + // TODO: Bacon: Send some cached event. + gesture.forceInvalidate(ev); + } + } + } + } + } + +} + +var _default = NativeViewGestureHandler; +exports.default = _default; +//# sourceMappingURL=NativeViewGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map new file mode 100644 index 00000000..1ae5654a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["NativeViewGestureHandler","PressGestureHandler","isNative","onRawEvent","ev","isFinal","x","deltaX","y","deltaY","config","disallowInterruption","gestures","Object","values","NodeManager","getNodes","filter","gesture","handlerTag","view","isGestureRunning","DiscreteGestureHandler","contains","forceInvalidate"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,wBAAN,SAAuCC,4BAAvC,CAA2D;AAC7C,MAARC,QAAQ,GAAG;AACb,WAAO,IAAP;AACD;;AAEDC,EAAAA,UAAU,CAACC,EAAD,EAAqB;AAC7B,UAAMD,UAAN,CAAiBC,EAAjB;;AACA,QAAI,CAACA,EAAE,CAACC,OAAR,EAAiB;AACf;AACA,UAAI,gCAAoB,uBAAW;AAAEC,QAAAA,CAAC,EAAEF,EAAE,CAACG,MAAR;AAAgBC,QAAAA,CAAC,EAAEJ,EAAE,CAACK;AAAtB,OAAX,CAApB,EAAgE,EAAhE,CAAJ,EAAyE;AACvE;AACA,YAAI,KAAKC,MAAL,CAAYC,oBAAhB,EAAsC;AACpC,gBAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAcC,WAAW,CAACC,QAAZ,EAAd,EAAsCC,MAAtC,CACdC,OAAD,IAAa;AACX,kBAAM;AAAEC,cAAAA,UAAF;AAAcC,cAAAA,IAAd;AAAoBC,cAAAA;AAApB,gBAAyCH,OAA/C;AACA,mBACE;AACAC,cAAAA,UAAU,KAAK,KAAKA,UAApB,IACA;AACAE,cAAAA,gBAFA,IAGA;AACAH,cAAAA,OAAO,YAAYI,+BAJnB,IAKA;AACAF,cAAAA,IANA,IAOA;AACA,mBAAKA,IAAL,CAAUG,QAAV,CAAmBH,IAAnB;AAVF;AAYD,WAfc,CAAjB,CADoC,CAkBpC;;AACA,eAAK,MAAMF,OAAX,IAAsBN,QAAtB,EAAgC;AAC9B;AACAM,YAAAA,OAAO,CAACM,eAAR,CAAwBpB,EAAxB;AACD;AACF;AACF;AACF;AACF;;AArCwD;;eAwC5CJ,wB","sourcesContent":["import DiscreteGestureHandler from './DiscreteGestureHandler';\nimport { HammerInputExt } from './GestureHandler';\nimport * as NodeManager from './NodeManager';\nimport PressGestureHandler from './PressGestureHandler';\nimport { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';\n\nclass NativeViewGestureHandler extends PressGestureHandler {\n get isNative() {\n return true;\n }\n\n onRawEvent(ev: HammerInputExt) {\n super.onRawEvent(ev);\n if (!ev.isFinal) {\n // if (this.ref instanceof ScrollView) {\n if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ x: ev.deltaX, y: ev.deltaY }), 10)) {\n // @ts-ignore FIXME(TS) config type\n if (this.config.disallowInterruption) {\n const gestures = Object.values(NodeManager.getNodes()).filter(\n (gesture) => {\n const { handlerTag, view, isGestureRunning } = gesture;\n return (\n // Check if this gesture isn't self\n handlerTag !== this.handlerTag &&\n // Ensure the gesture needs to be cancelled\n isGestureRunning &&\n // ScrollView can cancel discrete gestures like taps and presses\n gesture instanceof DiscreteGestureHandler &&\n // Ensure a view exists and is a child of the current view\n view &&\n // @ts-ignore FIXME(TS) view type\n this.view.contains(view)\n );\n }\n );\n // Cancel all of the gestures that passed the filter\n for (const gesture of gestures) {\n // TODO: Bacon: Send some cached event.\n gesture.forceInvalidate(ev);\n }\n }\n }\n }\n }\n}\n\nexport default NativeViewGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js new file mode 100644 index 00000000..7f2c64e5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getHandler = getHandler; +exports.createGestureHandler = createGestureHandler; +exports.dropGestureHandler = dropGestureHandler; +exports.getNodes = getNodes; +const gestures = {}; + +function getHandler(tag) { + if (tag in gestures) { + return gestures[tag]; + } + + throw new Error(`No handler for tag ${tag}`); +} + +function createGestureHandler(handlerTag, handler) { + if (handlerTag in gestures) { + throw new Error(`Handler with tag ${handlerTag} already exists`); + } + + gestures[handlerTag] = handler; // @ts-ignore no types for web handlers yet + + gestures[handlerTag].handlerTag = handlerTag; +} + +function dropGestureHandler(handlerTag) { + // Since React 18, there are cases where componentWillUnmount gets called twice in a row + // so skip this if the tag was already removed. + if (!(handlerTag in gestures)) { + return; + } + + getHandler(handlerTag).destroy(); // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + + delete gestures[handlerTag]; +} + +function getNodes() { + return { ...gestures + }; +} +//# sourceMappingURL=NodeManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js.map new file mode 100644 index 00000000..52ff59ac --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/NodeManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NodeManager.ts"],"names":["gestures","getHandler","tag","Error","createGestureHandler","handlerTag","handler","dropGestureHandler","destroy","getNodes"],"mappings":";;;;;;;;;AAGA,MAAMA,QAGL,GAAG,EAHJ;;AAKO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,MAAIA,GAAG,IAAIF,QAAX,EAAqB;AACnB,WAAOA,QAAQ,CAACE,GAAD,CAAf;AACD;;AAED,QAAM,IAAIC,KAAJ,CAAW,sBAAqBD,GAAI,EAApC,CAAN;AACD;;AAEM,SAASE,oBAAT,CACLC,UADK,EAELC,OAFK,EAGL;AACA,MAAID,UAAU,IAAIL,QAAlB,EAA4B;AAC1B,UAAM,IAAIG,KAAJ,CAAW,oBAAmBE,UAAW,iBAAzC,CAAN;AACD;;AACDL,EAAAA,QAAQ,CAACK,UAAD,CAAR,GAAuBC,OAAvB,CAJA,CAKA;;AACAN,EAAAA,QAAQ,CAACK,UAAD,CAAR,CAAqBA,UAArB,GAAkCA,UAAlC;AACD;;AAEM,SAASE,kBAAT,CAA4BF,UAA5B,EAAgD;AACrD;AACA;AACA,MAAI,EAAEA,UAAU,IAAIL,QAAhB,CAAJ,EAA+B;AAC7B;AACD;;AACDC,EAAAA,UAAU,CAACI,UAAD,CAAV,CAAuBG,OAAvB,GANqD,CAOrD;;AACA,SAAOR,QAAQ,CAACK,UAAD,CAAf;AACD;;AAEM,SAASI,QAAT,GAAoB;AACzB,SAAO,EAAE,GAAGT;AAAL,GAAP;AACD","sourcesContent":["import { ValueOf } from '../typeUtils';\nimport { HammerGestures } from '../RNGestureHandlerModule.web';\n\nconst gestures: Record<\n number,\n InstanceType>\n> = {};\n\nexport function getHandler(tag: number) {\n if (tag in gestures) {\n return gestures[tag];\n }\n\n throw new Error(`No handler for tag ${tag}`);\n}\n\nexport function createGestureHandler(\n handlerTag: number,\n handler: InstanceType>\n) {\n if (handlerTag in gestures) {\n throw new Error(`Handler with tag ${handlerTag} already exists`);\n }\n gestures[handlerTag] = handler;\n // @ts-ignore no types for web handlers yet\n gestures[handlerTag].handlerTag = handlerTag;\n}\n\nexport function dropGestureHandler(handlerTag: number) {\n // Since React 18, there are cases where componentWillUnmount gets called twice in a row\n // so skip this if the tag was already removed.\n if (!(handlerTag in gestures)) {\n return;\n }\n getHandler(handlerTag).destroy();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete gestures[handlerTag];\n}\n\nexport function getNodes() {\n return { ...gestures };\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js new file mode 100644 index 00000000..452f9ef8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js @@ -0,0 +1,208 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _constants = require("./constants"); + +var _DraggingGestureHandler = _interopRequireDefault(require("./DraggingGestureHandler")); + +var _utils = require("./utils"); + +var _State = require("../State"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class PanGestureHandler extends _DraggingGestureHandler.default { + get name() { + return 'pan'; + } + + get NativeGestureClass() { + return _hammerjs.default.Pan; + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + direction: this.getDirection() + }; + } + + getState(type) { + const nextState = super.getState(type); // Ensure that the first state sent is `BEGAN` and not `ACTIVE` + + if (this.previousState === _State.State.UNDETERMINED && nextState === _State.State.ACTIVE) { + return _State.State.BEGAN; + } + + return nextState; + } + + getDirection() { + const config = this.getConfig(); + const { + activeOffsetXStart, + activeOffsetXEnd, + activeOffsetYStart, + activeOffsetYEnd, + minDist + } = config; + let directions = []; + let horizontalDirections = []; + + if (!(0, _utils.isnan)(minDist)) { + return _hammerjs.default.DIRECTION_ALL; + } + + if (!(0, _utils.isnan)(activeOffsetXStart)) { + horizontalDirections.push(_hammerjs.default.DIRECTION_LEFT); + } + + if (!(0, _utils.isnan)(activeOffsetXEnd)) { + horizontalDirections.push(_hammerjs.default.DIRECTION_RIGHT); + } + + if (horizontalDirections.length === 2) { + horizontalDirections = [_hammerjs.default.DIRECTION_HORIZONTAL]; + } + + directions = directions.concat(horizontalDirections); + let verticalDirections = []; + + if (!(0, _utils.isnan)(activeOffsetYStart)) { + verticalDirections.push(_hammerjs.default.DIRECTION_UP); + } + + if (!(0, _utils.isnan)(activeOffsetYEnd)) { + verticalDirections.push(_hammerjs.default.DIRECTION_DOWN); + } + + if (verticalDirections.length === 2) { + verticalDirections = [_hammerjs.default.DIRECTION_VERTICAL]; + } + + directions = directions.concat(verticalDirections); + + if (!directions.length) { + return _hammerjs.default.DIRECTION_NONE; + } + + if (directions[0] === _hammerjs.default.DIRECTION_HORIZONTAL && directions[1] === _hammerjs.default.DIRECTION_VERTICAL) { + return _hammerjs.default.DIRECTION_ALL; + } + + if (horizontalDirections.length && verticalDirections.length) { + return _hammerjs.default.DIRECTION_ALL; + } + + return directions[0]; + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + minDistSq: 10 + }; + } + + return this.config; + } + + shouldFailUnderCustomCriteria({ + deltaX, + deltaY + }, criteria) { + return !(0, _utils.isnan)(criteria.failOffsetXStart) && deltaX < criteria.failOffsetXStart || !(0, _utils.isnan)(criteria.failOffsetXEnd) && deltaX > criteria.failOffsetXEnd || !(0, _utils.isnan)(criteria.failOffsetYStart) && deltaY < criteria.failOffsetYStart || !(0, _utils.isnan)(criteria.failOffsetYEnd) && deltaY > criteria.failOffsetYEnd; + } + + shouldActivateUnderCustomCriteria({ + deltaX, + deltaY, + velocity + }, criteria) { + return !(0, _utils.isnan)(criteria.activeOffsetXStart) && deltaX < criteria.activeOffsetXStart || !(0, _utils.isnan)(criteria.activeOffsetXEnd) && deltaX > criteria.activeOffsetXEnd || !(0, _utils.isnan)(criteria.activeOffsetYStart) && deltaY < criteria.activeOffsetYStart || !(0, _utils.isnan)(criteria.activeOffsetYEnd) && deltaY > criteria.activeOffsetYEnd || (0, _utils.TEST_MIN_IF_NOT_NAN)((0, _utils.VEC_LEN_SQ)({ + x: deltaX, + y: deltaY + }), criteria.minDistSq) || (0, _utils.TEST_MIN_IF_NOT_NAN)(velocity.x, criteria.minVelocityX) || (0, _utils.TEST_MIN_IF_NOT_NAN)(velocity.y, criteria.minVelocityY) || (0, _utils.TEST_MIN_IF_NOT_NAN)((0, _utils.VEC_LEN_SQ)(velocity), criteria.minVelocitySq); + } + + shouldMultiFingerPanFail({ + pointerLength, + scale, + deltaRotation + }) { + if (pointerLength <= 1) { + return false; + } // Test if the pan had too much pinching or rotating. + + + const deltaScale = Math.abs(scale - 1); + const absDeltaRotation = Math.abs(deltaRotation); + + if (deltaScale > _constants.MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD) { + // > If the threshold doesn't seem right. + // You can log the value which it failed at here: + return true; + } + + if (absDeltaRotation > _constants.MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD) { + // > If the threshold doesn't seem right. + // You can log the value which it failed at here: + return true; + } + + return false; + } + + updateHasCustomActivationCriteria(criteria) { + return (0, _utils.isValidNumber)(criteria.minDistSq) || (0, _utils.isValidNumber)(criteria.minVelocityX) || (0, _utils.isValidNumber)(criteria.minVelocityY) || (0, _utils.isValidNumber)(criteria.minVelocitySq) || (0, _utils.isValidNumber)(criteria.activeOffsetXStart) || (0, _utils.isValidNumber)(criteria.activeOffsetXEnd) || (0, _utils.isValidNumber)(criteria.activeOffsetYStart) || (0, _utils.isValidNumber)(criteria.activeOffsetYEnd); + } + + isGestureEnabledForEvent(props, _recognizer, inputData) { + if (this.shouldFailUnderCustomCriteria(inputData, props)) { + return { + failed: true + }; + } + + const velocity = { + x: inputData.velocityX, + y: inputData.velocityY + }; + + if (this.hasCustomActivationCriteria && this.shouldActivateUnderCustomCriteria({ + deltaX: inputData.deltaX, + deltaY: inputData.deltaY, + velocity + }, props)) { + if (this.shouldMultiFingerPanFail({ + pointerLength: inputData.maxPointers, + scale: inputData.scale, + deltaRotation: inputData.deltaRotation + })) { + return { + failed: true + }; + } + + return { + success: true + }; + } + + return { + success: false + }; + } + +} + +var _default = PanGestureHandler; +exports.default = _default; +//# sourceMappingURL=PanGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js.map new file mode 100644 index 00000000..fabc472e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PanGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PanGestureHandler.ts"],"names":["PanGestureHandler","DraggingGestureHandler","name","NativeGestureClass","Hammer","Pan","getHammerConfig","direction","getDirection","getState","type","nextState","previousState","State","UNDETERMINED","ACTIVE","BEGAN","config","getConfig","activeOffsetXStart","activeOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","minDist","directions","horizontalDirections","DIRECTION_ALL","push","DIRECTION_LEFT","DIRECTION_RIGHT","length","DIRECTION_HORIZONTAL","concat","verticalDirections","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_NONE","hasCustomActivationCriteria","minDistSq","shouldFailUnderCustomCriteria","deltaX","deltaY","criteria","failOffsetXStart","failOffsetXEnd","failOffsetYStart","failOffsetYEnd","shouldActivateUnderCustomCriteria","velocity","x","y","minVelocityX","minVelocityY","minVelocitySq","shouldMultiFingerPanFail","pointerLength","scale","deltaRotation","deltaScale","Math","abs","absDeltaRotation","MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD","MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD","updateHasCustomActivationCriteria","isGestureEnabledForEvent","props","_recognizer","inputData","failed","velocityX","velocityY","maxPointers","success"],"mappings":"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","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport {\n EventMap,\n MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD,\n MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD,\n} from './constants';\nimport DraggingGestureHandler from './DraggingGestureHandler';\nimport { isValidNumber, isnan, TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';\nimport { State } from '../State';\n\nimport { Config, HammerInputExt } from './GestureHandler';\nclass PanGestureHandler extends DraggingGestureHandler {\n get name() {\n return 'pan';\n }\n\n get NativeGestureClass() {\n return Hammer.Pan;\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n direction: this.getDirection(),\n };\n }\n\n getState(type: keyof typeof EventMap) {\n const nextState = super.getState(type);\n // Ensure that the first state sent is `BEGAN` and not `ACTIVE`\n if (\n this.previousState === State.UNDETERMINED &&\n nextState === State.ACTIVE\n ) {\n return State.BEGAN;\n }\n return nextState;\n }\n\n getDirection() {\n const config = this.getConfig();\n const {\n activeOffsetXStart,\n activeOffsetXEnd,\n activeOffsetYStart,\n activeOffsetYEnd,\n minDist,\n } = config;\n let directions: number[] = [];\n let horizontalDirections = [];\n\n if (!isnan(minDist)) {\n return Hammer.DIRECTION_ALL;\n }\n\n if (!isnan(activeOffsetXStart)) {\n horizontalDirections.push(Hammer.DIRECTION_LEFT);\n }\n if (!isnan(activeOffsetXEnd)) {\n horizontalDirections.push(Hammer.DIRECTION_RIGHT);\n }\n if (horizontalDirections.length === 2) {\n horizontalDirections = [Hammer.DIRECTION_HORIZONTAL];\n }\n\n directions = directions.concat(horizontalDirections);\n let verticalDirections = [];\n\n if (!isnan(activeOffsetYStart)) {\n verticalDirections.push(Hammer.DIRECTION_UP);\n }\n if (!isnan(activeOffsetYEnd)) {\n verticalDirections.push(Hammer.DIRECTION_DOWN);\n }\n\n if (verticalDirections.length === 2) {\n verticalDirections = [Hammer.DIRECTION_VERTICAL];\n }\n\n directions = directions.concat(verticalDirections);\n\n if (!directions.length) {\n return Hammer.DIRECTION_NONE;\n }\n if (\n directions[0] === Hammer.DIRECTION_HORIZONTAL &&\n directions[1] === Hammer.DIRECTION_VERTICAL\n ) {\n return Hammer.DIRECTION_ALL;\n }\n if (horizontalDirections.length && verticalDirections.length) {\n return Hammer.DIRECTION_ALL;\n }\n\n return directions[0];\n }\n\n getConfig() {\n if (!this.hasCustomActivationCriteria) {\n // Default config\n // If no params have been defined then this config should emulate the native gesture as closely as possible.\n return {\n minDistSq: 10,\n };\n }\n return this.config;\n }\n\n shouldFailUnderCustomCriteria(\n { deltaX, deltaY }: HammerInputExt,\n criteria: any\n ) {\n return (\n (!isnan(criteria.failOffsetXStart) &&\n deltaX < criteria.failOffsetXStart) ||\n (!isnan(criteria.failOffsetXEnd) && deltaX > criteria.failOffsetXEnd) ||\n (!isnan(criteria.failOffsetYStart) &&\n deltaY < criteria.failOffsetYStart) ||\n (!isnan(criteria.failOffsetYEnd) && deltaY > criteria.failOffsetYEnd)\n );\n }\n\n shouldActivateUnderCustomCriteria(\n { deltaX, deltaY, velocity }: any,\n criteria: any\n ) {\n return (\n (!isnan(criteria.activeOffsetXStart) &&\n deltaX < criteria.activeOffsetXStart) ||\n (!isnan(criteria.activeOffsetXEnd) &&\n deltaX > criteria.activeOffsetXEnd) ||\n (!isnan(criteria.activeOffsetYStart) &&\n deltaY < criteria.activeOffsetYStart) ||\n (!isnan(criteria.activeOffsetYEnd) &&\n deltaY > criteria.activeOffsetYEnd) ||\n TEST_MIN_IF_NOT_NAN(\n VEC_LEN_SQ({ x: deltaX, y: deltaY }),\n criteria.minDistSq\n ) ||\n TEST_MIN_IF_NOT_NAN(velocity.x, criteria.minVelocityX) ||\n TEST_MIN_IF_NOT_NAN(velocity.y, criteria.minVelocityY) ||\n TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), criteria.minVelocitySq)\n );\n }\n\n shouldMultiFingerPanFail({\n pointerLength,\n scale,\n deltaRotation,\n }: {\n deltaRotation: number;\n pointerLength: number;\n scale: number;\n }) {\n if (pointerLength <= 1) {\n return false;\n }\n\n // Test if the pan had too much pinching or rotating.\n const deltaScale = Math.abs(scale - 1);\n const absDeltaRotation = Math.abs(deltaRotation);\n if (deltaScale > MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD) {\n // > If the threshold doesn't seem right.\n // You can log the value which it failed at here:\n return true;\n }\n if (absDeltaRotation > MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD) {\n // > If the threshold doesn't seem right.\n // You can log the value which it failed at here:\n return true;\n }\n\n return false;\n }\n\n updateHasCustomActivationCriteria(\n criteria: Config & { minVelocityX?: number; minVelocityY?: number }\n ) {\n return (\n isValidNumber(criteria.minDistSq) ||\n isValidNumber(criteria.minVelocityX) ||\n isValidNumber(criteria.minVelocityY) ||\n isValidNumber(criteria.minVelocitySq) ||\n isValidNumber(criteria.activeOffsetXStart) ||\n isValidNumber(criteria.activeOffsetXEnd) ||\n isValidNumber(criteria.activeOffsetYStart) ||\n isValidNumber(criteria.activeOffsetYEnd)\n );\n }\n\n isGestureEnabledForEvent(\n props: any,\n _recognizer: any,\n inputData: HammerInputExt & { deltaRotation: number }\n ) {\n if (this.shouldFailUnderCustomCriteria(inputData, props)) {\n return { failed: true };\n }\n\n const velocity = { x: inputData.velocityX, y: inputData.velocityY };\n if (\n this.hasCustomActivationCriteria &&\n this.shouldActivateUnderCustomCriteria(\n { deltaX: inputData.deltaX, deltaY: inputData.deltaY, velocity },\n props\n )\n ) {\n if (\n this.shouldMultiFingerPanFail({\n pointerLength: inputData.maxPointers,\n scale: inputData.scale,\n deltaRotation: inputData.deltaRotation,\n })\n ) {\n return {\n failed: true,\n };\n }\n return { success: true };\n }\n return { success: false };\n }\n}\n\nexport default PanGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js new file mode 100644 index 00000000..915f9bd3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _IndiscreteGestureHandler = _interopRequireDefault(require("./IndiscreteGestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class PinchGestureHandler extends _IndiscreteGestureHandler.default { + get name() { + return 'pinch'; + } + + get NativeGestureClass() { + return _hammerjs.default.Pinch; + } + + transformNativeEvent({ + scale, + velocity, + center + }) { + return { + focalX: center.x, + focalY: center.y, + velocity, + scale + }; + } + +} + +var _default = PinchGestureHandler; +exports.default = _default; +//# sourceMappingURL=PinchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js.map new file mode 100644 index 00000000..d4e5c350 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PinchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PinchGestureHandler.ts"],"names":["PinchGestureHandler","IndiscreteGestureHandler","name","NativeGestureClass","Hammer","Pinch","transformNativeEvent","scale","velocity","center","focalX","x","focalY","y"],"mappings":";;;;;;;AAAA;;AAGA;;;;AAEA,MAAMA,mBAAN,SAAkCC,iCAAlC,CAA2D;AACjD,MAAJC,IAAI,GAAG;AACT,WAAO,OAAP;AACD;;AAEqB,MAAlBC,kBAAkB,GAAG;AACvB,WAAOC,kBAAOC,KAAd;AACD;;AAEDC,EAAAA,oBAAoB,CAAC;AAAEC,IAAAA,KAAF;AAASC,IAAAA,QAAT;AAAmBC,IAAAA;AAAnB,GAAD,EAA8C;AAChE,WAAO;AACLC,MAAAA,MAAM,EAAED,MAAM,CAACE,CADV;AAELC,MAAAA,MAAM,EAAEH,MAAM,CAACI,CAFV;AAGLL,MAAAA,QAHK;AAILD,MAAAA;AAJK,KAAP;AAMD;;AAhBwD;;eAmB5CP,mB","sourcesContent":["import Hammer from '@egjs/hammerjs';\nimport { HammerInputExt } from './GestureHandler';\n\nimport IndiscreteGestureHandler from './IndiscreteGestureHandler';\n\nclass PinchGestureHandler extends IndiscreteGestureHandler {\n get name() {\n return 'pinch';\n }\n\n get NativeGestureClass() {\n return Hammer.Pinch;\n }\n\n transformNativeEvent({ scale, velocity, center }: HammerInputExt) {\n return {\n focalX: center.x,\n focalY: center.y,\n velocity,\n scale,\n };\n }\n}\n\nexport default PinchGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js new file mode 100644 index 00000000..28a10074 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js @@ -0,0 +1,188 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _State = require("../State"); + +var _constants = require("./constants"); + +var _DiscreteGestureHandler = _interopRequireDefault(require("./DiscreteGestureHandler")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class PressGestureHandler extends _DiscreteGestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "visualFeedbackTimer", void 0); + + _defineProperty(this, "initialEvent", null); + + _defineProperty(this, "shouldDelayTouches", true); + } + + get name() { + return 'press'; + } + + get minDurationMs() { + // @ts-ignore FIXME(TS) + return (0, _utils.isnan)(this.config.minDurationMs) ? 5 : this.config.minDurationMs; + } + + get maxDist() { + return (0, _utils.isnan)(this.config.maxDist) ? 9 : this.config.maxDist; + } + + get NativeGestureClass() { + return _hammerjs.default.Press; + } + + simulateCancelEvent(inputData) { + // Long press never starts so we can't rely on the running event boolean. + this.hasGestureFailed = true; + this.cancelEvent(inputData); + } + + updateHasCustomActivationCriteria({ + shouldCancelWhenOutside, + maxDistSq + }) { + return shouldCancelWhenOutside || !(0, _utils.isValidNumber)(maxDistSq); + } + + getState(type) { + return { + [_hammerjs.default.INPUT_START]: _State.State.BEGAN, + [_hammerjs.default.INPUT_MOVE]: _State.State.ACTIVE, + [_hammerjs.default.INPUT_END]: _State.State.END, + [_hammerjs.default.INPUT_CANCEL]: _State.State.CANCELLED + }[type]; + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + shouldCancelWhenOutside: true, + maxDistSq: 10 + }; + } + + return this.config; + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + // threshold: this.maxDist, + time: this.minDurationMs + }; + } + + onGestureActivated(ev) { + this.onGestureStart(ev); + } + + shouldDelayTouchForEvent({ + pointerType + }) { + // Don't disable event for mouse input + return this.shouldDelayTouches && pointerType === 'touch'; + } + + onGestureStart(ev) { + this.isGestureRunning = true; + clearTimeout(this.visualFeedbackTimer); + this.initialEvent = ev; + this.visualFeedbackTimer = (0, _utils.fireAfterInterval)(() => { + this.sendGestureStartedEvent(this.initialEvent); + this.initialEvent = null; + }, this.shouldDelayTouchForEvent(ev) && _constants.CONTENT_TOUCHES_DELAY); + } + + sendGestureStartedEvent(ev) { + clearTimeout(this.visualFeedbackTimer); + this.visualFeedbackTimer = null; + this.sendEvent({ ...ev, + eventType: _hammerjs.default.INPUT_MOVE, + isFirst: true + }); + } + + forceInvalidate(event) { + super.forceInvalidate(event); + clearTimeout(this.visualFeedbackTimer); + this.visualFeedbackTimer = null; + this.initialEvent = null; + } + + onRawEvent(ev) { + super.onRawEvent(ev); + + if (this.isGestureRunning) { + if (ev.isFinal) { + let timeout; + + if (this.visualFeedbackTimer) { + // Aesthetic timing for a quick tap. + // We haven't activated the tap right away to emulate iOS `delaysContentTouches` + // Now we must send the initial activation event and wait a set amount of time before firing the end event. + timeout = _constants.CONTENT_TOUCHES_QUICK_TAP_END_DELAY; + this.sendGestureStartedEvent(this.initialEvent); + this.initialEvent = null; + } + + (0, _utils.fireAfterInterval)(() => { + this.sendEvent({ ...ev, + eventType: _hammerjs.default.INPUT_END, + isFinal: true + }); // @ts-ignore -- this should explicitly support undefined + + this.onGestureEnded(); + }, timeout); + } else { + this.sendEvent({ ...ev, + eventType: _hammerjs.default.INPUT_MOVE, + isFinal: false + }); + } + } + } + + updateGestureConfig({ + shouldActivateOnStart = false, + disallowInterruption = false, + shouldCancelWhenOutside = true, + minDurationMs = Number.NaN, + maxDist = Number.NaN, + minPointers = 1, + maxPointers = 1, + ...props + }) { + return super.updateGestureConfig({ + shouldActivateOnStart, + disallowInterruption, + shouldCancelWhenOutside, + minDurationMs, + maxDist, + minPointers, + maxPointers, + ...props + }); + } + +} + +var _default = PressGestureHandler; +exports.default = _default; +//# sourceMappingURL=PressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js.map new file mode 100644 index 00000000..0ff9f87b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/PressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PressGestureHandler.ts"],"names":["PressGestureHandler","DiscreteGestureHandler","name","minDurationMs","config","maxDist","NativeGestureClass","Hammer","Press","simulateCancelEvent","inputData","hasGestureFailed","cancelEvent","updateHasCustomActivationCriteria","shouldCancelWhenOutside","maxDistSq","getState","type","INPUT_START","State","BEGAN","INPUT_MOVE","ACTIVE","INPUT_END","END","INPUT_CANCEL","CANCELLED","getConfig","hasCustomActivationCriteria","getHammerConfig","time","onGestureActivated","ev","onGestureStart","shouldDelayTouchForEvent","pointerType","shouldDelayTouches","isGestureRunning","clearTimeout","visualFeedbackTimer","initialEvent","sendGestureStartedEvent","CONTENT_TOUCHES_DELAY","sendEvent","eventType","isFirst","forceInvalidate","event","onRawEvent","isFinal","timeout","CONTENT_TOUCHES_QUICK_TAP_END_DELAY","onGestureEnded","updateGestureConfig","shouldActivateOnStart","disallowInterruption","Number","NaN","minPointers","maxPointers","props"],"mappings":"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","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\nimport {\n CONTENT_TOUCHES_DELAY,\n CONTENT_TOUCHES_QUICK_TAP_END_DELAY,\n HammerInputNames,\n} from './constants';\nimport DiscreteGestureHandler from './DiscreteGestureHandler';\nimport { Config, HammerInputExt } from './GestureHandler';\nimport { fireAfterInterval, isValidNumber, isnan } from './utils';\n\nclass PressGestureHandler extends DiscreteGestureHandler {\n private visualFeedbackTimer: any;\n private initialEvent: HammerInputExt | null = null;\n get name() {\n return 'press';\n }\n\n get minDurationMs() {\n // @ts-ignore FIXME(TS)\n return isnan(this.config.minDurationMs) ? 5 : this.config.minDurationMs;\n }\n\n get maxDist() {\n return isnan(this.config.maxDist) ? 9 : this.config.maxDist;\n }\n\n get NativeGestureClass() {\n return Hammer.Press;\n }\n\n shouldDelayTouches = true;\n\n simulateCancelEvent(inputData: HammerInputExt) {\n // Long press never starts so we can't rely on the running event boolean.\n this.hasGestureFailed = true;\n this.cancelEvent(inputData);\n }\n\n updateHasCustomActivationCriteria({\n shouldCancelWhenOutside,\n maxDistSq,\n }: Config & { shouldCancelWhenOutside: boolean }) {\n return shouldCancelWhenOutside || !isValidNumber(maxDistSq);\n }\n\n getState(type: keyof typeof HammerInputNames): State {\n return {\n [Hammer.INPUT_START]: State.BEGAN,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.CANCELLED,\n }[type];\n }\n\n getConfig() {\n if (!this.hasCustomActivationCriteria) {\n // Default config\n // If no params have been defined then this config should emulate the native gesture as closely as possible.\n return {\n shouldCancelWhenOutside: true,\n maxDistSq: 10,\n };\n }\n return this.config;\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n // threshold: this.maxDist,\n time: this.minDurationMs,\n };\n }\n\n onGestureActivated(ev: HammerInputExt) {\n this.onGestureStart(ev);\n }\n\n shouldDelayTouchForEvent({ pointerType }: HammerInputExt) {\n // Don't disable event for mouse input\n return this.shouldDelayTouches && pointerType === 'touch';\n }\n\n onGestureStart(ev: HammerInputExt) {\n this.isGestureRunning = true;\n clearTimeout(this.visualFeedbackTimer);\n this.initialEvent = ev;\n this.visualFeedbackTimer = fireAfterInterval(() => {\n this.sendGestureStartedEvent(this.initialEvent as HammerInputExt);\n this.initialEvent = null;\n }, this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY);\n }\n\n sendGestureStartedEvent(ev: HammerInputExt) {\n clearTimeout(this.visualFeedbackTimer);\n this.visualFeedbackTimer = null;\n this.sendEvent({\n ...ev,\n eventType: Hammer.INPUT_MOVE,\n isFirst: true,\n });\n }\n\n forceInvalidate(event: HammerInputExt) {\n super.forceInvalidate(event);\n clearTimeout(this.visualFeedbackTimer);\n this.visualFeedbackTimer = null;\n this.initialEvent = null;\n }\n\n onRawEvent(ev: HammerInputExt) {\n super.onRawEvent(ev);\n if (this.isGestureRunning) {\n if (ev.isFinal) {\n let timeout;\n if (this.visualFeedbackTimer) {\n // Aesthetic timing for a quick tap.\n // We haven't activated the tap right away to emulate iOS `delaysContentTouches`\n // Now we must send the initial activation event and wait a set amount of time before firing the end event.\n timeout = CONTENT_TOUCHES_QUICK_TAP_END_DELAY;\n this.sendGestureStartedEvent(this.initialEvent as HammerInputExt);\n this.initialEvent = null;\n }\n fireAfterInterval(() => {\n this.sendEvent({\n ...ev,\n eventType: Hammer.INPUT_END,\n isFinal: true,\n });\n // @ts-ignore -- this should explicitly support undefined\n this.onGestureEnded();\n }, timeout);\n } else {\n this.sendEvent({\n ...ev,\n eventType: Hammer.INPUT_MOVE,\n isFinal: false,\n });\n }\n }\n }\n\n updateGestureConfig({\n shouldActivateOnStart = false,\n disallowInterruption = false,\n shouldCancelWhenOutside = true,\n minDurationMs = Number.NaN,\n maxDist = Number.NaN,\n minPointers = 1,\n maxPointers = 1,\n ...props\n }) {\n return super.updateGestureConfig({\n shouldActivateOnStart,\n disallowInterruption,\n shouldCancelWhenOutside,\n minDurationMs,\n maxDist,\n minPointers,\n maxPointers,\n ...props,\n });\n }\n}\nexport default PressGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js new file mode 100644 index 00000000..4d2da4d9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js @@ -0,0 +1,44 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _constants = require("./constants"); + +var _IndiscreteGestureHandler = _interopRequireDefault(require("./IndiscreteGestureHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class RotationGestureHandler extends _IndiscreteGestureHandler.default { + get name() { + return 'rotate'; + } + + get NativeGestureClass() { + return _hammerjs.default.Rotate; + } + + transformNativeEvent({ + rotation, + velocity, + center + }) { + var _this$initialRotation; + + return { + rotation: (rotation - ((_this$initialRotation = this.initialRotation) !== null && _this$initialRotation !== void 0 ? _this$initialRotation : 0)) * _constants.DEG_RAD, + anchorX: center.x, + anchorY: center.y, + velocity + }; + } + +} + +var _default = RotationGestureHandler; +exports.default = _default; +//# sourceMappingURL=RotationGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js.map new file mode 100644 index 00000000..3b08030c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/RotationGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureHandler.ts"],"names":["RotationGestureHandler","IndiscreteGestureHandler","name","NativeGestureClass","Hammer","Rotate","transformNativeEvent","rotation","velocity","center","initialRotation","DEG_RAD","anchorX","x","anchorY","y"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;;;AAEA,MAAMA,sBAAN,SAAqCC,iCAArC,CAA8D;AACpD,MAAJC,IAAI,GAAG;AACT,WAAO,QAAP;AACD;;AAEqB,MAAlBC,kBAAkB,GAAG;AACvB,WAAOC,kBAAOC,MAAd;AACD;;AAEDC,EAAAA,oBAAoB,CAAC;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA;AAAtB,GAAD,EAAiD;AAAA;;AACnE,WAAO;AACLF,MAAAA,QAAQ,EAAE,CAACA,QAAQ,6BAAI,KAAKG,eAAT,yEAA4B,CAA5B,CAAT,IAA2CC,kBADhD;AAELC,MAAAA,OAAO,EAAEH,MAAM,CAACI,CAFX;AAGLC,MAAAA,OAAO,EAAEL,MAAM,CAACM,CAHX;AAILP,MAAAA;AAJK,KAAP;AAMD;;AAhB2D;;eAkB/CR,sB","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { DEG_RAD } from './constants';\nimport { HammerInputExt } from './GestureHandler';\nimport IndiscreteGestureHandler from './IndiscreteGestureHandler';\n\nclass RotationGestureHandler extends IndiscreteGestureHandler {\n get name() {\n return 'rotate';\n }\n\n get NativeGestureClass() {\n return Hammer.Rotate;\n }\n\n transformNativeEvent({ rotation, velocity, center }: HammerInputExt) {\n return {\n rotation: (rotation - (this.initialRotation ?? 0)) * DEG_RAD,\n anchorX: center.x,\n anchorY: center.y,\n velocity,\n };\n }\n}\nexport default RotationGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js new file mode 100644 index 00000000..d73a2012 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js @@ -0,0 +1,192 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _DiscreteGestureHandler = _interopRequireDefault(require("./DiscreteGestureHandler")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +class TapGestureHandler extends _DiscreteGestureHandler.default { + constructor(...args) { + super(...args); + + _defineProperty(this, "_shouldFireEndEvent", null); + + _defineProperty(this, "_timer", void 0); + + _defineProperty(this, "_multiTapTimer", void 0); + + _defineProperty(this, "onSuccessfulTap", ev => { + if (this._getPendingGestures().length) { + this._shouldFireEndEvent = ev; + return; + } + + if (ev.eventType === _hammerjs.default.INPUT_END) { + this.sendEvent({ ...ev, + eventType: _hammerjs.default.INPUT_MOVE + }); + } // When handler gets activated it will turn into State.END immediately. + + + this.sendEvent({ ...ev, + isFinal: true + }); + this.onGestureEnded(ev); + }); + } + + // TODO unused? + get name() { + return 'tap'; + } + + get NativeGestureClass() { + return _hammerjs.default.Tap; + } + + get maxDelayMs() { + // @ts-ignore TODO(TS) trace down config + return (0, _utils.isnan)(this.config.maxDelayMs) ? 300 : this.config.maxDelayMs; + } + + simulateCancelEvent(inputData) { + if (this.isGestureRunning) { + this.cancelEvent(inputData); + } + } + + onGestureActivated(ev) { + if (this.isGestureRunning) { + this.onSuccessfulTap(ev); + } + } + + onRawEvent(ev) { + super.onRawEvent(ev); // Attempt to create a touch-down event by checking if a valid tap hasn't started yet, then validating the input. + + if (!this.hasGestureFailed && !this.isGestureRunning && // Prevent multi-pointer events from misfiring. + !ev.isFinal) { + // Tap Gesture start event + const gesture = this.hammer.get(this.name); // @ts-ignore TODO(TS) trace down config + + if (gesture.options.enable(gesture, ev)) { + clearTimeout(this._multiTapTimer); + this.onStart(ev); + this.sendEvent(ev); + } + } + + if (ev.isFinal && ev.maxPointers > 1) { + setTimeout(() => { + // Handle case where one finger presses slightly + // after the first finger on a multi-tap event + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } + + if (this.hasGestureFailed) { + return; + } // Hammer doesn't send a `cancel` event for taps. + // Manually fail the event. + + + if (ev.isFinal) { + // Handle case where one finger presses slightly + // after the first finger on a multi-tap event + if (ev.maxPointers > 1) { + setTimeout(() => { + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } // Clear last timer + + + clearTimeout(this._timer); // Create time out for multi-taps. + + this._timer = setTimeout(() => { + this.hasGestureFailed = true; + this.cancelEvent(ev); + }, this.maxDelayMs); + } else if (!this.hasGestureFailed && !this.isGestureRunning) { + // Tap Gesture start event + const gesture = this.hammer.get(this.name); // @ts-ignore TODO(TS) trace down config + + if (gesture.options.enable(gesture, ev)) { + clearTimeout(this._multiTapTimer); + this.onStart(ev); + this.sendEvent(ev); + } + } + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + event: this.name, + // @ts-ignore TODO(TS) trace down config + taps: (0, _utils.isnan)(this.config.numberOfTaps) ? 1 : this.config.numberOfTaps, + interval: this.maxDelayMs, + time: // @ts-ignore TODO(TS) trace down config + (0, _utils.isnan)(this.config.maxDurationMs) || this.config.maxDurationMs == null ? 250 : // @ts-ignore TODO(TS) trace down config + this.config.maxDurationMs + }; + } + + updateGestureConfig({ + shouldCancelWhenOutside = true, + maxDeltaX = Number.NaN, + maxDeltaY = Number.NaN, + numberOfTaps = 1, + minDurationMs = 525, + maxDelayMs = Number.NaN, + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO possibly forgotten to use in updateGestureConfig? + maxDurationMs = Number.NaN, + maxDist = 2, + minPointers = 1, + maxPointers = 1, + ...props + }) { + return super.updateGestureConfig({ + shouldCancelWhenOutside, + numberOfTaps, + maxDeltaX, + maxDeltaY, + minDurationMs, + maxDelayMs, + maxDist, + minPointers, + maxPointers, + ...props + }); + } + + onGestureEnded(...props) { + clearTimeout(this._timer); // @ts-ignore TODO(TS) check how onGestureEnded works + + super.onGestureEnded(...props); + } + + onWaitingEnded(_gesture) { + if (this._shouldFireEndEvent) { + this.onSuccessfulTap(this._shouldFireEndEvent); + this._shouldFireEndEvent = null; + } + } + +} + +var _default = TapGestureHandler; +exports.default = _default; +//# sourceMappingURL=TapGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js.map new file mode 100644 index 00000000..9a87f346 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/TapGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TapGestureHandler.ts"],"names":["TapGestureHandler","DiscreteGestureHandler","ev","_getPendingGestures","length","_shouldFireEndEvent","eventType","Hammer","INPUT_END","sendEvent","INPUT_MOVE","isFinal","onGestureEnded","name","NativeGestureClass","Tap","maxDelayMs","config","simulateCancelEvent","inputData","isGestureRunning","cancelEvent","onGestureActivated","onSuccessfulTap","onRawEvent","hasGestureFailed","gesture","hammer","get","options","enable","clearTimeout","_multiTapTimer","onStart","maxPointers","setTimeout","_timer","getHammerConfig","event","taps","numberOfTaps","interval","time","maxDurationMs","updateGestureConfig","shouldCancelWhenOutside","maxDeltaX","Number","NaN","maxDeltaY","minDurationMs","maxDist","minPointers","props","onWaitingEnded","_gesture"],"mappings":"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","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport DiscreteGestureHandler from './DiscreteGestureHandler';\nimport { HammerInputExt } from './GestureHandler';\nimport { isnan } from './utils';\n\nclass TapGestureHandler extends DiscreteGestureHandler {\n private _shouldFireEndEvent: HammerInputExt | null = null;\n private _timer: any;\n private _multiTapTimer: any; // TODO unused?\n get name() {\n return 'tap';\n }\n\n get NativeGestureClass() {\n return Hammer.Tap;\n }\n\n get maxDelayMs() {\n // @ts-ignore TODO(TS) trace down config\n return isnan(this.config.maxDelayMs) ? 300 : this.config.maxDelayMs;\n }\n\n simulateCancelEvent(inputData: HammerInputExt) {\n if (this.isGestureRunning) {\n this.cancelEvent(inputData);\n }\n }\n\n onGestureActivated(ev: HammerInputExt) {\n if (this.isGestureRunning) {\n this.onSuccessfulTap(ev);\n }\n }\n\n onSuccessfulTap = (ev: HammerInputExt) => {\n if (this._getPendingGestures().length) {\n this._shouldFireEndEvent = ev;\n return;\n }\n if (ev.eventType === Hammer.INPUT_END) {\n this.sendEvent({ ...ev, eventType: Hammer.INPUT_MOVE });\n }\n // When handler gets activated it will turn into State.END immediately.\n this.sendEvent({ ...ev, isFinal: true });\n this.onGestureEnded(ev);\n };\n\n onRawEvent(ev: HammerInput) {\n super.onRawEvent(ev);\n\n // Attempt to create a touch-down event by checking if a valid tap hasn't started yet, then validating the input.\n if (\n !this.hasGestureFailed &&\n !this.isGestureRunning &&\n // Prevent multi-pointer events from misfiring.\n !ev.isFinal\n ) {\n // Tap Gesture start event\n const gesture = this.hammer!.get(this.name);\n // @ts-ignore TODO(TS) trace down config\n if (gesture.options.enable(gesture, ev)) {\n clearTimeout(this._multiTapTimer);\n\n this.onStart(ev);\n this.sendEvent(ev);\n }\n }\n if (ev.isFinal && ev.maxPointers > 1) {\n setTimeout(() => {\n // Handle case where one finger presses slightly\n // after the first finger on a multi-tap event\n if (this.isGestureRunning) {\n this.cancelEvent(ev);\n }\n });\n }\n\n if (this.hasGestureFailed) {\n return;\n }\n // Hammer doesn't send a `cancel` event for taps.\n // Manually fail the event.\n if (ev.isFinal) {\n // Handle case where one finger presses slightly\n // after the first finger on a multi-tap event\n if (ev.maxPointers > 1) {\n setTimeout(() => {\n if (this.isGestureRunning) {\n this.cancelEvent(ev);\n }\n });\n }\n\n // Clear last timer\n clearTimeout(this._timer);\n // Create time out for multi-taps.\n this._timer = setTimeout(() => {\n this.hasGestureFailed = true;\n this.cancelEvent(ev);\n }, this.maxDelayMs);\n } else if (!this.hasGestureFailed && !this.isGestureRunning) {\n // Tap Gesture start event\n const gesture = this.hammer!.get(this.name);\n // @ts-ignore TODO(TS) trace down config\n if (gesture.options.enable(gesture, ev)) {\n clearTimeout(this._multiTapTimer);\n\n this.onStart(ev);\n this.sendEvent(ev);\n }\n }\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n event: this.name,\n // @ts-ignore TODO(TS) trace down config\n taps: isnan(this.config.numberOfTaps) ? 1 : this.config.numberOfTaps,\n interval: this.maxDelayMs,\n time:\n // @ts-ignore TODO(TS) trace down config\n isnan(this.config.maxDurationMs) || this.config.maxDurationMs == null\n ? 250\n : // @ts-ignore TODO(TS) trace down config\n this.config.maxDurationMs,\n };\n }\n\n updateGestureConfig({\n shouldCancelWhenOutside = true,\n maxDeltaX = Number.NaN,\n maxDeltaY = Number.NaN,\n numberOfTaps = 1,\n minDurationMs = 525,\n maxDelayMs = Number.NaN,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO possibly forgotten to use in updateGestureConfig?\n maxDurationMs = Number.NaN,\n maxDist = 2,\n minPointers = 1,\n maxPointers = 1,\n ...props\n }) {\n return super.updateGestureConfig({\n shouldCancelWhenOutside,\n numberOfTaps,\n maxDeltaX,\n maxDeltaY,\n minDurationMs,\n maxDelayMs,\n maxDist,\n minPointers,\n maxPointers,\n ...props,\n });\n }\n\n onGestureEnded(...props: any) {\n clearTimeout(this._timer);\n // @ts-ignore TODO(TS) check how onGestureEnded works\n super.onGestureEnded(...props);\n }\n\n onWaitingEnded(_gesture: any) {\n if (this._shouldFireEndEvent) {\n this.onSuccessfulTap(this._shouldFireEndEvent);\n this._shouldFireEndEvent = null;\n }\n }\n}\nexport default TapGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js new file mode 100644 index 00000000..f9ee37a5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js @@ -0,0 +1,64 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.HammerDirectionNames = exports.HammerInputNames = exports.DirectionMap = exports.Direction = exports.EventMap = exports.DEG_RAD = exports.MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = exports.MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = exports.CONTENT_TOUCHES_QUICK_TAP_END_DELAY = exports.CONTENT_TOUCHES_DELAY = void 0; + +var _hammerjs = _interopRequireDefault(require("@egjs/hammerjs")); + +var _State = require("../State"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const CONTENT_TOUCHES_DELAY = 240; +exports.CONTENT_TOUCHES_DELAY = CONTENT_TOUCHES_DELAY; +const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50; +exports.CONTENT_TOUCHES_QUICK_TAP_END_DELAY = CONTENT_TOUCHES_QUICK_TAP_END_DELAY; +const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1; +exports.MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD; +const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7; +exports.MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD; +const DEG_RAD = Math.PI / 180; // Map Hammer values to RNGH + +exports.DEG_RAD = DEG_RAD; +const EventMap = { + [_hammerjs.default.INPUT_START]: _State.State.BEGAN, + [_hammerjs.default.INPUT_MOVE]: _State.State.ACTIVE, + [_hammerjs.default.INPUT_END]: _State.State.END, + [_hammerjs.default.INPUT_CANCEL]: _State.State.FAILED +}; +exports.EventMap = EventMap; +const Direction = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8 +}; +exports.Direction = Direction; +const DirectionMap = { + [_hammerjs.default.DIRECTION_RIGHT]: Direction.RIGHT, + [_hammerjs.default.DIRECTION_LEFT]: Direction.LEFT, + [_hammerjs.default.DIRECTION_UP]: Direction.UP, + [_hammerjs.default.DIRECTION_DOWN]: Direction.DOWN +}; +exports.DirectionMap = DirectionMap; +const HammerInputNames = { + [_hammerjs.default.INPUT_START]: 'START', + [_hammerjs.default.INPUT_MOVE]: 'MOVE', + [_hammerjs.default.INPUT_END]: 'END', + [_hammerjs.default.INPUT_CANCEL]: 'CANCEL' +}; +exports.HammerInputNames = HammerInputNames; +const HammerDirectionNames = { + [_hammerjs.default.DIRECTION_HORIZONTAL]: 'HORIZONTAL', + [_hammerjs.default.DIRECTION_UP]: 'UP', + [_hammerjs.default.DIRECTION_DOWN]: 'DOWN', + [_hammerjs.default.DIRECTION_VERTICAL]: 'VERTICAL', + [_hammerjs.default.DIRECTION_NONE]: 'NONE', + [_hammerjs.default.DIRECTION_ALL]: 'ALL', + [_hammerjs.default.DIRECTION_RIGHT]: 'RIGHT', + [_hammerjs.default.DIRECTION_LEFT]: 'LEFT' +}; +exports.HammerDirectionNames = HammerDirectionNames; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js.map new file mode 100644 index 00000000..b2bd4f2e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/constants.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["constants.ts"],"names":["CONTENT_TOUCHES_DELAY","CONTENT_TOUCHES_QUICK_TAP_END_DELAY","MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD","MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD","DEG_RAD","Math","PI","EventMap","Hammer","INPUT_START","State","BEGAN","INPUT_MOVE","ACTIVE","INPUT_END","END","INPUT_CANCEL","FAILED","Direction","RIGHT","LEFT","UP","DOWN","DirectionMap","DIRECTION_RIGHT","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_DOWN","HammerInputNames","HammerDirectionNames","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_NONE","DIRECTION_ALL"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAEO,MAAMA,qBAAqB,GAAG,GAA9B;;AACA,MAAMC,mCAAmC,GAAG,EAA5C;;AACA,MAAMC,oCAAoC,GAAG,GAA7C;;AACA,MAAMC,uCAAuC,GAAG,CAAhD;;AACA,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAL,GAAU,GAA1B,C,CAEP;;;AACO,MAAMC,QAAQ,GAAG;AACtB,GAACC,kBAAOC,WAAR,GAAsBC,aAAMC,KADN;AAEtB,GAACH,kBAAOI,UAAR,GAAqBF,aAAMG,MAFL;AAGtB,GAACL,kBAAOM,SAAR,GAAoBJ,aAAMK,GAHJ;AAItB,GAACP,kBAAOQ,YAAR,GAAuBN,aAAMO;AAJP,CAAjB;;AAOA,MAAMC,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,IAAI,EAAE,CAFiB;AAGvBC,EAAAA,EAAE,EAAE,CAHmB;AAIvBC,EAAAA,IAAI,EAAE;AAJiB,CAAlB;;AAOA,MAAMC,YAAY,GAAG;AAC1B,GAACf,kBAAOgB,eAAR,GAA0BN,SAAS,CAACC,KADV;AAE1B,GAACX,kBAAOiB,cAAR,GAAyBP,SAAS,CAACE,IAFT;AAG1B,GAACZ,kBAAOkB,YAAR,GAAuBR,SAAS,CAACG,EAHP;AAI1B,GAACb,kBAAOmB,cAAR,GAAyBT,SAAS,CAACI;AAJT,CAArB;;AAOA,MAAMM,gBAAgB,GAAG;AAC9B,GAACpB,kBAAOC,WAAR,GAAsB,OADQ;AAE9B,GAACD,kBAAOI,UAAR,GAAqB,MAFS;AAG9B,GAACJ,kBAAOM,SAAR,GAAoB,KAHU;AAI9B,GAACN,kBAAOQ,YAAR,GAAuB;AAJO,CAAzB;;AAMA,MAAMa,oBAAoB,GAAG;AAClC,GAACrB,kBAAOsB,oBAAR,GAA+B,YADG;AAElC,GAACtB,kBAAOkB,YAAR,GAAuB,IAFW;AAGlC,GAAClB,kBAAOmB,cAAR,GAAyB,MAHS;AAIlC,GAACnB,kBAAOuB,kBAAR,GAA6B,UAJK;AAKlC,GAACvB,kBAAOwB,cAAR,GAAyB,MALS;AAMlC,GAACxB,kBAAOyB,aAAR,GAAwB,KANU;AAOlC,GAACzB,kBAAOgB,eAAR,GAA0B,OAPQ;AAQlC,GAAChB,kBAAOiB,cAAR,GAAyB;AARS,CAA7B","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\n\nexport const CONTENT_TOUCHES_DELAY = 240;\nexport const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;\nexport const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;\nexport const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;\nexport const DEG_RAD = Math.PI / 180;\n\n// Map Hammer values to RNGH\nexport const EventMap = {\n [Hammer.INPUT_START]: State.BEGAN,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.FAILED,\n} as const;\n\nexport const Direction = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n};\n\nexport const DirectionMap = {\n [Hammer.DIRECTION_RIGHT]: Direction.RIGHT,\n [Hammer.DIRECTION_LEFT]: Direction.LEFT,\n [Hammer.DIRECTION_UP]: Direction.UP,\n [Hammer.DIRECTION_DOWN]: Direction.DOWN,\n};\n\nexport const HammerInputNames = {\n [Hammer.INPUT_START]: 'START',\n [Hammer.INPUT_MOVE]: 'MOVE',\n [Hammer.INPUT_END]: 'END',\n [Hammer.INPUT_CANCEL]: 'CANCEL',\n};\nexport const HammerDirectionNames = {\n [Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL',\n [Hammer.DIRECTION_UP]: 'UP',\n [Hammer.DIRECTION_DOWN]: 'DOWN',\n [Hammer.DIRECTION_VERTICAL]: 'VERTICAL',\n [Hammer.DIRECTION_NONE]: 'NONE',\n [Hammer.DIRECTION_ALL]: 'ALL',\n [Hammer.DIRECTION_RIGHT]: 'RIGHT',\n [Hammer.DIRECTION_LEFT]: 'LEFT',\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js new file mode 100644 index 00000000..15f4a5c4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fireAfterInterval = fireAfterInterval; +exports.TEST_MAX_IF_NOT_NAN = exports.VEC_LEN_SQ = exports.TEST_MIN_IF_NOT_NAN = exports.isValidNumber = exports.isnan = void 0; + +// TODO(TS) remove if not necessary after rewrite +const isnan = v => Number.isNaN(v); // TODO(TS) remove if not necessary after rewrite + + +exports.isnan = isnan; + +const isValidNumber = v => typeof v === 'number' && !Number.isNaN(v); + +exports.isValidNumber = isValidNumber; + +const TEST_MIN_IF_NOT_NAN = (value, limit) => !isnan(limit) && (limit < 0 && value <= limit || limit >= 0 && value >= limit); + +exports.TEST_MIN_IF_NOT_NAN = TEST_MIN_IF_NOT_NAN; + +const VEC_LEN_SQ = ({ + x = 0, + y = 0 +} = {}) => x * x + y * y; + +exports.VEC_LEN_SQ = VEC_LEN_SQ; + +const TEST_MAX_IF_NOT_NAN = (value, max) => !isnan(max) && (max < 0 && value < max || max >= 0 && value > max); + +exports.TEST_MAX_IF_NOT_NAN = TEST_MAX_IF_NOT_NAN; + +function fireAfterInterval(method, interval) { + if (!interval) { + method(); + return null; + } + + return setTimeout(() => method(), interval); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js.map new file mode 100644 index 00000000..ab905403 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/commonjs/web_hammer/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.ts"],"names":["isnan","v","Number","isNaN","isValidNumber","TEST_MIN_IF_NOT_NAN","value","limit","VEC_LEN_SQ","x","y","TEST_MAX_IF_NOT_NAN","max","fireAfterInterval","method","interval","setTimeout"],"mappings":";;;;;;;;AAAA;AACO,MAAMA,KAAK,GAAIC,CAAD,IAAgBC,MAAM,CAACC,KAAP,CAAaF,CAAb,CAA9B,C,CAEP;;;;;AACO,MAAMG,aAAa,GAAIH,CAAD,IAC3B,OAAOA,CAAP,KAAa,QAAb,IAAyB,CAACC,MAAM,CAACC,KAAP,CAAaF,CAAb,CADrB;;;;AAGA,MAAMI,mBAAmB,GAAG,CAACC,KAAD,EAAgBC,KAAhB,KACjC,CAACP,KAAK,CAACO,KAAD,CAAN,KACEA,KAAK,GAAG,CAAR,IAAaD,KAAK,IAAIC,KAAvB,IAAkCA,KAAK,IAAI,CAAT,IAAcD,KAAK,IAAIC,KAD1D,CADK;;;;AAGA,MAAMC,UAAU,GAAG,CAAC;AAAEC,EAAAA,CAAC,GAAG,CAAN;AAASC,EAAAA,CAAC,GAAG;AAAb,IAAmB,EAApB,KAA2BD,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAA1D;;;;AACA,MAAMC,mBAAmB,GAAG,CAACL,KAAD,EAAgBM,GAAhB,KACjC,CAACZ,KAAK,CAACY,GAAD,CAAN,KAAiBA,GAAG,GAAG,CAAN,IAAWN,KAAK,GAAGM,GAApB,IAA6BA,GAAG,IAAI,CAAP,IAAYN,KAAK,GAAGM,GAAjE,CADK;;;;AAGA,SAASC,iBAAT,CACLC,MADK,EAELC,QAFK,EAGL;AACA,MAAI,CAACA,QAAL,EAAe;AACbD,IAAAA,MAAM;AACN,WAAO,IAAP;AACD;;AACD,SAAOE,UAAU,CAAC,MAAMF,MAAM,EAAb,EAAiBC,QAAjB,CAAjB;AACD","sourcesContent":["// TODO(TS) remove if not necessary after rewrite\nexport const isnan = (v: unknown) => Number.isNaN(v);\n\n// TODO(TS) remove if not necessary after rewrite\nexport const isValidNumber = (v: unknown) =>\n typeof v === 'number' && !Number.isNaN(v);\n\nexport const TEST_MIN_IF_NOT_NAN = (value: number, limit: number): boolean =>\n !isnan(limit) &&\n ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit));\nexport const VEC_LEN_SQ = ({ x = 0, y = 0 } = {}) => x * x + y * y;\nexport const TEST_MAX_IF_NOT_NAN = (value: number, max: number) =>\n !isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max));\n\nexport function fireAfterInterval(\n method: () => void,\n interval?: number | boolean\n) {\n if (!interval) {\n method();\n return null;\n }\n return setTimeout(() => method(), interval as number);\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js new file mode 100644 index 00000000..10a2aa42 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js @@ -0,0 +1,7 @@ +export const ActionType = { + REANIMATED_WORKLET: 1, + NATIVE_ANIMATED_EVENT: 2, + JS_FUNCTION_OLD_API: 3, + JS_FUNCTION_NEW_API: 4 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +//# sourceMappingURL=ActionType.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js.map new file mode 100644 index 00000000..5a98e668 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/ActionType.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ActionType.ts"],"names":["ActionType","REANIMATED_WORKLET","NATIVE_ANIMATED_EVENT","JS_FUNCTION_OLD_API","JS_FUNCTION_NEW_API"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,kBAAkB,EAAE,CADI;AAExBC,EAAAA,qBAAqB,EAAE,CAFC;AAGxBC,EAAAA,mBAAmB,EAAE,CAHG;AAIxBC,EAAAA,mBAAmB,EAAE;AAJG,CAAnB,C,CAOP","sourcesContent":["export const ActionType = {\n REANIMATED_WORKLET: 1,\n NATIVE_ANIMATED_EVENT: 2,\n JS_FUNCTION_OLD_API: 3,\n JS_FUNCTION_NEW_API: 4,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type ActionType = typeof ActionType[keyof typeof ActionType];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js new file mode 100644 index 00000000..4856fd6e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js @@ -0,0 +1,7 @@ +export const Directions = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +//# sourceMappingURL=Directions.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js.map new file mode 100644 index 00000000..0d1a3e05 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/Directions.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["Directions.ts"],"names":["Directions","RIGHT","LEFT","UP","DOWN"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,KAAK,EAAE,CADiB;AAExBC,EAAAA,IAAI,EAAE,CAFkB;AAGxBC,EAAAA,EAAE,EAAE,CAHoB;AAIxBC,EAAAA,IAAI,EAAE;AAJkB,CAAnB,C,CAOP","sourcesContent":["export const Directions = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type Directions = typeof Directions[keyof typeof Directions];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js new file mode 100644 index 00000000..1fd3e045 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js @@ -0,0 +1,20 @@ +import { Platform } from 'react-native'; +let EXPERIMENTAL_WEB_IMPLEMENTATION = false; +let getWasCalled = false; +export function enableExperimentalWebImplementation(shouldEnable = true) { + if (Platform.OS !== 'web' || EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable) { + return; + } + + if (getWasCalled) { + console.error('Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'); + return; + } + + EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable; +} +export function isExperimentalWebImplementationEnabled() { + getWasCalled = true; + return EXPERIMENTAL_WEB_IMPLEMENTATION; +} +//# sourceMappingURL=EnableExperimentalWebImplementation.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js.map new file mode 100644 index 00000000..f7446b1b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/EnableExperimentalWebImplementation.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["EnableExperimentalWebImplementation.ts"],"names":["Platform","EXPERIMENTAL_WEB_IMPLEMENTATION","getWasCalled","enableExperimentalWebImplementation","shouldEnable","OS","console","error","isExperimentalWebImplementationEnabled"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AAEA,IAAIC,+BAA+B,GAAG,KAAtC;AACA,IAAIC,YAAY,GAAG,KAAnB;AAEA,OAAO,SAASC,mCAAT,CAA6CC,YAAY,GAAG,IAA5D,EAAwE;AAC7E,MACEJ,QAAQ,CAACK,EAAT,KAAgB,KAAhB,IACAJ,+BAA+B,KAAKG,YAFtC,EAGE;AACA;AACD;;AAED,MAAIF,YAAJ,EAAkB;AAChBI,IAAAA,OAAO,CAACC,KAAR,CACE,4KADF;AAGA;AACD;;AAEDN,EAAAA,+BAA+B,GAAGG,YAAlC;AACD;AAED,OAAO,SAASI,sCAAT,GAA2D;AAChEN,EAAAA,YAAY,GAAG,IAAf;AACA,SAAOD,+BAAP;AACD","sourcesContent":["import { Platform } from 'react-native';\n\nlet EXPERIMENTAL_WEB_IMPLEMENTATION = false;\nlet getWasCalled = false;\n\nexport function enableExperimentalWebImplementation(shouldEnable = true): void {\n if (\n Platform.OS !== 'web' ||\n EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable\n ) {\n return;\n }\n\n if (getWasCalled) {\n console.error(\n 'Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.'\n );\n return;\n }\n\n EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable;\n}\n\nexport function isExperimentalWebImplementationEnabled(): boolean {\n getWasCalled = true;\n return EXPERIMENTAL_WEB_IMPLEMENTATION;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js new file mode 100644 index 00000000..07b700d3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js @@ -0,0 +1,14 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +import * as React from 'react'; +import { requireNativeComponent } from 'react-native'; +import { maybeInitializeFabric } from './init'; +import { shouldUseCodegenNativeComponent } from './utils'; +const GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent() ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default : requireNativeComponent('RNGestureHandlerRootView'); +export default function GestureHandlerRootView(props) { + // try initialize fabric on the first render, at this point we can + // reliably check if fabric is enabled (the function contains a flag + // to make sure it's called only once) + maybeInitializeFabric(); + return /*#__PURE__*/React.createElement(GestureHandlerRootViewNativeComponent, props); +} +//# sourceMappingURL=GestureHandlerRootView.android.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js.map new file mode 100644 index 00000000..2e0dd7a2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.android.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerRootView.android.tsx"],"names":["React","requireNativeComponent","maybeInitializeFabric","shouldUseCodegenNativeComponent","GestureHandlerRootViewNativeComponent","require","default","GestureHandlerRootView","props"],"mappings":"AAAA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,sBAAT,QAAkD,cAAlD;AACA,SAASC,qBAAT,QAAsC,QAAtC;AACA,SAASC,+BAAT,QAAgD,SAAhD;AAEA,MAAMC,qCAAqC,GAAGD,+BAA+B,KACzEE,OAAO,CAAC,kDAAD,CAAP,CAA4DC,OADa,GAEzEL,sBAAsB,CAAC,0BAAD,CAF1B;AAOA,eAAe,SAASM,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACAN,EAAAA,qBAAqB;AAErB,sBAAO,oBAAC,qCAAD,EAA2CM,KAA3C,CAAP;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { requireNativeComponent, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\nimport { shouldUseCodegenNativeComponent } from './utils';\n\nconst GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent()\n ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default\n : requireNativeComponent('RNGestureHandlerRootView');\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return ;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js new file mode 100644 index 00000000..9799cb0e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { View } from 'react-native'; +import { maybeInitializeFabric } from './init'; +export default function GestureHandlerRootView(props) { + // try initialize fabric on the first render, at this point we can + // reliably check if fabric is enabled (the function contains a flag + // to make sure it's called only once) + maybeInitializeFabric(); + return /*#__PURE__*/React.createElement(View, props); +} +//# sourceMappingURL=GestureHandlerRootView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js.map new file mode 100644 index 00000000..2125b9b6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerRootView.tsx"],"names":["React","View","maybeInitializeFabric","GestureHandlerRootView","props"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,IAAT,QAAgC,cAAhC;AACA,SAASC,qBAAT,QAAsC,QAAtC;AAKA,eAAe,SAASC,sBAAT,CACbC,KADa,EAEb;AACA;AACA;AACA;AACAF,EAAAA,qBAAqB;AAErB,sBAAO,oBAAC,IAAD,EAAUE,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\nimport { maybeInitializeFabric } from './init';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n // try initialize fabric on the first render, at this point we can\n // reliably check if fabric is enabled (the function contains a flag\n // to make sure it's called only once)\n maybeInitializeFabric();\n\n return ;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js new file mode 100644 index 00000000..afb47116 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js @@ -0,0 +1,6 @@ +import * as React from 'react'; +import { View } from 'react-native'; +export default function GestureHandlerRootView(props) { + return /*#__PURE__*/React.createElement(View, props); +} +//# sourceMappingURL=GestureHandlerRootView.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js.map new file mode 100644 index 00000000..20ad9892 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/GestureHandlerRootView.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerRootView.web.tsx"],"names":["React","View","GestureHandlerRootView","props"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,IAAT,QAAgC,cAAhC;AAKA,eAAe,SAASC,sBAAT,CACbC,KADa,EAEb;AACA,sBAAO,oBAAC,IAAD,EAAUA,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n return ;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js new file mode 100644 index 00000000..9fc64f26 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js @@ -0,0 +1,5 @@ +var _NativeModules$Platfo; + +import { NativeModules, Platform } from 'react-native'; +export default (_NativeModules$Platfo = NativeModules === null || NativeModules === void 0 ? void 0 : NativeModules.PlatformConstants) !== null && _NativeModules$Platfo !== void 0 ? _NativeModules$Platfo : Platform.constants; +//# sourceMappingURL=PlatformConstants.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js.map new file mode 100644 index 00000000..dab8e807 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PlatformConstants.ts"],"names":["NativeModules","Platform","PlatformConstants","constants"],"mappings":";;AAAA,SAASA,aAAT,EAAwBC,QAAxB,QAAwC,cAAxC;AAMA,wCAAgBD,aAAhB,aAAgBA,aAAhB,uBAAgBA,aAAa,CAAEE,iBAA/B,yEACED,QAAQ,CAACE,SADX","sourcesContent":["import { NativeModules, Platform } from 'react-native';\n\ntype PlatformConstants = {\n forceTouchAvailable: boolean;\n};\n\nexport default (NativeModules?.PlatformConstants ??\n Platform.constants) as PlatformConstants;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js new file mode 100644 index 00000000..d48b0dad --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js @@ -0,0 +1,7 @@ +export default { + get forceTouchAvailable() { + return false; + } + +}; +//# sourceMappingURL=PlatformConstants.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js.map new file mode 100644 index 00000000..dd00b47d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/PlatformConstants.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PlatformConstants.web.ts"],"names":["forceTouchAvailable"],"mappings":"AAAA,eAAe;AACb,MAAIA,mBAAJ,GAA0B;AACxB,WAAO,KAAP;AACD;;AAHY,CAAf","sourcesContent":["export default {\n get forceTouchAvailable() {\n return false;\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js new file mode 100644 index 00000000..bae94257 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js @@ -0,0 +1,19 @@ +import { NativeModules } from 'react-native'; +import { tagMessage } from './utils'; +const { + RNGestureHandlerModule +} = NativeModules; + +if (RNGestureHandlerModule == null) { + console.error(tagMessage(`react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..). + + For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`.split('\n').map(line => line.trim()).join('\n'))); +} + +if (RNGestureHandlerModule && RNGestureHandlerModule.flushOperations === undefined) { + RNGestureHandlerModule.flushOperations = () => {// NO-OP if not defined + }; +} + +export default RNGestureHandlerModule; +//# sourceMappingURL=RNGestureHandlerModule.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js.map new file mode 100644 index 00000000..9ac15099 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.ts"],"names":["NativeModules","tagMessage","RNGestureHandlerModule","console","error","split","map","line","trim","join","flushOperations","undefined"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AAEA,SAASC,UAAT,QAA2B,SAA3B;AACA,MAAM;AAAEC,EAAAA;AAAF,IAA6BF,aAAnC;;AAEA,IAAIE,sBAAsB,IAAI,IAA9B,EAAoC;AAClCC,EAAAA,OAAO,CAACC,KAAR,CACEH,UAAU,CACP;AACP;AACA,gIAFM,CAGGI,KAHH,CAGS,IAHT,EAIGC,GAJH,CAIQC,IAAD,IAAUA,IAAI,CAACC,IAAL,EAJjB,EAKGC,IALH,CAKQ,IALR,CADQ,CADZ;AAUD;;AAED,IACEP,sBAAsB,IACtBA,sBAAsB,CAACQ,eAAvB,KAA2CC,SAF7C,EAGE;AACAT,EAAAA,sBAAsB,CAACQ,eAAvB,GAAyC,MAAM,CAC7C;AACD,GAFD;AAGD;;AAwBD,eAAeR,sBAAf","sourcesContent":["import { NativeModules } from 'react-native';\nimport { ActionType } from './ActionType';\nimport { tagMessage } from './utils';\nconst { RNGestureHandlerModule } = NativeModules;\n\nif (RNGestureHandlerModule == null) {\n console.error(\n tagMessage(\n `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).\n\n For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`\n .split('\\n')\n .map((line) => line.trim())\n .join('\\n')\n )\n );\n}\n\nif (\n RNGestureHandlerModule &&\n RNGestureHandlerModule.flushOperations === undefined\n) {\n RNGestureHandlerModule.flushOperations = () => {\n // NO-OP if not defined\n };\n}\n\nexport type RNGestureHandlerModuleProps = {\n handleSetJSResponder: (tag: number, blockNativeResponder: boolean) => void;\n handleClearJSResponder: () => void;\n createGestureHandler: (\n handlerName: string,\n handlerTag: number,\n config: Readonly>\n ) => void;\n attachGestureHandler: (\n handlerTag: number,\n newView: number,\n actionType: ActionType\n ) => void;\n updateGestureHandler: (\n handlerTag: number,\n newConfig: Readonly>\n ) => void;\n dropGestureHandler: (handlerTag: number) => void;\n install: () => void;\n flushOperations: () => void;\n};\n\nexport default RNGestureHandlerModule as RNGestureHandlerModuleProps;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js new file mode 100644 index 00000000..e569d38b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js @@ -0,0 +1,109 @@ +import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation'; //GestureHandlers + +import InteractionManager from './web/tools/InteractionManager'; +import NodeManager from './web/tools/NodeManager'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; //Hammer Handlers + +import * as HammerNodeManager from './web_hammer/NodeManager'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +export const Gestures = { + NativeViewGestureHandler, + PanGestureHandler, + TapGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + ManualGestureHandler +}; +export const HammerGestures = { + NativeViewGestureHandler: HammerNativeViewGestureHandler, + PanGestureHandler: HammerPanGestureHandler, + TapGestureHandler: HammerTapGestureHandler, + LongPressGestureHandler: HammerLongPressGestureHandler, + PinchGestureHandler: HammerPinchGestureHandler, + RotationGestureHandler: HammerRotationGestureHandler, + FlingGestureHandler: HammerFlingGestureHandler +}; +export default { + handleSetJSResponder(_tag, _blockNativeResponder) {// NO-OP + }, + + handleClearJSResponder() {// NO-OP + }, + + createGestureHandler(handlerName, handlerTag, config) { + if (isExperimentalWebImplementationEnabled()) { + if (!(handlerName in Gestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } + + const GestureClass = Gestures[handlerName]; + NodeManager.createGestureHandler(handlerTag, new GestureClass()); + InteractionManager.getInstance().configureInteractions(NodeManager.getHandler(handlerTag), config); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + + const GestureClass = HammerGestures[handlerName]; // eslint-disable-next-line @typescript-eslint/no-unsafe-call + + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config); + }, + + attachGestureHandler(handlerTag, newView, _actionType, propsRef) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).init(newView, propsRef); + } else { + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + + updateGestureHandler(handlerTag, newConfig) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + InteractionManager.getInstance().configureInteractions(NodeManager.getHandler(handlerTag), newConfig); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + + getGestureHandlerNode(handlerTag) { + if (isExperimentalWebImplementationEnabled()) { + return NodeManager.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + + dropGestureHandler(handlerTag) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {} + +}; +//# sourceMappingURL=RNGestureHandlerModule.macos.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js.map new file mode 100644 index 00000000..031dd2bd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.macos.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.macos.ts"],"names":["isExperimentalWebImplementationEnabled","InteractionManager","NodeManager","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","NativeViewGestureHandler","ManualGestureHandler","HammerNodeManager","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","Gestures","HammerGestures","handleSetJSResponder","_tag","_blockNativeResponder","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","getInstance","configureInteractions","getHandler","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {\n // NO-OP\n },\n handleClearJSResponder() {\n // NO-OP\n },\n createGestureHandler(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n config as unknown as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, config as unknown as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n newView: number,\n _actionType: ActionType,\n propsRef: React.RefObject\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js new file mode 100644 index 00000000..d18d2418 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js @@ -0,0 +1,119 @@ +import React from 'react'; +import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation'; //GestureHandlers + +import InteractionManager from './web/tools/InteractionManager'; +import NodeManager from './web/tools/NodeManager'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; //Hammer Handlers + +import * as HammerNodeManager from './web_hammer/NodeManager'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +export const Gestures = { + NativeViewGestureHandler, + PanGestureHandler, + TapGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + ManualGestureHandler +}; +export const HammerGestures = { + NativeViewGestureHandler: HammerNativeViewGestureHandler, + PanGestureHandler: HammerPanGestureHandler, + TapGestureHandler: HammerTapGestureHandler, + LongPressGestureHandler: HammerLongPressGestureHandler, + PinchGestureHandler: HammerPinchGestureHandler, + RotationGestureHandler: HammerRotationGestureHandler, + FlingGestureHandler: HammerFlingGestureHandler +}; +export default { + handleSetJSResponder(tag, blockNativeResponder) { + console.warn('handleSetJSResponder: ', tag, blockNativeResponder); + }, + + handleClearJSResponder() { + console.warn('handleClearJSResponder: '); + }, + + createGestureHandler(handlerName, handlerTag, config) { + if (isExperimentalWebImplementationEnabled()) { + if (!(handlerName in Gestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } + + const GestureClass = Gestures[handlerName]; + NodeManager.createGestureHandler(handlerTag, new GestureClass()); + InteractionManager.getInstance().configureInteractions(NodeManager.getHandler(handlerTag), config); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + + const GestureClass = HammerGestures[handlerName]; // eslint-disable-next-line @typescript-eslint/no-unsafe-call + + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config); + }, + + attachGestureHandler(handlerTag, // eslint-disable-next-line @typescript-eslint/no-explicit-any + newView, _actionType, propsRef) { + if (!(newView instanceof HTMLElement || newView instanceof React.Component)) { + return; + } + + if (isExperimentalWebImplementationEnabled()) { + //@ts-ignore Types should be HTMLElement or React.Component + NodeManager.getHandler(handlerTag).init(newView, propsRef); + } else { + //@ts-ignore Types should be HTMLElement or React.Component + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + + updateGestureHandler(handlerTag, newConfig) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + InteractionManager.getInstance().configureInteractions(NodeManager.getHandler(handlerTag), newConfig); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + + getGestureHandlerNode(handlerTag) { + if (isExperimentalWebImplementationEnabled()) { + return NodeManager.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + + dropGestureHandler(handlerTag) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {} + +}; +//# sourceMappingURL=RNGestureHandlerModule.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js.map new file mode 100644 index 00000000..ab88ed88 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.web.ts"],"names":["React","isExperimentalWebImplementationEnabled","InteractionManager","NodeManager","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","NativeViewGestureHandler","ManualGestureHandler","HammerNodeManager","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","Gestures","HammerGestures","handleSetJSResponder","tag","blockNativeResponder","console","warn","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","getInstance","configureInteractions","getHandler","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","HTMLElement","Component","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(tag: number, blockNativeResponder: boolean) {\n console.warn('handleSetJSResponder: ', tag, blockNativeResponder);\n },\n handleClearJSResponder() {\n console.warn('handleClearJSResponder: ');\n },\n createGestureHandler(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n config as unknown as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, config as unknown as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newView: any,\n _actionType: ActionType,\n propsRef: React.RefObject\n ) {\n if (\n !(newView instanceof HTMLElement || newView instanceof React.Component)\n ) {\n return;\n }\n\n if (isExperimentalWebImplementationEnabled()) {\n //@ts-ignore Types should be HTMLElement or React.Component\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n //@ts-ignore Types should be HTMLElement or React.Component\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js new file mode 100644 index 00000000..5b5c0263 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js @@ -0,0 +1,117 @@ +import React from 'react'; +import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation'; //GestureHandlers + +import InteractionManager from './web/tools/InteractionManager'; +import NodeManager from './web/tools/NodeManager'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; //Hammer Handlers + +import * as HammerNodeManager from './web_hammer/NodeManager'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +export const Gestures = { + NativeViewGestureHandler, + PanGestureHandler, + TapGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + ManualGestureHandler +}; +export const HammerGestures = { + NativeViewGestureHandler: HammerNativeViewGestureHandler, + PanGestureHandler: HammerPanGestureHandler, + TapGestureHandler: HammerTapGestureHandler, + LongPressGestureHandler: HammerLongPressGestureHandler, + PinchGestureHandler: HammerPinchGestureHandler, + RotationGestureHandler: HammerRotationGestureHandler, + FlingGestureHandler: HammerFlingGestureHandler +}; +export default { + handleSetJSResponder(_tag, _blockNativeResponder) {// NO-OP + }, + + handleClearJSResponder() {// NO-OP + }, + + createGestureHandler(handlerName, handlerTag, config) { + if (isExperimentalWebImplementationEnabled()) { + if (!(handlerName in Gestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } + + const GestureClass = Gestures[handlerName]; + NodeManager.createGestureHandler(handlerTag, new GestureClass()); + InteractionManager.getInstance().configureInteractions(NodeManager.getHandler(handlerTag), config); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error(`react-native-gesture-handler: ${handlerName} is not supported on web.`); + } // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + + const GestureClass = HammerGestures[handlerName]; // eslint-disable-next-line @typescript-eslint/no-unsafe-call + + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config); + }, + + attachGestureHandler(handlerTag, // eslint-disable-next-line @typescript-eslint/no-explicit-any + newView, _actionType, propsRef) { + if (!(newView instanceof HTMLElement || newView instanceof React.Component)) { + return; + } + + if (isExperimentalWebImplementationEnabled()) { + //@ts-ignore Types should be HTMLElement or React.Component + NodeManager.getHandler(handlerTag).init(newView, propsRef); + } else { + //@ts-ignore Types should be HTMLElement or React.Component + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + + updateGestureHandler(handlerTag, newConfig) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + InteractionManager.getInstance().configureInteractions(NodeManager.getHandler(handlerTag), newConfig); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + + getGestureHandlerNode(handlerTag) { + if (isExperimentalWebImplementationEnabled()) { + return NodeManager.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + + dropGestureHandler(handlerTag) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {} + +}; +//# sourceMappingURL=RNGestureHandlerModule.windows.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js.map new file mode 100644 index 00000000..3a019a83 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNGestureHandlerModule.windows.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerModule.windows.ts"],"names":["React","isExperimentalWebImplementationEnabled","InteractionManager","NodeManager","PanGestureHandler","TapGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","NativeViewGestureHandler","ManualGestureHandler","HammerNodeManager","HammerNativeViewGestureHandler","HammerPanGestureHandler","HammerTapGestureHandler","HammerLongPressGestureHandler","HammerPinchGestureHandler","HammerRotationGestureHandler","HammerFlingGestureHandler","Gestures","HammerGestures","handleSetJSResponder","_tag","_blockNativeResponder","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","getInstance","configureInteractions","getHandler","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","HTMLElement","Component","init","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler","flushOperations"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ActionType } from './ActionType';\nimport { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';\n\n//GestureHandlers\nimport InteractionManager from './web/tools/InteractionManager';\nimport NodeManager from './web/tools/NodeManager';\nimport PanGestureHandler from './web/handlers/PanGestureHandler';\nimport TapGestureHandler from './web/handlers/TapGestureHandler';\nimport LongPressGestureHandler from './web/handlers/LongPressGestureHandler';\nimport PinchGestureHandler from './web/handlers/PinchGestureHandler';\nimport RotationGestureHandler from './web/handlers/RotationGestureHandler';\nimport FlingGestureHandler from './web/handlers/FlingGestureHandler';\nimport NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';\nimport ManualGestureHandler from './web/handlers/ManualGestureHandler';\n\n//Hammer Handlers\nimport * as HammerNodeManager from './web_hammer/NodeManager';\nimport HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';\nimport HammerPanGestureHandler from './web_hammer/PanGestureHandler';\nimport HammerTapGestureHandler from './web_hammer/TapGestureHandler';\nimport HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';\nimport HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';\nimport HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';\nimport HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';\nimport { Config } from './web/interfaces';\n\nexport const Gestures = {\n NativeViewGestureHandler,\n PanGestureHandler,\n TapGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n ManualGestureHandler,\n};\n\nexport const HammerGestures = {\n NativeViewGestureHandler: HammerNativeViewGestureHandler,\n PanGestureHandler: HammerPanGestureHandler,\n TapGestureHandler: HammerTapGestureHandler,\n LongPressGestureHandler: HammerLongPressGestureHandler,\n PinchGestureHandler: HammerPinchGestureHandler,\n RotationGestureHandler: HammerRotationGestureHandler,\n FlingGestureHandler: HammerFlingGestureHandler,\n};\n\nexport default {\n handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {\n // NO-OP\n },\n handleClearJSResponder() {\n // NO-OP\n },\n createGestureHandler(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n if (isExperimentalWebImplementationEnabled()) {\n if (!(handlerName in Gestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n config as unknown as Config\n );\n } else {\n if (!(handlerName in HammerGestures)) {\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n }\n\n // @ts-ignore If it doesn't exist, the error is thrown\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const GestureClass = HammerGestures[handlerName];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());\n }\n\n this.updateGestureHandler(handlerTag, config as unknown as Config);\n },\n attachGestureHandler(\n handlerTag: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newView: any,\n _actionType: ActionType,\n propsRef: React.RefObject\n ) {\n if (\n !(newView instanceof HTMLElement || newView instanceof React.Component)\n ) {\n return;\n }\n\n if (isExperimentalWebImplementationEnabled()) {\n //@ts-ignore Types should be HTMLElement or React.Component\n NodeManager.getHandler(handlerTag).init(newView, propsRef);\n } else {\n //@ts-ignore Types should be HTMLElement or React.Component\n HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);\n }\n },\n updateGestureHandler(handlerTag: number, newConfig: Config) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n\n InteractionManager.getInstance().configureInteractions(\n NodeManager.getHandler(handlerTag),\n newConfig\n );\n } else {\n HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n }\n },\n getGestureHandlerNode(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n return NodeManager.getHandler(handlerTag);\n } else {\n return HammerNodeManager.getHandler(handlerTag);\n }\n },\n dropGestureHandler(handlerTag: number) {\n if (isExperimentalWebImplementationEnabled()) {\n NodeManager.dropGestureHandler(handlerTag);\n } else {\n HammerNodeManager.dropGestureHandler(handlerTag);\n }\n },\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n flushOperations() {},\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js new file mode 100644 index 00000000..3e6e45cd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative'; +//# sourceMappingURL=RNRenderer.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js.map new file mode 100644 index 00000000..ee2d6aba --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNRenderer.ts"],"names":["default","RNRenderer"],"mappings":"AAAA;AACA;AACA,SAASA,OAAO,IAAIC,UAApB,QAAsC,mDAAtC","sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nexport { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js new file mode 100644 index 00000000..6927b95a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js @@ -0,0 +1,4 @@ +export const RNRenderer = { + findHostInstance_DEPRECATED: _ref => null +}; +//# sourceMappingURL=RNRenderer.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js.map new file mode 100644 index 00000000..07f8afdd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/RNRenderer.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNRenderer.web.ts"],"names":["RNRenderer","findHostInstance_DEPRECATED","_ref"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,2BAA2B,EAAGC,IAAD,IAAe;AADpB,CAAnB","sourcesContent":["export const RNRenderer = {\n findHostInstance_DEPRECATED: (_ref: any) => null,\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js new file mode 100644 index 00000000..3b1605de --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js @@ -0,0 +1,10 @@ +// TODO use State from RNModule +export const State = { + UNDETERMINED: 0, + FAILED: 1, + BEGAN: 2, + CANCELLED: 3, + ACTIVE: 4, + END: 5 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +//# sourceMappingURL=State.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js.map new file mode 100644 index 00000000..26d79d35 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/State.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["State.ts"],"names":["State","UNDETERMINED","FAILED","BEGAN","CANCELLED","ACTIVE","END"],"mappings":"AAAA;AAEA,OAAO,MAAMA,KAAK,GAAG;AACnBC,EAAAA,YAAY,EAAE,CADK;AAEnBC,EAAAA,MAAM,EAAE,CAFW;AAGnBC,EAAAA,KAAK,EAAE,CAHY;AAInBC,EAAAA,SAAS,EAAE,CAJQ;AAKnBC,EAAAA,MAAM,EAAE,CALW;AAMnBC,EAAAA,GAAG,EAAE;AANc,CAAd,C,CASP","sourcesContent":["// TODO use State from RNModule\n\nexport const State = {\n UNDETERMINED: 0,\n FAILED: 1,\n BEGAN: 2,\n CANCELLED: 3,\n ACTIVE: 4,\n END: 5,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type State = typeof State[keyof typeof State];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js new file mode 100644 index 00000000..6f8af642 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js @@ -0,0 +1,8 @@ +export const TouchEventType = { + UNDETERMINED: 0, + TOUCHES_DOWN: 1, + TOUCHES_MOVE: 2, + TOUCHES_UP: 3, + TOUCHES_CANCELLED: 4 +}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +//# sourceMappingURL=TouchEventType.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js.map new file mode 100644 index 00000000..a1c6c3cb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/TouchEventType.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchEventType.ts"],"names":["TouchEventType","UNDETERMINED","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED"],"mappings":"AAAA,OAAO,MAAMA,cAAc,GAAG;AAC5BC,EAAAA,YAAY,EAAE,CADc;AAE5BC,EAAAA,YAAY,EAAE,CAFc;AAG5BC,EAAAA,YAAY,EAAE,CAHc;AAI5BC,EAAAA,UAAU,EAAE,CAJgB;AAK5BC,EAAAA,iBAAiB,EAAE;AALS,CAAvB,C,CAQP","sourcesContent":["export const TouchEventType = {\n UNDETERMINED: 0,\n TOUCHES_DOWN: 1,\n TOUCHES_MOVE: 2,\n TOUCHES_UP: 3,\n TOUCHES_CANCELLED: 4,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type TouchEventType = typeof TouchEventType[keyof typeof TouchEventType];\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js new file mode 100644 index 00000000..d83e2840 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js @@ -0,0 +1,550 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// This component is based on RN's DrawerLayoutAndroid API +// +// It perhaps deserves to be put in a separate repo, but since it relies on +// react-native-gesture-handler library which isn't very popular at the moment I +// decided to keep it here for the time being. It will allow us to move faster +// and fix issues that may arise in gesture handler library that could be found +// when using the drawer component +import * as React from 'react'; +import { Component } from 'react'; +import invariant from 'invariant'; +import { Animated, StyleSheet, View, Keyboard, StatusBar, I18nManager } from 'react-native'; +import { PanGestureHandler } from '../handlers/PanGestureHandler'; +import { TapGestureHandler } from '../handlers/TapGestureHandler'; +import { State } from '../State'; +const DRAG_TOSS = 0.05; +const IDLE = 'Idle'; +const DRAGGING = 'Dragging'; +const SETTLING = 'Settling'; +export default class DrawerLayout extends Component { + constructor(_props) { + super(_props); + + _defineProperty(this, "openValue", void 0); + + _defineProperty(this, "onGestureEvent", void 0); + + _defineProperty(this, "accessibilityIsModalView", /*#__PURE__*/React.createRef()); + + _defineProperty(this, "pointerEventsView", /*#__PURE__*/React.createRef()); + + _defineProperty(this, "panGestureHandler", /*#__PURE__*/React.createRef()); + + _defineProperty(this, "drawerShown", false); + + _defineProperty(this, "updateAnimatedEvent", (props, state) => { + // Event definition is based on + const { + drawerPosition, + drawerWidth, + drawerType + } = props; + const { + dragX: dragXValue, + touchX: touchXValue, + drawerTranslation, + containerWidth + } = state; + let dragX = dragXValue; + let touchX = touchXValue; + + if (drawerPosition !== 'left') { + // Most of the code is written in a way to handle left-side drawer. In + // order to handle right-side drawer the only thing we need to do is to + // reverse events coming from gesture handler in a way they emulate + // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is + // calulcated by subtracing real touchX from the width of the container + // (such that when touch happens at the right edge the value is simply 0) + dragX = Animated.multiply(new Animated.Value(-1), dragXValue); // TODO(TS): (for all "as" in this file) make sure we can map this + + touchX = Animated.add(new Animated.Value(containerWidth), Animated.multiply(new Animated.Value(-1), touchXValue)); // TODO(TS): make sure we can map this; + + touchXValue.setValue(containerWidth); + } else { + touchXValue.setValue(0); + } // While closing the drawer when user starts gesture outside of its area (in greyed + // out part of the window), we want the drawer to follow only once finger reaches the + // edge of the drawer. + // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by + // dots. The touch gesture starts at '*' and moves left, touch path is indicated by + // an arrow pointing left + // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+ + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // +---------------+ +---------------+ +---------------+ +---------------+ + // + // For the above to work properly we define animated value that will keep + // start position of the gesture. Then we use that value to calculate how + // much we need to subtract from the dragX. If the gesture started on the + // greyed out area we take the distance from the edge of the drawer to the + // start position. Otherwise we don't subtract at all and the drawer be + // pulled back as soon as you start the pan. + // + // This is used only when drawerType is "front" + // + + + let translationX = dragX; + + if (drawerType === 'front') { + const startPositionX = Animated.add(touchX, Animated.multiply(new Animated.Value(-1), dragX)); + const dragOffsetFromOnStartPosition = startPositionX.interpolate({ + inputRange: [drawerWidth - 1, drawerWidth, drawerWidth + 1], + outputRange: [0, 0, 1] + }); + translationX = Animated.add(dragX, dragOffsetFromOnStartPosition); // TODO: as above + } + + this.openValue = Animated.add(translationX, drawerTranslation).interpolate({ + inputRange: [0, drawerWidth], + outputRange: [0, 1], + extrapolate: 'clamp' + }); + const gestureOptions = { + useNativeDriver: props.useNativeAnimations + }; + + if (this.props.onDrawerSlide) { + gestureOptions.listener = ev => { + var _this$props$onDrawerS, _this$props; + + const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX)); + const position = translationX / this.state.containerWidth; + (_this$props$onDrawerS = (_this$props = this.props).onDrawerSlide) === null || _this$props$onDrawerS === void 0 ? void 0 : _this$props$onDrawerS.call(_this$props, position); + }; + } + + this.onGestureEvent = Animated.event([{ + nativeEvent: { + translationX: dragXValue, + x: touchXValue + } + }], gestureOptions); + }); + + _defineProperty(this, "handleContainerLayout", ({ + nativeEvent + }) => { + this.setState({ + containerWidth: nativeEvent.layout.width + }); + }); + + _defineProperty(this, "emitStateChanged", (newState, drawerWillShow) => { + var _this$props$onDrawerS2, _this$props2; + + (_this$props$onDrawerS2 = (_this$props2 = this.props).onDrawerStateChanged) === null || _this$props$onDrawerS2 === void 0 ? void 0 : _this$props$onDrawerS2.call(_this$props2, newState, drawerWillShow); + }); + + _defineProperty(this, "openingHandlerStateChange", ({ + nativeEvent + }) => { + if (nativeEvent.oldState === State.ACTIVE) { + this.handleRelease({ + nativeEvent + }); + } else if (nativeEvent.state === State.ACTIVE) { + this.emitStateChanged(DRAGGING, false); + this.setState({ + drawerState: DRAGGING + }); + + if (this.props.keyboardDismissMode === 'on-drag') { + Keyboard.dismiss(); + } + + if (this.props.hideStatusBar) { + StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide'); + } + } + }); + + _defineProperty(this, "onTapHandlerStateChange", ({ + nativeEvent + }) => { + if (this.drawerShown && nativeEvent.oldState === State.ACTIVE && this.props.drawerLockMode !== 'locked-open') { + this.closeDrawer(); + } + }); + + _defineProperty(this, "handleRelease", ({ + nativeEvent + }) => { + const { + drawerWidth, + drawerPosition, + drawerType + } = this.props; + const { + containerWidth + } = this.state; + let { + translationX: dragX, + velocityX, + x: touchX + } = nativeEvent; + + if (drawerPosition !== 'left') { + // See description in _updateAnimatedEvent about why events are flipped + // for right-side drawer + dragX = -dragX; + touchX = containerWidth - touchX; + velocityX = -velocityX; + } + + const gestureStartX = touchX - dragX; + let dragOffsetBasedOnStart = 0; + + if (drawerType === 'front') { + dragOffsetBasedOnStart = gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0; + } + + const startOffsetX = dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth : 0); + const projOffsetX = startOffsetX + DRAG_TOSS * velocityX; + const shouldOpen = projOffsetX > drawerWidth / 2; + + if (shouldOpen) { + this.animateDrawer(startOffsetX, drawerWidth, velocityX); + } else { + this.animateDrawer(startOffsetX, 0, velocityX); + } + }); + + _defineProperty(this, "updateShowing", showing => { + var _this$accessibilityIs, _this$pointerEventsVi, _this$panGestureHandl; + + this.drawerShown = showing; + (_this$accessibilityIs = this.accessibilityIsModalView.current) === null || _this$accessibilityIs === void 0 ? void 0 : _this$accessibilityIs.setNativeProps({ + accessibilityViewIsModal: showing + }); + (_this$pointerEventsVi = this.pointerEventsView.current) === null || _this$pointerEventsVi === void 0 ? void 0 : _this$pointerEventsVi.setNativeProps({ + pointerEvents: showing ? 'auto' : 'none' + }); + const { + drawerPosition, + minSwipeDistance, + edgeWidth + } = this.props; + const fromLeft = drawerPosition === 'left'; // gestureOrientation is 1 if the expected gesture is from left to right and + // -1 otherwise e.g. when drawer is on the left and is closed we expect left + // to right gesture, thus orientation will be 1. + + const gestureOrientation = (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1); // When drawer is closed we want the hitSlop to be horizontally shorter than + // the container size by the value of SLOP. This will make it only activate + // when gesture happens not further than SLOP away from the edge + + const hitSlop = fromLeft ? { + left: 0, + width: showing ? undefined : edgeWidth + } : { + right: 0, + width: showing ? undefined : edgeWidth + }; // @ts-ignore internal API, maybe could be fixed in handler types + + (_this$panGestureHandl = this.panGestureHandler.current) === null || _this$panGestureHandl === void 0 ? void 0 : _this$panGestureHandl.setNativeProps({ + hitSlop, + activeOffsetX: gestureOrientation * minSwipeDistance + }); + }); + + _defineProperty(this, "animateDrawer", (fromValue, toValue, velocity, speed) => { + this.state.dragX.setValue(0); + this.state.touchX.setValue(this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth); + + if (fromValue != null) { + let nextFramePosition = fromValue; + + if (this.props.useNativeAnimations) { + // When using native driver, we predict the next position of the + // animation because it takes one frame of a roundtrip to pass RELEASE + // event from native driver to JS before we can start animating. Without + // it, it is more noticable that the frame is dropped. + if (fromValue < toValue && velocity > 0) { + nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue); + } else if (fromValue > toValue && velocity < 0) { + nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue); + } + } + + this.state.drawerTranslation.setValue(nextFramePosition); + } + + const willShow = toValue !== 0; + this.updateShowing(willShow); + this.emitStateChanged(SETTLING, willShow); + this.setState({ + drawerState: SETTLING + }); + + if (this.props.hideStatusBar) { + StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide'); + } + + Animated.spring(this.state.drawerTranslation, { + velocity, + bounciness: 0, + toValue, + useNativeDriver: this.props.useNativeAnimations, + speed: speed !== null && speed !== void 0 ? speed : undefined + }).start(({ + finished + }) => { + if (finished) { + this.emitStateChanged(IDLE, willShow); + this.setState({ + drawerOpened: willShow + }); + + if (this.state.drawerState !== DRAGGING) { + // it's possilbe that user started drag while the drawer + // was settling, don't override state in this case + this.setState({ + drawerState: IDLE + }); + } + + if (willShow) { + var _this$props$onDrawerO, _this$props3; + + (_this$props$onDrawerO = (_this$props3 = this.props).onDrawerOpen) === null || _this$props$onDrawerO === void 0 ? void 0 : _this$props$onDrawerO.call(_this$props3); + } else { + var _this$props$onDrawerC, _this$props4; + + (_this$props$onDrawerC = (_this$props4 = this.props).onDrawerClose) === null || _this$props$onDrawerC === void 0 ? void 0 : _this$props$onDrawerC.call(_this$props4); + } + } + }); + }); + + _defineProperty(this, "openDrawer", (options = {}) => { + this.animateDrawer( // TODO: decide if it should be null or undefined is the proper value + undefined, this.props.drawerWidth, options.velocity ? options.velocity : 0, options.speed); // We need to force the update, otherwise the overlay is not rerendered and + // it would not be clickable + + this.forceUpdate(); + }); + + _defineProperty(this, "closeDrawer", (options = {}) => { + // TODO: decide if it should be null or undefined is the proper value + this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0, options.speed); // We need to force the update, otherwise the overlay is not rerendered and + // it would be still clickable + + this.forceUpdate(); + }); + + _defineProperty(this, "renderOverlay", () => { + /* Overlay styles */ + invariant(this.openValue, 'should be set'); + let overlayOpacity; + + if (this.state.drawerState !== IDLE) { + overlayOpacity = this.openValue; + } else { + overlayOpacity = this.state.drawerOpened ? 1 : 0; + } + + const dynamicOverlayStyles = { + opacity: overlayOpacity, + backgroundColor: this.props.overlayColor + }; + return /*#__PURE__*/React.createElement(TapGestureHandler, { + onHandlerStateChange: this.onTapHandlerStateChange + }, /*#__PURE__*/React.createElement(Animated.View, { + pointerEvents: this.drawerShown ? 'auto' : 'none', + ref: this.pointerEventsView, + style: [styles.overlay, dynamicOverlayStyles] + })); + }); + + _defineProperty(this, "renderDrawer", () => { + const { + drawerBackgroundColor, + drawerWidth, + drawerPosition, + drawerType, + drawerContainerStyle, + contentContainerStyle + } = this.props; + const fromLeft = drawerPosition === 'left'; + const drawerSlide = drawerType !== 'back'; + const containerSlide = drawerType !== 'front'; // we rely on row and row-reverse flex directions to position the drawer + // properly. Apparently for RTL these are flipped which requires us to use + // the opposite setting for the drawer to appear from left or right + // according to the drawerPosition prop + + const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft; + const dynamicDrawerStyles = { + backgroundColor: drawerBackgroundColor, + width: drawerWidth + }; + const openValue = this.openValue; + invariant(openValue, 'should be set'); + let containerStyles; + + if (containerSlide) { + const containerTranslateX = openValue.interpolate({ + inputRange: [0, 1], + outputRange: fromLeft ? [0, drawerWidth] : [0, -drawerWidth], + extrapolate: 'clamp' + }); + containerStyles = { + transform: [{ + translateX: containerTranslateX + }] + }; + } + + let drawerTranslateX = 0; + + if (drawerSlide) { + const closedDrawerOffset = fromLeft ? -drawerWidth : drawerWidth; + + if (this.state.drawerState !== IDLE) { + drawerTranslateX = openValue.interpolate({ + inputRange: [0, 1], + outputRange: [closedDrawerOffset, 0], + extrapolate: 'clamp' + }); + } else { + drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset; + } + } + + const drawerStyles = { + transform: [{ + translateX: drawerTranslateX + }], + flexDirection: reverseContentDirection ? 'row-reverse' : 'row' + }; + return /*#__PURE__*/React.createElement(Animated.View, { + style: styles.main, + onLayout: this.handleContainerLayout + }, /*#__PURE__*/React.createElement(Animated.View, { + style: [drawerType === 'front' ? styles.containerOnBack : styles.containerInFront, containerStyles, contentContainerStyle], + importantForAccessibility: this.drawerShown ? 'no-hide-descendants' : 'yes' + }, typeof this.props.children === 'function' ? this.props.children(this.openValue) : this.props.children, this.renderOverlay()), /*#__PURE__*/React.createElement(Animated.View, { + pointerEvents: "box-none", + ref: this.accessibilityIsModalView, + accessibilityViewIsModal: this.drawerShown, + style: [styles.drawerContainer, drawerStyles, drawerContainerStyle] + }, /*#__PURE__*/React.createElement(View, { + style: dynamicDrawerStyles + }, this.props.renderNavigationView(this.openValue)))); + }); + + _defineProperty(this, "setPanGestureRef", ref => { + var _this$props$onGesture, _this$props5; + + // TODO(TS): make sure it is OK taken from + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842 + this.panGestureHandler.current = ref; + (_this$props$onGesture = (_this$props5 = this.props).onGestureRef) === null || _this$props$onGesture === void 0 ? void 0 : _this$props$onGesture.call(_this$props5, ref); + }); + + const _dragX = new Animated.Value(0); + + const _touchX = new Animated.Value(0); + + const _drawerTranslation = new Animated.Value(0); + + this.state = { + dragX: _dragX, + touchX: _touchX, + drawerTranslation: _drawerTranslation, + containerWidth: 0, + drawerState: IDLE, + drawerOpened: false + }; + this.updateAnimatedEvent(_props, this.state); + } + + shouldComponentUpdate(props, state) { + if (this.props.drawerPosition !== props.drawerPosition || this.props.drawerWidth !== props.drawerWidth || this.props.drawerType !== props.drawerType || this.state.containerWidth !== state.containerWidth) { + this.updateAnimatedEvent(props, state); + } + + return true; + } + + render() { + const { + drawerPosition, + drawerLockMode, + edgeWidth, + minSwipeDistance + } = this.props; + const fromLeft = drawerPosition === 'left'; // gestureOrientation is 1 if the expected gesture is from left to right and + // -1 otherwise e.g. when drawer is on the left and is closed we expect left + // to right gesture, thus orientation will be 1. + + const gestureOrientation = (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1); // When drawer is closed we want the hitSlop to be horizontally shorter than + // the container size by the value of SLOP. This will make it only activate + // when gesture happens not further than SLOP away from the edge + + const hitSlop = fromLeft ? { + left: 0, + width: this.drawerShown ? undefined : edgeWidth + } : { + right: 0, + width: this.drawerShown ? undefined : edgeWidth + }; + return /*#__PURE__*/React.createElement(PanGestureHandler // @ts-ignore could be fixed in handler types + , { + userSelect: this.props.userSelect, + ref: this.setPanGestureRef, + hitSlop: hitSlop, + activeOffsetX: gestureOrientation * minSwipeDistance, + failOffsetY: [-15, 15], + onGestureEvent: this.onGestureEvent, + onHandlerStateChange: this.openingHandlerStateChange, + enableTrackpadTwoFingerGesture: this.props.enableTrackpadTwoFingerGesture, + enabled: drawerLockMode !== 'locked-closed' && drawerLockMode !== 'locked-open' + }, this.renderDrawer()); + } + +} + +_defineProperty(DrawerLayout, "defaultProps", { + drawerWidth: 200, + drawerPosition: 'left', + useNativeAnimations: true, + drawerType: 'front', + edgeWidth: 20, + minSwipeDistance: 3, + overlayColor: 'rgba(0, 0, 0, 0.7)', + drawerLockMode: 'unlocked', + enableTrackpadTwoFingerGesture: false +}); + +_defineProperty(DrawerLayout, "positions", { + Left: 'left', + Right: 'right' +}); + +const styles = StyleSheet.create({ + drawerContainer: { ...StyleSheet.absoluteFillObject, + zIndex: 1001, + flexDirection: 'row' + }, + containerInFront: { ...StyleSheet.absoluteFillObject, + zIndex: 1002 + }, + containerOnBack: { ...StyleSheet.absoluteFillObject + }, + main: { + flex: 1, + zIndex: 0, + overflow: 'hidden' + }, + overlay: { ...StyleSheet.absoluteFillObject, + zIndex: 1000 + } +}); +//# sourceMappingURL=DrawerLayout.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js.map new file mode 100644 index 00000000..c1a04329 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/DrawerLayout.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["DrawerLayout.tsx"],"names":["React","Component","invariant","Animated","StyleSheet","View","Keyboard","StatusBar","I18nManager","PanGestureHandler","TapGestureHandler","State","DRAG_TOSS","IDLE","DRAGGING","SETTLING","DrawerLayout","constructor","props","createRef","state","drawerPosition","drawerWidth","drawerType","dragX","dragXValue","touchX","touchXValue","drawerTranslation","containerWidth","multiply","Value","add","setValue","translationX","startPositionX","dragOffsetFromOnStartPosition","interpolate","inputRange","outputRange","openValue","extrapolate","gestureOptions","useNativeDriver","useNativeAnimations","onDrawerSlide","listener","ev","Math","floor","abs","nativeEvent","position","onGestureEvent","event","x","setState","layout","width","newState","drawerWillShow","onDrawerStateChanged","oldState","ACTIVE","handleRelease","emitStateChanged","drawerState","keyboardDismissMode","dismiss","hideStatusBar","setHidden","statusBarAnimation","drawerShown","drawerLockMode","closeDrawer","velocityX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","animateDrawer","showing","accessibilityIsModalView","current","setNativeProps","accessibilityViewIsModal","pointerEventsView","pointerEvents","minSwipeDistance","edgeWidth","fromLeft","gestureOrientation","hitSlop","left","undefined","right","panGestureHandler","activeOffsetX","fromValue","toValue","velocity","speed","nextFramePosition","min","max","willShow","updateShowing","spring","bounciness","start","finished","drawerOpened","onDrawerOpen","onDrawerClose","options","forceUpdate","overlayOpacity","dynamicOverlayStyles","opacity","backgroundColor","overlayColor","onTapHandlerStateChange","styles","overlay","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","drawerSlide","containerSlide","reverseContentDirection","isRTL","dynamicDrawerStyles","containerStyles","containerTranslateX","transform","translateX","drawerTranslateX","closedDrawerOffset","drawerStyles","flexDirection","main","handleContainerLayout","containerOnBack","containerInFront","children","renderOverlay","drawerContainer","renderNavigationView","ref","onGestureRef","updateAnimatedEvent","shouldComponentUpdate","render","userSelect","setPanGestureRef","openingHandlerStateChange","enableTrackpadTwoFingerGesture","renderDrawer","Left","Right","create","absoluteFillObject","zIndex","flex","overflow"],"mappings":"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","sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n//\n// It perhaps deserves to be put in a separate repo, but since it relies on\n// react-native-gesture-handler library which isn't very popular at the moment I\n// decided to keep it here for the time being. It will allow us to move faster\n// and fix issues that may arise in gesture handler library that could be found\n// when using the drawer component\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport invariant from 'invariant';\nimport {\n Animated,\n StyleSheet,\n View,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n NativeSyntheticEvent,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n UserSelect,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\nconst IDLE: DrawerState = 'Idle';\nconst DRAGGING: DrawerState = 'Dragging';\nconst SETTLING: DrawerState = 'Settling';\n\nexport type DrawerPosition = 'left' | 'right';\n\nexport type DrawerState = 'Idle' | 'Dragging' | 'Settling';\n\nexport type DrawerType = 'front' | 'back' | 'slide';\n\nexport type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open';\n\nexport type DrawerKeyboardDismissMode = 'none' | 'on-drag';\n\n// Animated.AnimatedInterpolation has been converted to a generic type\n// in @types/react-native 0.70. This way we can maintain compatibility\n// with all versions of @types/react-native`\ntype AnimatedInterpolation = ReturnType;\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the standard implementation already and is one\n * of the required params. Gesture handler version of DrawerLayout make it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: Animated.Value\n ) => React.ReactNode;\n\n drawerPosition?: DrawerPosition;\n\n drawerWidth?: number;\n\n drawerBackgroundColor?: string;\n\n drawerLockMode?: DrawerLockMode;\n\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n useNativeAnimations?: boolean;\n\n drawerType?: DrawerType;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default black\n *\n * Color of a semi-transparent overlay to be displayed on top of the content\n * view when drawer gets open. A solid color should be used as the opacity is\n * added by the Drawer itself and the opacity of the overlay is animated (from\n * 0% to 70%).\n */\n overlayColor?: string;\n\n contentContainerStyle?: StyleProp;\n\n drawerContainerStyle?: StyleProp;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n onGestureRef?: (ref: PanGestureHandler) => void;\n\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?:\n | React.ReactNode\n | ((openValue?: AnimatedInterpolation) => React.ReactNode);\n\n /**\n * @default 'none'\n * Defines which userSelect property should be used.\n * Values: 'none'|'text'|'auto'\n */\n userSelect?: UserSelect;\n}\n\nexport type DrawerLayoutState = {\n dragX: Animated.Value;\n touchX: Animated.Value;\n drawerTranslation: Animated.Value;\n containerWidth: number;\n drawerState: DrawerState;\n drawerOpened: boolean;\n};\n\nexport type DrawerMovementOption = {\n velocity?: number;\n speed?: number;\n};\nexport default class DrawerLayout extends Component<\n DrawerLayoutProps,\n DrawerLayoutState\n> {\n static defaultProps = {\n drawerWidth: 200,\n drawerPosition: 'left',\n useNativeAnimations: true,\n drawerType: 'front',\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: 'unlocked',\n enableTrackpadTwoFingerGesture: false,\n };\n\n constructor(props: DrawerLayoutProps) {\n super(props);\n\n const dragX = new Animated.Value(0);\n const touchX = new Animated.Value(0);\n const drawerTranslation = new Animated.Value(0);\n\n this.state = {\n dragX,\n touchX,\n drawerTranslation,\n containerWidth: 0,\n drawerState: IDLE,\n drawerOpened: false,\n };\n\n this.updateAnimatedEvent(props, this.state);\n }\n\n shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState) {\n if (\n this.props.drawerPosition !== props.drawerPosition ||\n this.props.drawerWidth !== props.drawerWidth ||\n this.props.drawerType !== props.drawerType ||\n this.state.containerWidth !== state.containerWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private openValue?: AnimatedInterpolation;\n private onGestureEvent?: (\n event: GestureEvent\n ) => void;\n private accessibilityIsModalView = React.createRef();\n private pointerEventsView = React.createRef();\n private panGestureHandler = React.createRef();\n private drawerShown = false;\n\n static positions = {\n Left: 'left',\n Right: 'right',\n };\n\n private updateAnimatedEvent = (\n props: DrawerLayoutProps,\n state: DrawerLayoutState\n ) => {\n // Event definition is based on\n const { drawerPosition, drawerWidth, drawerType } = props;\n const {\n dragX: dragXValue,\n touchX: touchXValue,\n drawerTranslation,\n containerWidth,\n } = state;\n\n let dragX = dragXValue;\n let touchX = touchXValue;\n\n if (drawerPosition !== 'left') {\n // Most of the code is written in a way to handle left-side drawer. In\n // order to handle right-side drawer the only thing we need to do is to\n // reverse events coming from gesture handler in a way they emulate\n // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is\n // calulcated by subtracing real touchX from the width of the container\n // (such that when touch happens at the right edge the value is simply 0)\n dragX = Animated.multiply(\n new Animated.Value(-1),\n dragXValue\n ) as Animated.Value; // TODO(TS): (for all \"as\" in this file) make sure we can map this\n touchX = Animated.add(\n new Animated.Value(containerWidth),\n Animated.multiply(new Animated.Value(-1), touchXValue)\n ) as Animated.Value; // TODO(TS): make sure we can map this;\n touchXValue.setValue(containerWidth);\n } else {\n touchXValue.setValue(0);\n }\n\n // While closing the drawer when user starts gesture outside of its area (in greyed\n // out part of the window), we want the drawer to follow only once finger reaches the\n // edge of the drawer.\n // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n // an arrow pointing left\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n //\n // For the above to work properly we define animated value that will keep\n // start position of the gesture. Then we use that value to calculate how\n // much we need to subtract from the dragX. If the gesture started on the\n // greyed out area we take the distance from the edge of the drawer to the\n // start position. Otherwise we don't subtract at all and the drawer be\n // pulled back as soon as you start the pan.\n //\n // This is used only when drawerType is \"front\"\n //\n let translationX = dragX;\n if (drawerType === 'front') {\n const startPositionX = Animated.add(\n touchX,\n Animated.multiply(new Animated.Value(-1), dragX)\n );\n\n const dragOffsetFromOnStartPosition = startPositionX.interpolate({\n inputRange: [drawerWidth! - 1, drawerWidth!, drawerWidth! + 1],\n outputRange: [0, 0, 1],\n });\n translationX = Animated.add(\n dragX,\n dragOffsetFromOnStartPosition\n ) as Animated.Value; // TODO: as above\n }\n\n this.openValue = Animated.add(translationX, drawerTranslation).interpolate({\n inputRange: [0, drawerWidth!],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n });\n\n const gestureOptions: {\n useNativeDriver: boolean;\n // TODO: make sure it is correct\n listener?: (\n ev: NativeSyntheticEvent\n ) => void;\n } = {\n useNativeDriver: props.useNativeAnimations!,\n };\n\n if (this.props.onDrawerSlide) {\n gestureOptions.listener = (ev) => {\n const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX));\n const position = translationX / this.state.containerWidth;\n\n this.props.onDrawerSlide?.(position);\n };\n }\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragXValue, x: touchXValue } }],\n gestureOptions\n );\n };\n\n private handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ containerWidth: nativeEvent.layout.width });\n };\n\n private emitStateChanged = (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => {\n this.props.onDrawerStateChanged?.(newState, drawerWillShow);\n };\n\n private openingHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease({ nativeEvent });\n } else if (nativeEvent.state === State.ACTIVE) {\n this.emitStateChanged(DRAGGING, false);\n this.setState({ drawerState: DRAGGING });\n if (this.props.keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n if (this.props.hideStatusBar) {\n StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide');\n }\n }\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n if (\n this.drawerShown &&\n nativeEvent.oldState === State.ACTIVE &&\n this.props.drawerLockMode !== 'locked-open'\n ) {\n this.closeDrawer();\n }\n };\n\n private handleRelease = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n const { drawerWidth, drawerPosition, drawerType } = this.props;\n const { containerWidth } = this.state;\n let { translationX: dragX, velocityX, x: touchX } = nativeEvent;\n\n if (drawerPosition !== 'left') {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === 'front') {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth! ? gestureStartX - drawerWidth! : 0;\n }\n\n const startOffsetX =\n dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth! : 0);\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth! / 2;\n\n if (shouldOpen) {\n this.animateDrawer(startOffsetX, drawerWidth!, velocityX);\n } else {\n this.animateDrawer(startOffsetX, 0, velocityX);\n }\n };\n\n private updateShowing = (showing: boolean) => {\n this.drawerShown = showing;\n this.accessibilityIsModalView.current?.setNativeProps({\n accessibilityViewIsModal: showing,\n });\n this.pointerEventsView.current?.setNativeProps({\n pointerEvents: showing ? 'auto' : 'none',\n });\n const { drawerPosition, minSwipeDistance, edgeWidth } = this.props;\n const fromLeft = drawerPosition === 'left';\n // gestureOrientation is 1 if the expected gesture is from left to right and\n // -1 otherwise e.g. when drawer is on the left and is closed we expect left\n // to right gesture, thus orientation will be 1.\n const gestureOrientation =\n (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);\n // When drawer is closed we want the hitSlop to be horizontally shorter than\n // the container size by the value of SLOP. This will make it only activate\n // when gesture happens not further than SLOP away from the edge\n const hitSlop = fromLeft\n ? { left: 0, width: showing ? undefined : edgeWidth }\n : { right: 0, width: showing ? undefined : edgeWidth };\n // @ts-ignore internal API, maybe could be fixed in handler types\n this.panGestureHandler.current?.setNativeProps({\n hitSlop,\n activeOffsetX: gestureOrientation * minSwipeDistance!,\n });\n };\n\n private animateDrawer = (\n fromValue: number | null | undefined,\n toValue: number,\n velocity: number,\n speed?: number\n ) => {\n this.state.dragX.setValue(0);\n this.state.touchX.setValue(\n this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth\n );\n\n if (fromValue != null) {\n let nextFramePosition = fromValue;\n if (this.props.useNativeAnimations) {\n // When using native driver, we predict the next position of the\n // animation because it takes one frame of a roundtrip to pass RELEASE\n // event from native driver to JS before we can start animating. Without\n // it, it is more noticable that the frame is dropped.\n if (fromValue < toValue && velocity > 0) {\n nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue);\n } else if (fromValue > toValue && velocity < 0) {\n nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue);\n }\n }\n this.state.drawerTranslation.setValue(nextFramePosition);\n }\n\n const willShow = toValue !== 0;\n this.updateShowing(willShow);\n this.emitStateChanged(SETTLING, willShow);\n this.setState({ drawerState: SETTLING });\n if (this.props.hideStatusBar) {\n StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');\n }\n Animated.spring(this.state.drawerTranslation, {\n velocity,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n speed: speed ?? undefined,\n }).start(({ finished }) => {\n if (finished) {\n this.emitStateChanged(IDLE, willShow);\n this.setState({ drawerOpened: willShow });\n if (this.state.drawerState !== DRAGGING) {\n // it's possilbe that user started drag while the drawer\n // was settling, don't override state in this case\n this.setState({ drawerState: IDLE });\n }\n if (willShow) {\n this.props.onDrawerOpen?.();\n } else {\n this.props.onDrawerClose?.();\n }\n }\n });\n };\n\n openDrawer = (options: DrawerMovementOption = {}) => {\n this.animateDrawer(\n // TODO: decide if it should be null or undefined is the proper value\n undefined,\n this.props.drawerWidth!,\n options.velocity ? options.velocity : 0,\n options.speed\n );\n\n // We need to force the update, otherwise the overlay is not rerendered and\n // it would not be clickable\n this.forceUpdate();\n };\n\n closeDrawer = (options: DrawerMovementOption = {}) => {\n // TODO: decide if it should be null or undefined is the proper value\n this.animateDrawer(\n undefined,\n 0,\n options.velocity ? options.velocity : 0,\n options.speed\n );\n\n // We need to force the update, otherwise the overlay is not rerendered and\n // it would be still clickable\n this.forceUpdate();\n };\n\n private renderOverlay = () => {\n /* Overlay styles */\n invariant(this.openValue, 'should be set');\n let overlayOpacity;\n\n if (this.state.drawerState !== IDLE) {\n overlayOpacity = this.openValue;\n } else {\n overlayOpacity = this.state.drawerOpened ? 1 : 0;\n }\n\n const dynamicOverlayStyles = {\n opacity: overlayOpacity,\n backgroundColor: this.props.overlayColor,\n };\n\n return (\n \n \n \n );\n };\n\n private renderDrawer = () => {\n const {\n drawerBackgroundColor,\n drawerWidth,\n drawerPosition,\n drawerType,\n drawerContainerStyle,\n contentContainerStyle,\n } = this.props;\n\n const fromLeft = drawerPosition === 'left';\n const drawerSlide = drawerType !== 'back';\n const containerSlide = drawerType !== 'front';\n\n // we rely on row and row-reverse flex directions to position the drawer\n // properly. Apparently for RTL these are flipped which requires us to use\n // the opposite setting for the drawer to appear from left or right\n // according to the drawerPosition prop\n const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n const openValue = this.openValue;\n invariant(openValue, 'should be set');\n\n let containerStyles;\n if (containerSlide) {\n const containerTranslateX = openValue.interpolate({\n inputRange: [0, 1],\n outputRange: fromLeft ? [0, drawerWidth!] : [0, -drawerWidth!],\n extrapolate: 'clamp',\n });\n containerStyles = {\n transform: [{ translateX: containerTranslateX }],\n };\n }\n\n let drawerTranslateX: number | AnimatedInterpolation = 0;\n if (drawerSlide) {\n const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!;\n if (this.state.drawerState !== IDLE) {\n drawerTranslateX = openValue.interpolate({\n inputRange: [0, 1],\n outputRange: [closedDrawerOffset, 0],\n extrapolate: 'clamp',\n });\n } else {\n drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset;\n }\n }\n const drawerStyles: {\n transform: { translateX: number | AnimatedInterpolation }[];\n flexDirection: 'row-reverse' | 'row';\n } = {\n transform: [{ translateX: drawerTranslateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n\n return (\n \n \n {typeof this.props.children === 'function'\n ? this.props.children(this.openValue)\n : this.props.children}\n {this.renderOverlay()}\n \n \n \n {this.props.renderNavigationView(this.openValue as Animated.Value)}\n \n \n \n );\n };\n\n private setPanGestureRef = (ref: PanGestureHandler) => {\n // TODO(TS): make sure it is OK taken from\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842\n (\n this.panGestureHandler as React.MutableRefObject\n ).current = ref;\n this.props.onGestureRef?.(ref);\n };\n\n render() {\n const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } =\n this.props;\n\n const fromLeft = drawerPosition === 'left';\n\n // gestureOrientation is 1 if the expected gesture is from left to right and\n // -1 otherwise e.g. when drawer is on the left and is closed we expect left\n // to right gesture, thus orientation will be 1.\n const gestureOrientation =\n (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);\n\n // When drawer is closed we want the hitSlop to be horizontally shorter than\n // the container size by the value of SLOP. This will make it only activate\n // when gesture happens not further than SLOP away from the edge\n const hitSlop = fromLeft\n ? { left: 0, width: this.drawerShown ? undefined : edgeWidth }\n : { right: 0, width: this.drawerShown ? undefined : edgeWidth };\n\n return (\n \n {this.renderDrawer()}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js new file mode 100644 index 00000000..d0f3fbc1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js @@ -0,0 +1,206 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import * as React from 'react'; +import { Animated, Platform, processColor, StyleSheet } from 'react-native'; +import createNativeWrapper from '../handlers/createNativeWrapper'; +import GestureHandlerButton from './GestureHandlerButton'; +import { State } from '../State'; +export const RawButton = createNativeWrapper(GestureHandlerButton, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: false +}); +export class BaseButton extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "lastActive", void 0); + + _defineProperty(this, "longPressTimeout", void 0); + + _defineProperty(this, "longPressDetected", void 0); + + _defineProperty(this, "handleEvent", ({ + nativeEvent + }) => { + const { + state, + oldState, + pointerInside + } = nativeEvent; + const active = pointerInside && state === State.ACTIVE; + + if (active !== this.lastActive && this.props.onActiveStateChange) { + this.props.onActiveStateChange(active); + } + + if (!this.longPressDetected && oldState === State.ACTIVE && state !== State.CANCELLED && this.lastActive && this.props.onPress) { + this.props.onPress(active); + } + + if (!this.lastActive && // NativeViewGestureHandler sends different events based on platform + state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) && pointerInside) { + this.longPressDetected = false; + + if (this.props.onLongPress) { + this.longPressTimeout = setTimeout(this.onLongPress, this.props.delayLongPress); + } + } else if ( // cancel longpress timeout if it's set and the finger moved out of the view + state === State.ACTIVE && !pointerInside && this.longPressTimeout !== undefined) { + clearTimeout(this.longPressTimeout); + this.longPressTimeout = undefined; + } else if ( // cancel longpress timeout if it's set and the gesture has finished + this.longPressTimeout !== undefined && (state === State.END || state === State.CANCELLED || state === State.FAILED)) { + clearTimeout(this.longPressTimeout); + this.longPressTimeout = undefined; + } + + this.lastActive = active; + }); + + _defineProperty(this, "onLongPress", () => { + var _this$props$onLongPre, _this$props; + + this.longPressDetected = true; + (_this$props$onLongPre = (_this$props = this.props).onLongPress) === null || _this$props$onLongPre === void 0 ? void 0 : _this$props$onLongPre.call(_this$props); + }); + + _defineProperty(this, "onHandlerStateChange", e => { + var _this$props$onHandler, _this$props2; + + (_this$props$onHandler = (_this$props2 = this.props).onHandlerStateChange) === null || _this$props$onHandler === void 0 ? void 0 : _this$props$onHandler.call(_this$props2, e); + this.handleEvent(e); + }); + + _defineProperty(this, "onGestureEvent", e => { + var _this$props$onGesture, _this$props3; + + (_this$props$onGesture = (_this$props3 = this.props).onGestureEvent) === null || _this$props$onGesture === void 0 ? void 0 : _this$props$onGesture.call(_this$props3, e); + this.handleEvent(e); // TODO: maybe it is not correct + }); + + this.lastActive = false; + this.longPressDetected = false; + } + + render() { + const { + rippleColor, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(RawButton, _extends({ + rippleColor: processColor(rippleColor) + }, rest, { + onGestureEvent: this.onGestureEvent, + onHandlerStateChange: this.onHandlerStateChange + })); + } + +} + +_defineProperty(BaseButton, "defaultProps", { + delayLongPress: 600 +}); + +const AnimatedBaseButton = Animated.createAnimatedComponent(BaseButton); +const btnStyles = StyleSheet.create({ + underlay: { + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + top: 0 + } +}); +export class RectButton extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "opacity", void 0); + + _defineProperty(this, "onActiveStateChange", active => { + var _this$props$onActiveS, _this$props4; + + if (Platform.OS !== 'android') { + this.opacity.setValue(active ? this.props.activeOpacity : 0); + } + + (_this$props$onActiveS = (_this$props4 = this.props).onActiveStateChange) === null || _this$props$onActiveS === void 0 ? void 0 : _this$props$onActiveS.call(_this$props4, active); + }); + + this.opacity = new Animated.Value(0); + } + + render() { + const { + children, + style, + ...rest + } = this.props; + const resolvedStyle = StyleSheet.flatten(style !== null && style !== void 0 ? style : {}); + return /*#__PURE__*/React.createElement(BaseButton, _extends({}, rest, { + style: resolvedStyle, + onActiveStateChange: this.onActiveStateChange + }), /*#__PURE__*/React.createElement(Animated.View, { + style: [btnStyles.underlay, { + opacity: this.opacity, + backgroundColor: this.props.underlayColor, + borderRadius: resolvedStyle.borderRadius, + borderTopLeftRadius: resolvedStyle.borderTopLeftRadius, + borderTopRightRadius: resolvedStyle.borderTopRightRadius, + borderBottomLeftRadius: resolvedStyle.borderBottomLeftRadius, + borderBottomRightRadius: resolvedStyle.borderBottomRightRadius + }] + }), children); + } + +} + +_defineProperty(RectButton, "defaultProps", { + activeOpacity: 0.105, + underlayColor: 'black' +}); + +export class BorderlessButton extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "opacity", void 0); + + _defineProperty(this, "onActiveStateChange", active => { + var _this$props$onActiveS2, _this$props5; + + if (Platform.OS !== 'android') { + this.opacity.setValue(active ? this.props.activeOpacity : 1); + } + + (_this$props$onActiveS2 = (_this$props5 = this.props).onActiveStateChange) === null || _this$props$onActiveS2 === void 0 ? void 0 : _this$props$onActiveS2.call(_this$props5, active); + }); + + this.opacity = new Animated.Value(1); + } + + render() { + const { + children, + style, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(AnimatedBaseButton, _extends({}, rest, { + onActiveStateChange: this.onActiveStateChange, + style: [style, Platform.OS === 'ios' && { + opacity: this.opacity + }] + }), children); + } + +} + +_defineProperty(BorderlessButton, "defaultProps", { + activeOpacity: 0.3, + borderless: true +}); + +export { default as PureNativeButton } from './GestureHandlerButton'; +//# sourceMappingURL=GestureButtons.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js.map new file mode 100644 index 00000000..f50fffee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureButtons.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureButtons.tsx"],"names":["React","Animated","Platform","processColor","StyleSheet","createNativeWrapper","GestureHandlerButton","State","RawButton","shouldCancelWhenOutside","shouldActivateOnStart","BaseButton","Component","constructor","props","nativeEvent","state","oldState","pointerInside","active","ACTIVE","lastActive","onActiveStateChange","longPressDetected","CANCELLED","onPress","OS","BEGAN","onLongPress","longPressTimeout","setTimeout","delayLongPress","undefined","clearTimeout","END","FAILED","e","onHandlerStateChange","handleEvent","onGestureEvent","render","rippleColor","rest","AnimatedBaseButton","createAnimatedComponent","btnStyles","create","underlay","position","left","right","bottom","top","RectButton","opacity","setValue","activeOpacity","Value","children","style","resolvedStyle","flatten","backgroundColor","underlayColor","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","BorderlessButton","borderless","default","PureNativeButton"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Platform,\n processColor,\n StyleSheet,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\nimport GestureHandlerButton from './GestureHandlerButton';\nimport { State } from '../State';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from '../handlers/NativeViewGestureHandler';\n\nexport interface RawButtonProps extends NativeViewGestureHandlerProps {\n /**\n * Defines if more than one button could be pressed simultaneously. By default\n * set true.\n */\n exclusive?: boolean;\n // TODO: we should transform props in `createNativeWrapper`\n\n /**\n * Android only.\n *\n * Defines color of native ripple animation used since API level 21.\n */\n rippleColor?: any; // it was present in BaseButtonProps before but is used here in code\n\n /**\n * Android only.\n *\n * Defines radius of native ripple animation used since API level 21.\n */\n rippleRadius?: number | null;\n\n /**\n * Android only.\n *\n * Set this to true if you want the ripple animation to render outside the view bounds.\n */\n borderless?: boolean;\n\n /**\n * Android only.\n *\n * Defines whether the ripple animation should be drawn on the foreground of the view.\n */\n foreground?: boolean;\n\n /**\n * Android only.\n *\n * Set this to true if you don't want the system to play sound when the button is pressed.\n */\n touchSoundDisabled?: boolean;\n}\n\nexport interface BaseButtonProps extends RawButtonProps {\n /**\n * Called when the button gets pressed (analogous to `onPress` in\n * `TouchableHighlight` from RN core).\n */\n onPress?: (pointerInside: boolean) => void;\n\n /**\n * Called when the button gets pressed and is held for `delayLongPress`\n * milliseconds.\n */\n onLongPress?: () => void;\n\n /**\n * Called when button changes from inactive to active and vice versa. It\n * passes active state as a boolean variable as a first parameter for that\n * method.\n */\n onActiveStateChange?: (active: boolean) => void;\n style?: StyleProp;\n testID?: string;\n\n /**\n * Delay, in milliseconds, after which the `onLongPress` callback gets called.\n * Defaults to 600.\n */\n delayLongPress?: number;\n}\n\nexport interface RectButtonProps extends BaseButtonProps {\n /**\n * Background color that will be dimmed when button is in active state.\n */\n underlayColor?: string;\n\n /**\n * iOS only.\n *\n * Opacity applied to the underlay when button is in active state.\n */\n activeOpacity?: number;\n}\n\nexport interface BorderlessButtonProps extends BaseButtonProps {\n /**\n * iOS only.\n *\n * Opacity applied to the button when it is in an active state.\n */\n activeOpacity?: number;\n}\n\nexport const RawButton = createNativeWrapper(GestureHandlerButton, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: false,\n});\n\nexport class BaseButton extends React.Component {\n static defaultProps = {\n delayLongPress: 600,\n };\n\n private lastActive: boolean;\n private longPressTimeout: ReturnType | undefined;\n private longPressDetected: boolean;\n\n constructor(props: BaseButtonProps) {\n super(props);\n this.lastActive = false;\n this.longPressDetected = false;\n }\n\n private handleEvent = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n const { state, oldState, pointerInside } = nativeEvent;\n const active = pointerInside && state === State.ACTIVE;\n\n if (active !== this.lastActive && this.props.onActiveStateChange) {\n this.props.onActiveStateChange(active);\n }\n\n if (\n !this.longPressDetected &&\n oldState === State.ACTIVE &&\n state !== State.CANCELLED &&\n this.lastActive &&\n this.props.onPress\n ) {\n this.props.onPress(active);\n }\n\n if (\n !this.lastActive &&\n // NativeViewGestureHandler sends different events based on platform\n state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&\n pointerInside\n ) {\n this.longPressDetected = false;\n if (this.props.onLongPress) {\n this.longPressTimeout = setTimeout(\n this.onLongPress,\n this.props.delayLongPress\n );\n }\n } else if (\n // cancel longpress timeout if it's set and the finger moved out of the view\n state === State.ACTIVE &&\n !pointerInside &&\n this.longPressTimeout !== undefined\n ) {\n clearTimeout(this.longPressTimeout);\n this.longPressTimeout = undefined;\n } else if (\n // cancel longpress timeout if it's set and the gesture has finished\n this.longPressTimeout !== undefined &&\n (state === State.END ||\n state === State.CANCELLED ||\n state === State.FAILED)\n ) {\n clearTimeout(this.longPressTimeout);\n this.longPressTimeout = undefined;\n }\n\n this.lastActive = active;\n };\n\n private onLongPress = () => {\n this.longPressDetected = true;\n this.props.onLongPress?.();\n };\n\n // Normally, the parent would execute it's handler first, then forward the\n // event to listeners. However, here our handler is virtually only forwarding\n // events to listeners, so we reverse the order to keep the proper order of\n // the callbacks (from \"raw\" ones to \"processed\").\n private onHandlerStateChange = (\n e: HandlerStateChangeEvent\n ) => {\n this.props.onHandlerStateChange?.(e);\n this.handleEvent(e);\n };\n\n private onGestureEvent = (\n e: GestureEvent\n ) => {\n this.props.onGestureEvent?.(e);\n this.handleEvent(\n e as HandlerStateChangeEvent\n ); // TODO: maybe it is not correct\n };\n\n render() {\n const { rippleColor, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n\nconst AnimatedBaseButton = Animated.createAnimatedComponent(BaseButton);\n\nconst btnStyles = StyleSheet.create({\n underlay: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n});\n\nexport class RectButton extends React.Component {\n static defaultProps = {\n activeOpacity: 0.105,\n underlayColor: 'black',\n };\n\n private opacity: Animated.Value;\n\n constructor(props: RectButtonProps) {\n super(props);\n this.opacity = new Animated.Value(0);\n }\n\n private onActiveStateChange = (active: boolean) => {\n if (Platform.OS !== 'android') {\n this.opacity.setValue(active ? this.props.activeOpacity! : 0);\n }\n\n this.props.onActiveStateChange?.(active);\n };\n\n render() {\n const { children, style, ...rest } = this.props;\n\n const resolvedStyle = StyleSheet.flatten(style ?? {});\n\n return (\n \n \n {children}\n \n );\n }\n}\n\nexport class BorderlessButton extends React.Component {\n static defaultProps = {\n activeOpacity: 0.3,\n borderless: true,\n };\n\n private opacity: Animated.Value;\n\n constructor(props: BorderlessButtonProps) {\n super(props);\n this.opacity = new Animated.Value(1);\n }\n\n private onActiveStateChange = (active: boolean) => {\n if (Platform.OS !== 'android') {\n this.opacity.setValue(active ? this.props.activeOpacity! : 1);\n }\n\n this.props.onActiveStateChange?.(active);\n };\n\n render() {\n const { children, style, ...rest } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\nexport { default as PureNativeButton } from './GestureHandlerButton';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js new file mode 100644 index 00000000..c2cafa8c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js @@ -0,0 +1,90 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import * as React from 'react'; +import { ScrollView as RNScrollView, Switch as RNSwitch, TextInput as RNTextInput, DrawerLayoutAndroid as RNDrawerLayoutAndroid, FlatList as RNFlatList, RefreshControl as RNRefreshControl } from 'react-native'; +import createNativeWrapper from '../handlers/createNativeWrapper'; +import { nativeViewProps } from '../handlers/NativeViewGestureHandler'; +import { toArray } from '../utils'; +export const RefreshControl = createNativeWrapper(RNRefreshControl, { + disallowInterruption: true, + shouldCancelWhenOutside: false +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +const GHScrollView = createNativeWrapper(RNScrollView, { + disallowInterruption: true, + shouldCancelWhenOutside: false +}); +export const ScrollView = /*#__PURE__*/React.forwardRef((props, ref) => { + const refreshControlGestureRef = React.useRef(null); + const { + refreshControl, + waitFor, + ...rest + } = props; + return /*#__PURE__*/React.createElement(GHScrollView, _extends({}, rest, { + // @ts-ignore `ref` exists on `GHScrollView` + ref: ref, + waitFor: [...toArray(waitFor !== null && waitFor !== void 0 ? waitFor : []), refreshControlGestureRef] // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref + , + refreshControl: refreshControl ? /*#__PURE__*/React.cloneElement(refreshControl, { + // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS + ref: refreshControlGestureRef + }) : undefined + })); +}); // backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457 +// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them. +// eslint-disable-next-line @typescript-eslint/no-redeclare + +export const Switch = createNativeWrapper(RNSwitch, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: true, + disallowInterruption: true +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +export const TextInput = createNativeWrapper(RNTextInput); // eslint-disable-next-line @typescript-eslint/no-redeclare + +export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, { + disallowInterruption: true +}); // eslint-disable-next-line @typescript-eslint/no-redeclare + +export const FlatList = /*#__PURE__*/React.forwardRef((props, ref) => { + const refreshControlGestureRef = React.useRef(null); + const { + waitFor, + refreshControl, + ...rest + } = props; + const flatListProps = {}; + const scrollViewProps = {}; + + for (const [propName, value] of Object.entries(rest)) { + // https://github.com/microsoft/TypeScript/issues/26255 + if (nativeViewProps.includes(propName)) { + // @ts-ignore - this function cannot have generic type so we have to ignore this error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + scrollViewProps[propName] = value; + } else { + // @ts-ignore - this function cannot have generic type so we have to ignore this error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + flatListProps[propName] = value; + } + } + + return ( + /*#__PURE__*/ + // @ts-ignore - this function cannot have generic type so we have to ignore this error + React.createElement(RNFlatList, _extends({ + ref: ref + }, flatListProps, { + renderScrollComponent: scrollProps => /*#__PURE__*/React.createElement(ScrollView, _extends({}, scrollProps, scrollViewProps, { + waitFor: [...toArray(waitFor !== null && waitFor !== void 0 ? waitFor : []), refreshControlGestureRef] + })) // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref + , + refreshControl: refreshControl ? /*#__PURE__*/React.cloneElement(refreshControl, { + // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS + ref: refreshControlGestureRef + }) : undefined + })) + ); +}); // eslint-disable-next-line @typescript-eslint/no-redeclare +//# sourceMappingURL=GestureComponents.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js.map new file mode 100644 index 00000000..700e8cea --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureComponents.tsx"],"names":["React","ScrollView","RNScrollView","Switch","RNSwitch","TextInput","RNTextInput","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","RNFlatList","RefreshControl","RNRefreshControl","createNativeWrapper","nativeViewProps","toArray","disallowInterruption","shouldCancelWhenOutside","GHScrollView","forwardRef","props","ref","refreshControlGestureRef","useRef","refreshControl","waitFor","rest","cloneElement","undefined","shouldActivateOnStart","flatListProps","scrollViewProps","propName","value","Object","entries","includes","scrollProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n PropsWithChildren,\n ForwardedRef,\n RefAttributes,\n ReactElement,\n} from 'react';\nimport {\n ScrollView as RNScrollView,\n ScrollViewProps as RNScrollViewProps,\n Switch as RNSwitch,\n SwitchProps as RNSwitchProps,\n TextInput as RNTextInput,\n TextInputProps as RNTextInputProps,\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n FlatList as RNFlatList,\n FlatListProps as RNFlatListProps,\n RefreshControl as RNRefreshControl,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport {\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from '../handlers/NativeViewGestureHandler';\n\nimport { toArray } from '../utils';\n\nexport const RefreshControl = createNativeWrapper(RNRefreshControl, {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type RefreshControl = typeof RefreshControl & RNRefreshControl;\n\nconst GHScrollView = createNativeWrapper>(\n RNScrollView,\n {\n disallowInterruption: true,\n shouldCancelWhenOutside: false,\n }\n);\nexport const ScrollView = React.forwardRef<\n RNScrollView,\n RNScrollViewProps & NativeViewGestureHandlerProps\n>((props, ref) => {\n const refreshControlGestureRef = React.useRef(null);\n const { refreshControl, waitFor, ...rest } = props;\n\n return (\n \n );\n});\n// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof GHScrollView & RNScrollView;\n\nexport const Switch = createNativeWrapper(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch & RNSwitch;\n\nexport const TextInput = createNativeWrapper(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput & RNTextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n PropsWithChildren\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &\n RNDrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef((props, ref) => {\n const refreshControlGestureRef = React.useRef(null);\n\n const { waitFor, refreshControl, ...rest } = props;\n\n const flatListProps = {};\n const scrollViewProps = {};\n for (const [propName, value] of Object.entries(rest)) {\n // https://github.com/microsoft/TypeScript/issues/26255\n if ((nativeViewProps as readonly string[]).includes(propName)) {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scrollViewProps[propName] = value;\n } else {\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n flatListProps[propName] = value;\n }\n }\n\n return (\n // @ts-ignore - this function cannot have generic type so we have to ignore this error\n (\n \n )}\n // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref\n refreshControl={\n refreshControl\n ? React.cloneElement(refreshControl, {\n // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS\n ref: refreshControlGestureRef,\n })\n : undefined\n }\n />\n );\n}) as (\n props: PropsWithChildren<\n RNFlatListProps &\n RefAttributes> &\n NativeViewGestureHandlerProps\n >,\n ref: ForwardedRef>\n) => ReactElement | null;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList = typeof FlatList & RNFlatList;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js new file mode 100644 index 00000000..d7739929 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js @@ -0,0 +1,29 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import * as React from 'react'; +import { DrawerLayoutAndroid as RNDrawerLayoutAndroid, FlatList as RNFlatList, Switch as RNSwitch, TextInput as RNTextInput, ScrollView as RNScrollView, View } from 'react-native'; +import createNativeWrapper from '../handlers/createNativeWrapper'; +export const ScrollView = createNativeWrapper(RNScrollView, { + disallowInterruption: false +}); +export const Switch = createNativeWrapper(RNSwitch, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: true, + disallowInterruption: true +}); +export const TextInput = createNativeWrapper(RNTextInput); +export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, { + disallowInterruption: true +}); // @ts-ignore -- TODO(TS) to investigate if it's needed + +DrawerLayoutAndroid.positions = RNDrawerLayoutAndroid.positions; // RefreshControl is implemented as a functional component, rendering a View +// NativeViewGestureHandler needs to set a ref on its child, which cannot be done +// on functional components + +export const RefreshControl = createNativeWrapper(View); +export const FlatList = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(RNFlatList, _extends({ + ref: ref +}, props, { + renderScrollComponent: scrollProps => /*#__PURE__*/React.createElement(ScrollView, scrollProps) +}))); +//# sourceMappingURL=GestureComponents.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js.map new file mode 100644 index 00000000..4c278387 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureComponents.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureComponents.web.tsx"],"names":["React","DrawerLayoutAndroid","RNDrawerLayoutAndroid","FlatList","RNFlatList","Switch","RNSwitch","TextInput","RNTextInput","ScrollView","RNScrollView","View","createNativeWrapper","disallowInterruption","shouldCancelWhenOutside","shouldActivateOnStart","positions","RefreshControl","forwardRef","props","ref","scrollProps"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,mBAAmB,IAAIC,qBADzB,EAEEC,QAAQ,IAAIC,UAFd,EAGEC,MAAM,IAAIC,QAHZ,EAIEC,SAAS,IAAIC,WAJf,EAKEC,UAAU,IAAIC,YALhB,EAOEC,IAPF,QAQO,cARP;AAUA,OAAOC,mBAAP,MAAgC,iCAAhC;AAEA,OAAO,MAAMH,UAAU,GAAGG,mBAAmB,CAACF,YAAD,EAAe;AAC1DG,EAAAA,oBAAoB,EAAE;AADoC,CAAf,CAAtC;AAIP,OAAO,MAAMR,MAAM,GAAGO,mBAAmB,CAACN,QAAD,EAAW;AAClDQ,EAAAA,uBAAuB,EAAE,KADyB;AAElDC,EAAAA,qBAAqB,EAAE,IAF2B;AAGlDF,EAAAA,oBAAoB,EAAE;AAH4B,CAAX,CAAlC;AAKP,OAAO,MAAMN,SAAS,GAAGK,mBAAmB,CAACJ,WAAD,CAArC;AACP,OAAO,MAAMP,mBAAmB,GAAGW,mBAAmB,CAACV,qBAAD,EAAwB;AAC5EW,EAAAA,oBAAoB,EAAE;AADsD,CAAxB,CAA/C,C,CAGP;;AACAZ,mBAAmB,CAACe,SAApB,GAAgCd,qBAAqB,CAACc,SAAtD,C,CACA;AACA;AACA;;AACA,OAAO,MAAMC,cAAc,GAAGL,mBAAmB,CAACD,IAAD,CAA1C;AAEP,OAAO,MAAMR,QAAQ,gBAAGH,KAAK,CAACkB,UAAN,CACtB,CAAoBC,KAApB,EAAiDC,GAAjD,kBACE,oBAAC,UAAD;AACE,EAAA,GAAG,EAAEA;AADP,GAEMD,KAFN;AAGE,EAAA,qBAAqB,EAAGE,WAAD,iBAAiB,oBAAC,UAAD,EAAgBA,WAAhB;AAH1C,GAFoB,CAAjB","sourcesContent":["import * as React from 'react';\nimport {\n DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n FlatList as RNFlatList,\n Switch as RNSwitch,\n TextInput as RNTextInput,\n ScrollView as RNScrollView,\n FlatListProps,\n View,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nexport const ScrollView = createNativeWrapper(RNScrollView, {\n disallowInterruption: false,\n});\n\nexport const Switch = createNativeWrapper(RNSwitch, {\n shouldCancelWhenOutside: false,\n shouldActivateOnStart: true,\n disallowInterruption: true,\n});\nexport const TextInput = createNativeWrapper(RNTextInput);\nexport const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, {\n disallowInterruption: true,\n});\n// @ts-ignore -- TODO(TS) to investigate if it's needed\nDrawerLayoutAndroid.positions = RNDrawerLayoutAndroid.positions;\n// RefreshControl is implemented as a functional component, rendering a View\n// NativeViewGestureHandler needs to set a ref on its child, which cannot be done\n// on functional components\nexport const RefreshControl = createNativeWrapper(View);\n\nexport const FlatList = React.forwardRef(\n (props: FlatListProps, ref: any) => (\n }\n />\n )\n);\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js new file mode 100644 index 00000000..9a3aba89 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js @@ -0,0 +1,6 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +import { requireNativeComponent } from 'react-native'; +import { shouldUseCodegenNativeComponent } from '../utils'; +const RNGestureHandlerButtonNativeComponent = shouldUseCodegenNativeComponent() ? require('../fabric/RNGestureHandlerButtonNativeComponent').default : requireNativeComponent('RNGestureHandlerButton'); +export default RNGestureHandlerButtonNativeComponent; +//# sourceMappingURL=GestureHandlerButton.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js.map new file mode 100644 index 00000000..b7d80772 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerButton.tsx"],"names":["requireNativeComponent","shouldUseCodegenNativeComponent","RNGestureHandlerButtonNativeComponent","require","default"],"mappings":"AAAA;AACA,SAAwBA,sBAAxB,QAAsD,cAAtD;AAEA,SAASC,+BAAT,QAAgD,UAAhD;AAEA,MAAMC,qCAAqC,GAAGD,+BAA+B,KACzEE,OAAO,CAAC,iDAAD,CAAP,CAA2DC,OADc,GAEzEJ,sBAAsB,CAAC,wBAAD,CAF1B;AAIA,eAAeE,qCAAf","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { HostComponent, requireNativeComponent } from 'react-native';\nimport { RawButtonProps } from './GestureButtons';\nimport { shouldUseCodegenNativeComponent } from '../utils';\n\nconst RNGestureHandlerButtonNativeComponent = shouldUseCodegenNativeComponent()\n ? require('../fabric/RNGestureHandlerButtonNativeComponent').default\n : requireNativeComponent('RNGestureHandlerButton');\n\nexport default RNGestureHandlerButtonNativeComponent as HostComponent;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js new file mode 100644 index 00000000..59099baa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js @@ -0,0 +1,9 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import * as React from 'react'; +import { View } from 'react-native'; +export default /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(View, _extends({ + ref: ref, + accessibilityRole: "button" +}, props))); +//# sourceMappingURL=GestureHandlerButton.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js.map new file mode 100644 index 00000000..0ad42887 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/GestureHandlerButton.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerButton.web.tsx"],"names":["React","View","forwardRef","props","ref"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,4BAAeD,KAAK,CAACE,UAAN,CAAuB,CAACC,KAAD,EAAQC,GAAR,kBACpC,oBAAC,IAAD;AAAM,EAAA,GAAG,EAAEA,GAAX;AAAgB,EAAA,iBAAiB,EAAC;AAAlC,GAA+CD,KAA/C,EADa,CAAf","sourcesContent":["import * as React from 'react';\nimport { View } from 'react-native';\n\nexport default React.forwardRef((props, ref) => (\n \n));\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js new file mode 100644 index 00000000..98dd7ede --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js @@ -0,0 +1,351 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// Similarily to the DrawerLayout component this deserves to be put in a +// separate repo. Although, keeping it here for the time being will allow us to +// move faster and fix possible issues quicker +import * as React from 'react'; +import { Component } from 'react'; +import { Animated, StyleSheet, View, I18nManager } from 'react-native'; +import { PanGestureHandler } from '../handlers/PanGestureHandler'; +import { TapGestureHandler } from '../handlers/TapGestureHandler'; +import { State } from '../State'; +const DRAG_TOSS = 0.05; +export default class Swipeable extends Component { + constructor(_props) { + super(_props); + + _defineProperty(this, "onGestureEvent", void 0); + + _defineProperty(this, "transX", void 0); + + _defineProperty(this, "showLeftAction", void 0); + + _defineProperty(this, "leftActionTranslate", void 0); + + _defineProperty(this, "showRightAction", void 0); + + _defineProperty(this, "rightActionTranslate", void 0); + + _defineProperty(this, "updateAnimatedEvent", (props, state) => { + const { + friction, + overshootFriction + } = props; + const { + dragX, + rowTranslation, + leftWidth = 0, + rowWidth = 0 + } = state; + const { + rightOffset = rowWidth + } = state; + const rightWidth = Math.max(0, rowWidth - rightOffset); + const { + overshootLeft = leftWidth > 0, + overshootRight = rightWidth > 0 + } = props; + const transX = Animated.add(rowTranslation, dragX.interpolate({ + inputRange: [0, friction], + outputRange: [0, 1] + })).interpolate({ + inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1], + outputRange: [-rightWidth - (overshootRight ? 1 / overshootFriction : 0), -rightWidth, leftWidth, leftWidth + (overshootLeft ? 1 / overshootFriction : 0)] + }); + this.transX = transX; + this.showLeftAction = leftWidth > 0 ? transX.interpolate({ + inputRange: [-1, 0, leftWidth], + outputRange: [0, 0, 1] + }) : new Animated.Value(0); + this.leftActionTranslate = this.showLeftAction.interpolate({ + inputRange: [0, Number.MIN_VALUE], + outputRange: [-10000, 0], + extrapolate: 'clamp' + }); + this.showRightAction = rightWidth > 0 ? transX.interpolate({ + inputRange: [-rightWidth, 0, 1], + outputRange: [1, 0, 0] + }) : new Animated.Value(0); + this.rightActionTranslate = this.showRightAction.interpolate({ + inputRange: [0, Number.MIN_VALUE], + outputRange: [-10000, 0], + extrapolate: 'clamp' + }); + }); + + _defineProperty(this, "onTapHandlerStateChange", ({ + nativeEvent + }) => { + if (nativeEvent.oldState === State.ACTIVE) { + this.close(); + } + }); + + _defineProperty(this, "onHandlerStateChange", ev => { + if (ev.nativeEvent.oldState === State.ACTIVE) { + this.handleRelease(ev); + } + }); + + _defineProperty(this, "handleRelease", ev => { + const { + velocityX, + translationX: dragX + } = ev.nativeEvent; + const { + leftWidth = 0, + rowWidth = 0, + rowState + } = this.state; + const { + rightOffset = rowWidth + } = this.state; + const rightWidth = rowWidth - rightOffset; + const { + friction, + leftThreshold = leftWidth / 2, + rightThreshold = rightWidth / 2 + } = this.props; + const startOffsetX = this.currentOffset() + dragX / friction; + const translationX = (dragX + DRAG_TOSS * velocityX) / friction; + let toValue = 0; + + if (rowState === 0) { + if (translationX > leftThreshold) { + toValue = leftWidth; + } else if (translationX < -rightThreshold) { + toValue = -rightWidth; + } + } else if (rowState === 1) { + // swiped to left + if (translationX > -leftThreshold) { + toValue = leftWidth; + } + } else { + // swiped to right + if (translationX < rightThreshold) { + toValue = -rightWidth; + } + } + + this.animateRow(startOffsetX, toValue, velocityX / friction); + }); + + _defineProperty(this, "animateRow", (fromValue, toValue, velocityX) => { + const { + dragX, + rowTranslation + } = this.state; + dragX.setValue(0); + rowTranslation.setValue(fromValue); + this.setState({ + rowState: Math.sign(toValue) + }); + Animated.spring(rowTranslation, { + restSpeedThreshold: 1.7, + restDisplacementThreshold: 0.4, + velocity: velocityX, + bounciness: 0, + toValue, + useNativeDriver: this.props.useNativeAnimations, + ...this.props.animationOptions + }).start(({ + finished + }) => { + if (finished) { + if (toValue > 0) { + var _this$props$onSwipeab, _this$props, _this$props$onSwipeab2, _this$props2; + + (_this$props$onSwipeab = (_this$props = this.props).onSwipeableLeftOpen) === null || _this$props$onSwipeab === void 0 ? void 0 : _this$props$onSwipeab.call(_this$props); + (_this$props$onSwipeab2 = (_this$props2 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab2 === void 0 ? void 0 : _this$props$onSwipeab2.call(_this$props2, 'left', this); + } else if (toValue < 0) { + var _this$props$onSwipeab3, _this$props3, _this$props$onSwipeab4, _this$props4; + + (_this$props$onSwipeab3 = (_this$props3 = this.props).onSwipeableRightOpen) === null || _this$props$onSwipeab3 === void 0 ? void 0 : _this$props$onSwipeab3.call(_this$props3); + (_this$props$onSwipeab4 = (_this$props4 = this.props).onSwipeableOpen) === null || _this$props$onSwipeab4 === void 0 ? void 0 : _this$props$onSwipeab4.call(_this$props4, 'right', this); + } else { + var _this$props$onSwipeab5, _this$props5; + + const closingDirection = fromValue > 0 ? 'left' : 'right'; + (_this$props$onSwipeab5 = (_this$props5 = this.props).onSwipeableClose) === null || _this$props$onSwipeab5 === void 0 ? void 0 : _this$props$onSwipeab5.call(_this$props5, closingDirection, this); + } + } + }); + + if (toValue > 0) { + var _this$props$onSwipeab6, _this$props6, _this$props$onSwipeab7, _this$props7; + + (_this$props$onSwipeab6 = (_this$props6 = this.props).onSwipeableLeftWillOpen) === null || _this$props$onSwipeab6 === void 0 ? void 0 : _this$props$onSwipeab6.call(_this$props6); + (_this$props$onSwipeab7 = (_this$props7 = this.props).onSwipeableWillOpen) === null || _this$props$onSwipeab7 === void 0 ? void 0 : _this$props$onSwipeab7.call(_this$props7, 'left'); + } else if (toValue < 0) { + var _this$props$onSwipeab8, _this$props8, _this$props$onSwipeab9, _this$props9; + + (_this$props$onSwipeab8 = (_this$props8 = this.props).onSwipeableRightWillOpen) === null || _this$props$onSwipeab8 === void 0 ? void 0 : _this$props$onSwipeab8.call(_this$props8); + (_this$props$onSwipeab9 = (_this$props9 = this.props).onSwipeableWillOpen) === null || _this$props$onSwipeab9 === void 0 ? void 0 : _this$props$onSwipeab9.call(_this$props9, 'right'); + } else { + var _this$props$onSwipeab10, _this$props10; + + const closingDirection = fromValue > 0 ? 'left' : 'right'; + (_this$props$onSwipeab10 = (_this$props10 = this.props).onSwipeableWillClose) === null || _this$props$onSwipeab10 === void 0 ? void 0 : _this$props$onSwipeab10.call(_this$props10, closingDirection); + } + }); + + _defineProperty(this, "onRowLayout", ({ + nativeEvent + }) => { + this.setState({ + rowWidth: nativeEvent.layout.width + }); + }); + + _defineProperty(this, "currentOffset", () => { + const { + leftWidth = 0, + rowWidth = 0, + rowState + } = this.state; + const { + rightOffset = rowWidth + } = this.state; + const rightWidth = rowWidth - rightOffset; + + if (rowState === 1) { + return leftWidth; + } else if (rowState === -1) { + return -rightWidth; + } + + return 0; + }); + + _defineProperty(this, "close", () => { + this.animateRow(this.currentOffset(), 0); + }); + + _defineProperty(this, "openLeft", () => { + const { + leftWidth = 0 + } = this.state; + this.animateRow(this.currentOffset(), leftWidth); + }); + + _defineProperty(this, "openRight", () => { + const { + rowWidth = 0 + } = this.state; + const { + rightOffset = rowWidth + } = this.state; + const rightWidth = rowWidth - rightOffset; + this.animateRow(this.currentOffset(), -rightWidth); + }); + + const _dragX = new Animated.Value(0); + + this.state = { + dragX: _dragX, + rowTranslation: new Animated.Value(0), + rowState: 0, + leftWidth: undefined, + rightOffset: undefined, + rowWidth: undefined + }; + this.updateAnimatedEvent(_props, this.state); + this.onGestureEvent = Animated.event([{ + nativeEvent: { + translationX: _dragX + } + }], { + useNativeDriver: _props.useNativeAnimations + }); + } + + shouldComponentUpdate(props, state) { + if (this.props.friction !== props.friction || this.props.overshootLeft !== props.overshootLeft || this.props.overshootRight !== props.overshootRight || this.props.overshootFriction !== props.overshootFriction || this.state.leftWidth !== state.leftWidth || this.state.rightOffset !== state.rightOffset || this.state.rowWidth !== state.rowWidth) { + this.updateAnimatedEvent(props, state); + } + + return true; + } + + render() { + const { + rowState + } = this.state; + const { + children, + renderLeftActions, + renderRightActions + } = this.props; + const left = renderLeftActions && /*#__PURE__*/React.createElement(Animated.View, { + style: [styles.leftActions, // all those and below parameters can have ! since they are all + // asigned in constructor in `updateAnimatedEvent` but TS cannot spot + // it for some reason + { + transform: [{ + translateX: this.leftActionTranslate + }] + }] + }, renderLeftActions(this.showLeftAction, this.transX), /*#__PURE__*/React.createElement(View, { + onLayout: ({ + nativeEvent + }) => this.setState({ + leftWidth: nativeEvent.layout.x + }) + })); + const right = renderRightActions && /*#__PURE__*/React.createElement(Animated.View, { + style: [styles.rightActions, { + transform: [{ + translateX: this.rightActionTranslate + }] + }] + }, renderRightActions(this.showRightAction, this.transX, this), /*#__PURE__*/React.createElement(View, { + onLayout: ({ + nativeEvent + }) => this.setState({ + rightOffset: nativeEvent.layout.x + }) + })); + return /*#__PURE__*/React.createElement(PanGestureHandler, _extends({ + activeOffsetX: [-10, 10] + }, this.props, { + onGestureEvent: this.onGestureEvent, + onHandlerStateChange: this.onHandlerStateChange + }), /*#__PURE__*/React.createElement(Animated.View, { + onLayout: this.onRowLayout, + style: [styles.container, this.props.containerStyle] + }, left, right, /*#__PURE__*/React.createElement(TapGestureHandler, { + enabled: rowState !== 0, + onHandlerStateChange: this.onTapHandlerStateChange + }, /*#__PURE__*/React.createElement(Animated.View, { + pointerEvents: rowState === 0 ? 'auto' : 'box-only', + style: [{ + transform: [{ + translateX: this.transX + }] + }, this.props.childrenContainerStyle] + }, children)))); + } + +} + +_defineProperty(Swipeable, "defaultProps", { + friction: 1, + overshootFriction: 1, + useNativeAnimations: true +}); + +const styles = StyleSheet.create({ + container: { + overflow: 'hidden' + }, + leftActions: { ...StyleSheet.absoluteFillObject, + flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row' + }, + rightActions: { ...StyleSheet.absoluteFillObject, + flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse' + } +}); +//# sourceMappingURL=Swipeable.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js.map new file mode 100644 index 00000000..476f3fca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/Swipeable.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["Swipeable.tsx"],"names":["React","Component","Animated","StyleSheet","View","I18nManager","PanGestureHandler","TapGestureHandler","State","DRAG_TOSS","Swipeable","constructor","props","state","friction","overshootFriction","dragX","rowTranslation","leftWidth","rowWidth","rightOffset","rightWidth","Math","max","overshootLeft","overshootRight","transX","add","interpolate","inputRange","outputRange","showLeftAction","Value","leftActionTranslate","Number","MIN_VALUE","extrapolate","showRightAction","rightActionTranslate","nativeEvent","oldState","ACTIVE","close","ev","handleRelease","velocityX","translationX","rowState","leftThreshold","rightThreshold","startOffsetX","currentOffset","toValue","animateRow","fromValue","setValue","setState","sign","spring","restSpeedThreshold","restDisplacementThreshold","velocity","bounciness","useNativeDriver","useNativeAnimations","animationOptions","start","finished","onSwipeableLeftOpen","onSwipeableOpen","onSwipeableRightOpen","closingDirection","onSwipeableClose","onSwipeableLeftWillOpen","onSwipeableWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","layout","width","undefined","updateAnimatedEvent","onGestureEvent","event","shouldComponentUpdate","render","children","renderLeftActions","renderRightActions","left","styles","leftActions","transform","translateX","x","right","rightActions","onHandlerStateChange","onRowLayout","container","containerStyle","onTapHandlerStateChange","childrenContainerStyle","create","overflow","absoluteFillObject","flexDirection","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n StyleSheet,\n View,\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\n// Animated.AnimatedInterpolation has been converted to a generic type\n// in @types/react-native 0.70. This way we can maintain compatibility\n// with all versions of @types/react-native\ntype AnimatedInterpolation = ReturnType;\n\nexport interface SwipeableProps\n extends Pick {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when left action panel gets open.\n */\n onSwipeableLeftOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when right action panel gets open.\n */\n onSwipeableRightOpen?: () => void;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (\n direction: 'left' | 'right',\n swipeable: Swipeable\n ) => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when left action panel starts animating on open.\n */\n onSwipeableLeftWillOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when right action panel starts animating on open.\n */\n onSwipeableRightWillOpen?: () => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n\n useNativeAnimations?: boolean;\n\n animationOptions?: Record;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp;\n}\n\ntype SwipeableState = {\n dragX: Animated.Value;\n rowTranslation: Animated.Value;\n rowState: number;\n leftWidth?: number;\n rightOffset?: number;\n rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n SwipeableProps,\n SwipeableState\n> {\n static defaultProps = {\n friction: 1,\n overshootFriction: 1,\n useNativeAnimations: true,\n };\n\n constructor(props: SwipeableProps) {\n super(props);\n const dragX = new Animated.Value(0);\n this.state = {\n dragX,\n rowTranslation: new Animated.Value(0),\n rowState: 0,\n leftWidth: undefined,\n rightOffset: undefined,\n rowWidth: undefined,\n };\n this.updateAnimatedEvent(props, this.state);\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragX } }],\n { useNativeDriver: props.useNativeAnimations! }\n );\n }\n\n shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {\n if (\n this.props.friction !== props.friction ||\n this.props.overshootLeft !== props.overshootLeft ||\n this.props.overshootRight !== props.overshootRight ||\n this.props.overshootFriction !== props.overshootFriction ||\n this.state.leftWidth !== state.leftWidth ||\n this.state.rightOffset !== state.rightOffset ||\n this.state.rowWidth !== state.rowWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private onGestureEvent?: (\n event: GestureEvent\n ) => void;\n private transX?: AnimatedInterpolation;\n private showLeftAction?: AnimatedInterpolation | Animated.Value;\n private leftActionTranslate?: AnimatedInterpolation;\n private showRightAction?: AnimatedInterpolation | Animated.Value;\n private rightActionTranslate?: AnimatedInterpolation;\n\n private updateAnimatedEvent = (\n props: SwipeableProps,\n state: SwipeableState\n ) => {\n const { friction, overshootFriction } = props;\n const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n const { rightOffset = rowWidth } = state;\n const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } =\n props;\n\n const transX = Animated.add(\n rowTranslation,\n dragX.interpolate({\n inputRange: [0, friction!],\n outputRange: [0, 1],\n })\n ).interpolate({\n inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],\n outputRange: [\n -rightWidth - (overshootRight ? 1 / overshootFriction! : 0),\n -rightWidth,\n leftWidth,\n leftWidth + (overshootLeft ? 1 / overshootFriction! : 0),\n ],\n });\n this.transX = transX;\n this.showLeftAction =\n leftWidth > 0\n ? transX.interpolate({\n inputRange: [-1, 0, leftWidth],\n outputRange: [0, 0, 1],\n })\n : new Animated.Value(0);\n this.leftActionTranslate = this.showLeftAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n this.showRightAction =\n rightWidth > 0\n ? transX.interpolate({\n inputRange: [-rightWidth, 0, 1],\n outputRange: [1, 0, 0],\n })\n : new Animated.Value(0);\n this.rightActionTranslate = this.showRightAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.close();\n }\n };\n\n private onHandlerStateChange = (\n ev: HandlerStateChangeEvent\n ) => {\n if (ev.nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease(ev);\n }\n };\n\n private handleRelease = (\n ev: HandlerStateChangeEvent\n ) => {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n const {\n friction,\n leftThreshold = leftWidth / 2,\n rightThreshold = rightWidth / 2,\n } = this.props;\n\n const startOffsetX = this.currentOffset() + dragX / friction!;\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n let toValue = 0;\n if (rowState === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth;\n }\n } else if (rowState === 1) {\n // swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth;\n }\n } else {\n // swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth;\n }\n }\n\n this.animateRow(startOffsetX, toValue, velocityX / friction!);\n };\n\n private animateRow = (\n fromValue: number,\n toValue: number,\n velocityX?:\n | number\n | {\n x: number;\n y: number;\n }\n ) => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(fromValue);\n\n this.setState({ rowState: Math.sign(toValue) });\n Animated.spring(rowTranslation, {\n restSpeedThreshold: 1.7,\n restDisplacementThreshold: 0.4,\n velocity: velocityX,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n ...this.props.animationOptions,\n }).start(({ finished }) => {\n if (finished) {\n if (toValue > 0) {\n this.props.onSwipeableLeftOpen?.();\n this.props.onSwipeableOpen?.('left', this);\n } else if (toValue < 0) {\n this.props.onSwipeableRightOpen?.();\n this.props.onSwipeableOpen?.('right', this);\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableClose?.(closingDirection, this);\n }\n }\n });\n if (toValue > 0) {\n this.props.onSwipeableLeftWillOpen?.();\n this.props.onSwipeableWillOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightWillOpen?.();\n this.props.onSwipeableWillOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableWillClose?.(closingDirection);\n }\n };\n\n private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ rowWidth: nativeEvent.layout.width });\n };\n\n private currentOffset = () => {\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n if (rowState === 1) {\n return leftWidth;\n } else if (rowState === -1) {\n return -rightWidth;\n }\n return 0;\n };\n\n close = () => {\n this.animateRow(this.currentOffset(), 0);\n };\n\n openLeft = () => {\n const { leftWidth = 0 } = this.state;\n this.animateRow(this.currentOffset(), leftWidth);\n };\n\n openRight = () => {\n const { rowWidth = 0 } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n this.animateRow(this.currentOffset(), -rightWidth);\n };\n\n render() {\n const { rowState } = this.state;\n const { children, renderLeftActions, renderRightActions } = this.props;\n\n const left = renderLeftActions && (\n \n {renderLeftActions(this.showLeftAction!, this.transX!)}\n \n this.setState({ leftWidth: nativeEvent.layout.x })\n }\n />\n \n );\n\n const right = renderRightActions && (\n \n {renderRightActions(this.showRightAction!, this.transX!, this)}\n \n this.setState({ rightOffset: nativeEvent.layout.x })\n }\n />\n \n );\n\n return (\n \n \n {left}\n {right}\n \n \n {children}\n \n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js new file mode 100644 index 00000000..695cdb1e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js @@ -0,0 +1,268 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import * as React from 'react'; +import { Component } from 'react'; +import { Animated, Platform } from 'react-native'; +import { State } from '../../State'; +import { BaseButton } from '../GestureButtons'; + +/** + * Each touchable is a states' machine which preforms transitions. + * On very beginning (and on the very end or recognition) touchable is + * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger + * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition + * finishes in UNDETERMINED state. + */ +export const TOUCHABLE_STATE = { + UNDETERMINED: 0, + BEGAN: 1, + MOVED_OUTSIDE: 2 +}; + +/** + * GenericTouchable is not intented to be used as it is. + * Should be treated as a source for the rest of touchables + */ +export default class GenericTouchable extends Component { + constructor(...args) { + super(...args); + + _defineProperty(this, "pressInTimeout", void 0); + + _defineProperty(this, "pressOutTimeout", void 0); + + _defineProperty(this, "longPressTimeout", void 0); + + _defineProperty(this, "longPressDetected", false); + + _defineProperty(this, "pointerInside", true); + + _defineProperty(this, "STATE", TOUCHABLE_STATE.UNDETERMINED); + + _defineProperty(this, "onGestureEvent", ({ + nativeEvent: { + pointerInside + } + }) => { + if (this.pointerInside !== pointerInside) { + if (pointerInside) { + this.onMoveIn(); + } else { + this.onMoveOut(); + } + } + + this.pointerInside = pointerInside; + }); + + _defineProperty(this, "onHandlerStateChange", ({ + nativeEvent + }) => { + const { + state + } = nativeEvent; + + if (state === State.CANCELLED || state === State.FAILED) { + // Need to handle case with external cancellation (e.g. by ScrollView) + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + } else if ( // This platform check is an implication of slightly different behavior of handlers on different platform. + // And Android "Active" state is achieving on first move of a finger, not on press in. + // On iOS event on "Began" is not delivered. + state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) && this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + // Moving inside requires + this.handlePressIn(); + } else if (state === State.END) { + const shouldCallOnPress = !this.longPressDetected && this.STATE !== TOUCHABLE_STATE.MOVED_OUTSIDE && this.pressOutTimeout === null; + this.handleGoToUndetermined(); + + if (shouldCallOnPress) { + var _this$props$onPress, _this$props; + + // Calls only inside component whether no long press was called previously + (_this$props$onPress = (_this$props = this.props).onPress) === null || _this$props$onPress === void 0 ? void 0 : _this$props$onPress.call(_this$props); + } + } + }); + + _defineProperty(this, "onLongPressDetected", () => { + var _this$props$onLongPre, _this$props2; + + this.longPressDetected = true; // checked for in the caller of `onLongPressDetected`, but better to check twice + + (_this$props$onLongPre = (_this$props2 = this.props).onLongPress) === null || _this$props$onLongPre === void 0 ? void 0 : _this$props$onLongPre.call(_this$props2); + }); + } + + // handlePressIn in called on first touch on traveling inside component. + // Handles state transition with delay. + handlePressIn() { + if (this.props.delayPressIn) { + this.pressInTimeout = setTimeout(() => { + this.moveToState(TOUCHABLE_STATE.BEGAN); + this.pressInTimeout = null; + }, this.props.delayPressIn); + } else { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + + if (this.props.onLongPress) { + const time = (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0); + this.longPressTimeout = setTimeout(this.onLongPressDetected, time); + } + } // handleMoveOutside in called on traveling outside component. + // Handles state transition with delay. + + + handleMoveOutside() { + if (this.props.delayPressOut) { + this.pressOutTimeout = this.pressOutTimeout || setTimeout(() => { + this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE); + this.pressOutTimeout = null; + }, this.props.delayPressOut); + } else { + this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE); + } + } // handleGoToUndetermined transits to UNDETERMINED state with proper delay + + + handleGoToUndetermined() { + clearTimeout(this.pressOutTimeout); // TODO: maybe it can be undefined + + if (this.props.delayPressOut) { + this.pressOutTimeout = setTimeout(() => { + if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + this.pressOutTimeout = null; + }, this.props.delayPressOut); + } else { + if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + } + } + + componentDidMount() { + this.reset(); + } // reset timeout to prevent memory leaks. + + + reset() { + this.longPressDetected = false; + this.pointerInside = true; + clearTimeout(this.pressInTimeout); + clearTimeout(this.pressOutTimeout); + clearTimeout(this.longPressTimeout); + this.pressOutTimeout = null; + this.longPressTimeout = null; + this.pressInTimeout = null; + } // All states' transitions are defined here. + + + moveToState(newState) { + var _this$props$onStateCh, _this$props6; + + if (newState === this.STATE) { + // Ignore dummy transitions + return; + } + + if (newState === TOUCHABLE_STATE.BEGAN) { + var _this$props$onPressIn, _this$props3; + + // First touch and moving inside + (_this$props$onPressIn = (_this$props3 = this.props).onPressIn) === null || _this$props$onPressIn === void 0 ? void 0 : _this$props$onPressIn.call(_this$props3); + } else if (newState === TOUCHABLE_STATE.MOVED_OUTSIDE) { + var _this$props$onPressOu, _this$props4; + + // Moving outside + (_this$props$onPressOu = (_this$props4 = this.props).onPressOut) === null || _this$props$onPressOu === void 0 ? void 0 : _this$props$onPressOu.call(_this$props4); + } else if (newState === TOUCHABLE_STATE.UNDETERMINED) { + // Need to reset each time on transition to UNDETERMINED + this.reset(); + + if (this.STATE === TOUCHABLE_STATE.BEGAN) { + var _this$props$onPressOu2, _this$props5; + + // ... and if it happens inside button. + (_this$props$onPressOu2 = (_this$props5 = this.props).onPressOut) === null || _this$props$onPressOu2 === void 0 ? void 0 : _this$props$onPressOu2.call(_this$props5); + } + } // Finally call lister (used by subclasses) + + + (_this$props$onStateCh = (_this$props6 = this.props).onStateChange) === null || _this$props$onStateCh === void 0 ? void 0 : _this$props$onStateCh.call(_this$props6, this.STATE, newState); // ... and make transition. + + this.STATE = newState; + } + + componentWillUnmount() { + // to prevent memory leaks + this.reset(); + } + + onMoveIn() { + if (this.STATE === TOUCHABLE_STATE.MOVED_OUTSIDE) { + // This call is not throttled with delays (like in RN's implementation). + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + } + + onMoveOut() { + // long press should no longer be detected + clearTimeout(this.longPressTimeout); + this.longPressTimeout = null; + + if (this.STATE === TOUCHABLE_STATE.BEGAN) { + this.handleMoveOutside(); + } + } + + render() { + var _this$props$touchSoun; + + const coreProps = { + accessible: this.props.accessible !== false, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityHint: this.props.accessibilityHint, + accessibilityRole: this.props.accessibilityRole, + // TODO: check if changed to no 's' correctly, also removed 2 props that are no longer available: `accessibilityComponentType` and `accessibilityTraits`, + // would be good to check if it is ok for sure, see: https://github.com/facebook/react-native/issues/24016 + accessibilityState: this.props.accessibilityState, + accessibilityActions: this.props.accessibilityActions, + onAccessibilityAction: this.props.onAccessibilityAction, + nativeID: this.props.nativeID, + onLayout: this.props.onLayout, + hitSlop: this.props.hitSlop + }; + return /*#__PURE__*/React.createElement(BaseButton, _extends({ + style: this.props.containerStyle, + onHandlerStateChange: // TODO: not sure if it can be undefined instead of null + this.props.disabled ? undefined : this.onHandlerStateChange, + onGestureEvent: this.onGestureEvent, + hitSlop: this.props.hitSlop, + shouldActivateOnStart: this.props.shouldActivateOnStart, + disallowInterruption: this.props.disallowInterruption, + testID: this.props.testID, + touchSoundDisabled: (_this$props$touchSoun = this.props.touchSoundDisabled) !== null && _this$props$touchSoun !== void 0 ? _this$props$touchSoun : false, + enabled: !this.props.disabled + }, this.props.extraButtonProps), /*#__PURE__*/React.createElement(Animated.View, _extends({}, coreProps, { + style: this.props.style + }), this.props.children)); + } + +} + +_defineProperty(GenericTouchable, "defaultProps", { + delayLongPress: 600, + extraButtonProps: { + rippleColor: 'transparent', + exclusive: true + } +}); +//# sourceMappingURL=GenericTouchable.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js.map new file mode 100644 index 00000000..c8f6447b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/GenericTouchable.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GenericTouchable.tsx"],"names":["React","Component","Animated","Platform","State","BaseButton","TOUCHABLE_STATE","UNDETERMINED","BEGAN","MOVED_OUTSIDE","GenericTouchable","nativeEvent","pointerInside","onMoveIn","onMoveOut","state","CANCELLED","FAILED","moveToState","OS","ACTIVE","STATE","handlePressIn","END","shouldCallOnPress","longPressDetected","pressOutTimeout","handleGoToUndetermined","props","onPress","onLongPress","delayPressIn","pressInTimeout","setTimeout","time","delayLongPress","longPressTimeout","onLongPressDetected","handleMoveOutside","delayPressOut","clearTimeout","componentDidMount","reset","newState","onPressIn","onPressOut","onStateChange","componentWillUnmount","render","coreProps","accessible","accessibilityLabel","accessibilityHint","accessibilityRole","accessibilityState","accessibilityActions","onAccessibilityAction","nativeID","onLayout","hitSlop","containerStyle","disabled","undefined","onHandlerStateChange","onGestureEvent","shouldActivateOnStart","disallowInterruption","testID","touchSoundDisabled","extraButtonProps","style","children","rippleColor","exclusive"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n Platform,\n StyleProp,\n ViewStyle,\n TouchableWithoutFeedbackProps,\n} from 'react-native';\n\nimport { State } from '../../State';\nimport { BaseButton } from '../GestureButtons';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../../handlers/gestureHandlerCommon';\nimport { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler';\nimport { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android';\n\n/**\n * Each touchable is a states' machine which preforms transitions.\n * On very beginning (and on the very end or recognition) touchable is\n * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger\n * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition\n * finishes in UNDETERMINED state.\n */\nexport const TOUCHABLE_STATE = {\n UNDETERMINED: 0,\n BEGAN: 1,\n MOVED_OUTSIDE: 2,\n} as const;\n\ntype TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE];\n\nexport interface GenericTouchableProps extends TouchableWithoutFeedbackProps {\n // Decided to drop not used fields from RN's implementation.\n // e.g. onBlur and onFocus as well as deprecated props. - TODO: this comment may be unuseful in this moment\n\n // TODO: in RN these events get native event parameter, which prolly could be used in our implementation too\n onPress?: () => void;\n onPressIn?: () => void;\n onPressOut?: () => void;\n onLongPress?: () => void;\n\n nativeID?: string;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n\n containerStyle?: StyleProp;\n}\n\ninterface InternalProps {\n extraButtonProps: TouchableNativeFeedbackExtraProps;\n onStateChange?: (oldState: TouchableState, newState: TouchableState) => void;\n}\n\n// TODO: maybe can be better\n// TODO: all clearTimeout have ! added, maybe they shouldn't ?\ntype Timeout = ReturnType | null | undefined;\n\n/**\n * GenericTouchable is not intented to be used as it is.\n * Should be treated as a source for the rest of touchables\n */\n\nexport default class GenericTouchable extends Component<\n GenericTouchableProps & InternalProps\n> {\n static defaultProps = {\n delayLongPress: 600,\n extraButtonProps: {\n rippleColor: 'transparent',\n exclusive: true,\n },\n };\n\n // timeout handlers\n pressInTimeout: Timeout;\n pressOutTimeout: Timeout;\n longPressTimeout: Timeout;\n\n // This flag is required since recognition of longPress implies not-invoking onPress\n longPressDetected = false;\n\n pointerInside = true;\n\n // State of touchable\n STATE: TouchableState = TOUCHABLE_STATE.UNDETERMINED;\n\n // handlePressIn in called on first touch on traveling inside component.\n // Handles state transition with delay.\n handlePressIn() {\n if (this.props.delayPressIn) {\n this.pressInTimeout = setTimeout(() => {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n this.pressInTimeout = null;\n }, this.props.delayPressIn);\n } else {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n if (this.props.onLongPress) {\n const time =\n (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0);\n this.longPressTimeout = setTimeout(this.onLongPressDetected, time);\n }\n }\n // handleMoveOutside in called on traveling outside component.\n // Handles state transition with delay.\n handleMoveOutside() {\n if (this.props.delayPressOut) {\n this.pressOutTimeout =\n this.pressOutTimeout ||\n setTimeout(() => {\n this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE);\n this.pressOutTimeout = null;\n }, this.props.delayPressOut);\n } else {\n this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE);\n }\n }\n\n // handleGoToUndetermined transits to UNDETERMINED state with proper delay\n handleGoToUndetermined() {\n clearTimeout(this.pressOutTimeout!); // TODO: maybe it can be undefined\n if (this.props.delayPressOut) {\n this.pressOutTimeout = setTimeout(() => {\n if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n this.pressOutTimeout = null;\n }, this.props.delayPressOut);\n } else {\n if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) {\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n }\n }\n\n componentDidMount() {\n this.reset();\n }\n // reset timeout to prevent memory leaks.\n reset() {\n this.longPressDetected = false;\n this.pointerInside = true;\n clearTimeout(this.pressInTimeout!);\n clearTimeout(this.pressOutTimeout!);\n clearTimeout(this.longPressTimeout!);\n this.pressOutTimeout = null;\n this.longPressTimeout = null;\n this.pressInTimeout = null;\n }\n\n // All states' transitions are defined here.\n moveToState(newState: TouchableState) {\n if (newState === this.STATE) {\n // Ignore dummy transitions\n return;\n }\n if (newState === TOUCHABLE_STATE.BEGAN) {\n // First touch and moving inside\n this.props.onPressIn?.();\n } else if (newState === TOUCHABLE_STATE.MOVED_OUTSIDE) {\n // Moving outside\n this.props.onPressOut?.();\n } else if (newState === TOUCHABLE_STATE.UNDETERMINED) {\n // Need to reset each time on transition to UNDETERMINED\n this.reset();\n if (this.STATE === TOUCHABLE_STATE.BEGAN) {\n // ... and if it happens inside button.\n this.props.onPressOut?.();\n }\n }\n // Finally call lister (used by subclasses)\n this.props.onStateChange?.(this.STATE, newState);\n // ... and make transition.\n this.STATE = newState;\n }\n\n onGestureEvent = ({\n nativeEvent: { pointerInside },\n }: GestureEvent) => {\n if (this.pointerInside !== pointerInside) {\n if (pointerInside) {\n this.onMoveIn();\n } else {\n this.onMoveOut();\n }\n }\n this.pointerInside = pointerInside;\n };\n\n onHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent) => {\n const { state } = nativeEvent;\n if (state === State.CANCELLED || state === State.FAILED) {\n // Need to handle case with external cancellation (e.g. by ScrollView)\n this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n } else if (\n // This platform check is an implication of slightly different behavior of handlers on different platform.\n // And Android \"Active\" state is achieving on first move of a finger, not on press in.\n // On iOS event on \"Began\" is not delivered.\n state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&\n this.STATE === TOUCHABLE_STATE.UNDETERMINED\n ) {\n // Moving inside requires\n this.handlePressIn();\n } else if (state === State.END) {\n const shouldCallOnPress =\n !this.longPressDetected &&\n this.STATE !== TOUCHABLE_STATE.MOVED_OUTSIDE &&\n this.pressOutTimeout === null;\n this.handleGoToUndetermined();\n if (shouldCallOnPress) {\n // Calls only inside component whether no long press was called previously\n this.props.onPress?.();\n }\n }\n };\n\n onLongPressDetected = () => {\n this.longPressDetected = true;\n // checked for in the caller of `onLongPressDetected`, but better to check twice\n this.props.onLongPress?.();\n };\n\n componentWillUnmount() {\n // to prevent memory leaks\n this.reset();\n }\n\n onMoveIn() {\n if (this.STATE === TOUCHABLE_STATE.MOVED_OUTSIDE) {\n // This call is not throttled with delays (like in RN's implementation).\n this.moveToState(TOUCHABLE_STATE.BEGAN);\n }\n }\n\n onMoveOut() {\n // long press should no longer be detected\n clearTimeout(this.longPressTimeout!);\n this.longPressTimeout = null;\n if (this.STATE === TOUCHABLE_STATE.BEGAN) {\n this.handleMoveOutside();\n }\n }\n\n render() {\n const coreProps = {\n accessible: this.props.accessible !== false,\n accessibilityLabel: this.props.accessibilityLabel,\n accessibilityHint: this.props.accessibilityHint,\n accessibilityRole: this.props.accessibilityRole,\n // TODO: check if changed to no 's' correctly, also removed 2 props that are no longer available: `accessibilityComponentType` and `accessibilityTraits`,\n // would be good to check if it is ok for sure, see: https://github.com/facebook/react-native/issues/24016\n accessibilityState: this.props.accessibilityState,\n accessibilityActions: this.props.accessibilityActions,\n onAccessibilityAction: this.props.onAccessibilityAction,\n nativeID: this.props.nativeID,\n onLayout: this.props.onLayout,\n hitSlop: this.props.hitSlop,\n };\n\n return (\n \n \n {this.props.children}\n \n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js new file mode 100644 index 00000000..746af459 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js @@ -0,0 +1,95 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import * as React from 'react'; +import { Component } from 'react'; +import GenericTouchable, { TOUCHABLE_STATE } from './GenericTouchable'; +import { StyleSheet, View } from 'react-native'; + +/** + * TouchableHighlight follows RN's implementation + */ +export default class TouchableHighlight extends Component { + constructor(props) { + super(props); + + _defineProperty(this, "showUnderlay", () => { + var _this$props$onShowUnd, _this$props; + + if (!this.hasPressHandler()) { + return; + } + + this.setState({ + extraChildStyle: { + opacity: this.props.activeOpacity + }, + extraUnderlayStyle: { + backgroundColor: this.props.underlayColor + } + }); + (_this$props$onShowUnd = (_this$props = this.props).onShowUnderlay) === null || _this$props$onShowUnd === void 0 ? void 0 : _this$props$onShowUnd.call(_this$props); + }); + + _defineProperty(this, "hasPressHandler", () => this.props.onPress || this.props.onPressIn || this.props.onPressOut || this.props.onLongPress); + + _defineProperty(this, "hideUnderlay", () => { + var _this$props$onHideUnd, _this$props2; + + this.setState({ + extraChildStyle: null, + extraUnderlayStyle: null + }); + (_this$props$onHideUnd = (_this$props2 = this.props).onHideUnderlay) === null || _this$props$onHideUnd === void 0 ? void 0 : _this$props$onHideUnd.call(_this$props2); + }); + + _defineProperty(this, "onStateChange", (_from, to) => { + if (to === TOUCHABLE_STATE.BEGAN) { + this.showUnderlay(); + } else if (to === TOUCHABLE_STATE.UNDETERMINED || to === TOUCHABLE_STATE.MOVED_OUTSIDE) { + this.hideUnderlay(); + } + }); + + this.state = { + extraChildStyle: null, + extraUnderlayStyle: null + }; + } // Copied from RN + + + renderChildren() { + if (!this.props.children) { + return /*#__PURE__*/React.createElement(View, null); + } + + const child = React.Children.only(this.props.children); // TODO: not sure if OK but fixes error + + return /*#__PURE__*/React.cloneElement(child, { + style: StyleSheet.compose(child.props.style, this.state.extraChildStyle) + }); + } + + render() { + const { + style = {}, + ...rest + } = this.props; + const { + extraUnderlayStyle + } = this.state; + return /*#__PURE__*/React.createElement(GenericTouchable, _extends({}, rest, { + style: [style, extraUnderlayStyle], + onStateChange: this.onStateChange + }), this.renderChildren()); + } + +} + +_defineProperty(TouchableHighlight, "defaultProps", { ...GenericTouchable.defaultProps, + activeOpacity: 0.85, + delayPressOut: 100, + underlayColor: 'black' +}); +//# sourceMappingURL=TouchableHighlight.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js.map new file mode 100644 index 00000000..7a5fed8b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableHighlight.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableHighlight.tsx"],"names":["React","Component","GenericTouchable","TOUCHABLE_STATE","StyleSheet","View","TouchableHighlight","constructor","props","hasPressHandler","setState","extraChildStyle","opacity","activeOpacity","extraUnderlayStyle","backgroundColor","underlayColor","onShowUnderlay","onPress","onPressIn","onPressOut","onLongPress","onHideUnderlay","_from","to","BEGAN","showUnderlay","UNDETERMINED","MOVED_OUTSIDE","hideUnderlay","state","renderChildren","children","child","Children","only","cloneElement","style","compose","render","rest","onStateChange","defaultProps","delayPressOut"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,QAA0B,OAA1B;AACA,OAAOC,gBAAP,IAEEC,eAFF,QAGO,oBAHP;AAIA,SACEC,UADF,EAEEC,IAFF,QAMO,cANP;;AAiBA;AACA;AACA;AACA,eAAe,MAAMC,kBAAN,SAAiCL,SAAjC,CAGb;AAQAM,EAAAA,WAAW,CAACC,KAAD,EAAyD;AAClE,UAAMA,KAAN;;AADkE,0CASrD,MAAM;AAAA;;AACnB,UAAI,CAAC,KAAKC,eAAL,EAAL,EAA6B;AAC3B;AACD;;AACD,WAAKC,QAAL,CAAc;AACZC,QAAAA,eAAe,EAAE;AACfC,UAAAA,OAAO,EAAE,KAAKJ,KAAL,CAAWK;AADL,SADL;AAIZC,QAAAA,kBAAkB,EAAE;AAClBC,UAAAA,eAAe,EAAE,KAAKP,KAAL,CAAWQ;AADV;AAJR,OAAd;AAQA,mDAAKR,KAAL,EAAWS,cAAX;AACD,KAtBmE;;AAAA,6CAwBlD,MAChB,KAAKT,KAAL,CAAWU,OAAX,IACA,KAAKV,KAAL,CAAWW,SADX,IAEA,KAAKX,KAAL,CAAWY,UAFX,IAGA,KAAKZ,KAAL,CAAWa,WA5BuD;;AAAA,0CA8BrD,MAAM;AAAA;;AACnB,WAAKX,QAAL,CAAc;AACZC,QAAAA,eAAe,EAAE,IADL;AAEZG,QAAAA,kBAAkB,EAAE;AAFR,OAAd;AAIA,oDAAKN,KAAL,EAAWc,cAAX;AACD,KApCmE;;AAAA,2CAmDpD,CAACC,KAAD,EAAgBC,EAAhB,KAA+B;AAC7C,UAAIA,EAAE,KAAKrB,eAAe,CAACsB,KAA3B,EAAkC;AAChC,aAAKC,YAAL;AACD,OAFD,MAEO,IACLF,EAAE,KAAKrB,eAAe,CAACwB,YAAvB,IACAH,EAAE,KAAKrB,eAAe,CAACyB,aAFlB,EAGL;AACA,aAAKC,YAAL;AACD;AACF,KA5DmE;;AAElE,SAAKC,KAAL,GAAa;AACXnB,MAAAA,eAAe,EAAE,IADN;AAEXG,MAAAA,kBAAkB,EAAE;AAFT,KAAb;AAID,GAdD,CAgBA;;;AA8BAiB,EAAAA,cAAc,GAAG;AACf,QAAI,CAAC,KAAKvB,KAAL,CAAWwB,QAAhB,EAA0B;AACxB,0BAAO,oBAAC,IAAD,OAAP;AACD;;AAED,UAAMC,KAAK,GAAGjC,KAAK,CAACkC,QAAN,CAAeC,IAAf,CACZ,KAAK3B,KAAL,CAAWwB,QADC,CAAd,CALe,CAOqB;;AACpC,wBAAOhC,KAAK,CAACoC,YAAN,CAAmBH,KAAnB,EAA0B;AAC/BI,MAAAA,KAAK,EAAEjC,UAAU,CAACkC,OAAX,CAAmBL,KAAK,CAACzB,KAAN,CAAY6B,KAA/B,EAAsC,KAAKP,KAAL,CAAWnB,eAAjD;AADwB,KAA1B,CAAP;AAGD;;AAaD4B,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEF,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGG;AAAjB,QAA0B,KAAKhC,KAArC;AACA,UAAM;AAAEM,MAAAA;AAAF,QAAyB,KAAKgB,KAApC;AACA,wBACE,oBAAC,gBAAD,eACMU,IADN;AAEE,MAAA,KAAK,EAAE,CAACH,KAAD,EAAQvB,kBAAR,CAFT;AAGE,MAAA,aAAa,EAAE,KAAK2B;AAHtB,QAIG,KAAKV,cAAL,EAJH,CADF;AAQD;;AAjFD;;gBAHmBzB,kB,kBAIG,EACpB,GAAGJ,gBAAgB,CAACwC,YADA;AAEpB7B,EAAAA,aAAa,EAAE,IAFK;AAGpB8B,EAAAA,aAAa,EAAE,GAHK;AAIpB3B,EAAAA,aAAa,EAAE;AAJK,C","sourcesContent":["import * as React from 'react';\nimport { Component } from 'react';\nimport GenericTouchable, {\n GenericTouchableProps,\n TOUCHABLE_STATE,\n} from './GenericTouchable';\nimport {\n StyleSheet,\n View,\n TouchableHighlightProps,\n ColorValue,\n ViewProps,\n} from 'react-native';\n\ninterface State {\n extraChildStyle: null | {\n opacity?: number;\n };\n extraUnderlayStyle: null | {\n backgroundColor?: ColorValue;\n };\n}\n\n/**\n * TouchableHighlight follows RN's implementation\n */\nexport default class TouchableHighlight extends Component<\n TouchableHighlightProps & GenericTouchableProps,\n State\n> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n activeOpacity: 0.85,\n delayPressOut: 100,\n underlayColor: 'black',\n };\n\n constructor(props: TouchableHighlightProps & GenericTouchableProps) {\n super(props);\n this.state = {\n extraChildStyle: null,\n extraUnderlayStyle: null,\n };\n }\n\n // Copied from RN\n showUnderlay = () => {\n if (!this.hasPressHandler()) {\n return;\n }\n this.setState({\n extraChildStyle: {\n opacity: this.props.activeOpacity,\n },\n extraUnderlayStyle: {\n backgroundColor: this.props.underlayColor,\n },\n });\n this.props.onShowUnderlay?.();\n };\n\n hasPressHandler = () =>\n this.props.onPress ||\n this.props.onPressIn ||\n this.props.onPressOut ||\n this.props.onLongPress;\n\n hideUnderlay = () => {\n this.setState({\n extraChildStyle: null,\n extraUnderlayStyle: null,\n });\n this.props.onHideUnderlay?.();\n };\n\n renderChildren() {\n if (!this.props.children) {\n return ;\n }\n\n const child = React.Children.only(\n this.props.children\n ) as React.ReactElement; // TODO: not sure if OK but fixes error\n return React.cloneElement(child, {\n style: StyleSheet.compose(child.props.style, this.state.extraChildStyle),\n });\n }\n\n onStateChange = (_from: number, to: number) => {\n if (to === TOUCHABLE_STATE.BEGAN) {\n this.showUnderlay();\n } else if (\n to === TOUCHABLE_STATE.UNDETERMINED ||\n to === TOUCHABLE_STATE.MOVED_OUTSIDE\n ) {\n this.hideUnderlay();\n }\n };\n\n render() {\n const { style = {}, ...rest } = this.props;\n const { extraUnderlayStyle } = this.state;\n return (\n \n {this.renderChildren()}\n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js new file mode 100644 index 00000000..8922c64e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js @@ -0,0 +1,84 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { Platform } from 'react-native'; +import * as React from 'react'; +import { Component } from 'react'; +import GenericTouchable from './GenericTouchable'; + +/** + * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback. + * There's small difference with handling long press ripple since RN's implementation calls + * ripple animation via bridge. This solution leaves all animations' handling for native components so + * it follows native behaviours. + */ +export default class TouchableNativeFeedback extends Component { + // could be taken as RNTouchableNativeFeedback.SelectableBackground etc. but the API may change + getExtraButtonProps() { + const extraProps = {}; + const { + background + } = this.props; + + if (background) { + // I changed type values to match those used in RN + // TODO(TS): check if it works the same as previous implementation - looks like it works the same as RN component, so it should be ok + if (background.type === 'RippleAndroid') { + extraProps['borderless'] = background.borderless; + extraProps['rippleColor'] = background.color; + } else if (background.type === 'ThemeAttrAndroid') { + extraProps['borderless'] = background.attribute === 'selectableItemBackgroundBorderless'; + } // I moved it from above since it should be available in all options + + + extraProps['rippleRadius'] = background.rippleRadius; + } + + extraProps['foreground'] = this.props.useForeground; + return extraProps; + } + + render() { + const { + style = {}, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(GenericTouchable, _extends({}, rest, { + style: style, + extraButtonProps: this.getExtraButtonProps() + })); + } + +} + +_defineProperty(TouchableNativeFeedback, "defaultProps", { ...GenericTouchable.defaultProps, + useForeground: true, + extraButtonProps: { + // Disable hiding ripple on Android + rippleColor: null + } +}); + +_defineProperty(TouchableNativeFeedback, "SelectableBackground", rippleRadius => ({ + type: 'ThemeAttrAndroid', + // I added `attribute` prop to clone the implementation of RN and be able to use only 2 types + attribute: 'selectableItemBackground', + rippleRadius +})); + +_defineProperty(TouchableNativeFeedback, "SelectableBackgroundBorderless", rippleRadius => ({ + type: 'ThemeAttrAndroid', + attribute: 'selectableItemBackgroundBorderless', + rippleRadius +})); + +_defineProperty(TouchableNativeFeedback, "Ripple", (color, borderless, rippleRadius) => ({ + type: 'RippleAndroid', + color, + borderless, + rippleRadius +})); + +_defineProperty(TouchableNativeFeedback, "canUseNativeForeground", () => Platform.Version >= 23); +//# sourceMappingURL=TouchableNativeFeedback.android.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js.map new file mode 100644 index 00000000..b5cb68b7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.android.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableNativeFeedback.android.tsx"],"names":["Platform","React","Component","GenericTouchable","TouchableNativeFeedback","getExtraButtonProps","extraProps","background","props","type","borderless","color","attribute","rippleRadius","useForeground","render","style","rest","defaultProps","extraButtonProps","rippleColor","Version"],"mappings":";;;;AAAA,SACEA,QADF,QAIO,cAJP;AAKA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,QAA0B,OAA1B;AACA,OAAOC,gBAAP,MAAwD,oBAAxD;;AASA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,uBAAN,SAAsCF,SAAtC,CAEb;AAUA;AAyBAG,EAAAA,mBAAmB,GAAG;AACpB,UAAMC,UAA6C,GAAG,EAAtD;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAiB,KAAKC,KAA5B;;AACA,QAAID,UAAJ,EAAgB;AACd;AACA;AACA,UAAIA,UAAU,CAACE,IAAX,KAAoB,eAAxB,EAAyC;AACvCH,QAAAA,UAAU,CAAC,YAAD,CAAV,GAA2BC,UAAU,CAACG,UAAtC;AACAJ,QAAAA,UAAU,CAAC,aAAD,CAAV,GAA4BC,UAAU,CAACI,KAAvC;AACD,OAHD,MAGO,IAAIJ,UAAU,CAACE,IAAX,KAAoB,kBAAxB,EAA4C;AACjDH,QAAAA,UAAU,CAAC,YAAD,CAAV,GACEC,UAAU,CAACK,SAAX,KAAyB,oCAD3B;AAED,OATa,CAUd;;;AACAN,MAAAA,UAAU,CAAC,cAAD,CAAV,GAA6BC,UAAU,CAACM,YAAxC;AACD;;AACDP,IAAAA,UAAU,CAAC,YAAD,CAAV,GAA2B,KAAKE,KAAL,CAAWM,aAAtC;AACA,WAAOR,UAAP;AACD;;AACDS,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGC;AAAjB,QAA0B,KAAKT,KAArC;AACA,wBACE,oBAAC,gBAAD,eACMS,IADN;AAEE,MAAA,KAAK,EAAED,KAFT;AAGE,MAAA,gBAAgB,EAAE,KAAKX,mBAAL;AAHpB,OADF;AAOD;;AA/DD;;gBAFmBD,uB,kBAGG,EACpB,GAAGD,gBAAgB,CAACe,YADA;AAEpBJ,EAAAA,aAAa,EAAE,IAFK;AAGpBK,EAAAA,gBAAgB,EAAE;AAChB;AACAC,IAAAA,WAAW,EAAE;AAFG;AAHE,C;;gBAHHhB,uB,0BAaYS,YAAD,KAA4B;AACxDJ,EAAAA,IAAI,EAAE,kBADkD;AAExD;AACAG,EAAAA,SAAS,EAAE,0BAH6C;AAIxDC,EAAAA;AAJwD,CAA5B,C;;gBAbXT,uB,oCAmBsBS,YAAD,KAA4B;AAClEJ,EAAAA,IAAI,EAAE,kBAD4D;AAElEG,EAAAA,SAAS,EAAE,oCAFuD;AAGlEC,EAAAA;AAHkE,CAA5B,C;;gBAnBrBT,uB,YAwBH,CACdO,KADc,EAEdD,UAFc,EAGdG,YAHc,MAIV;AACJJ,EAAAA,IAAI,EAAE,eADF;AAEJE,EAAAA,KAFI;AAGJD,EAAAA,UAHI;AAIJG,EAAAA;AAJI,CAJU,C;;gBAxBGT,uB,4BAmCa,MAAMJ,QAAQ,CAACqB,OAAT,IAAoB,E","sourcesContent":["import {\n Platform,\n TouchableNativeFeedbackProps,\n ColorValue,\n} from 'react-native';\nimport * as React from 'react';\nimport { Component } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nexport type TouchableNativeFeedbackExtraProps = {\n borderless?: boolean;\n rippleColor?: number | null;\n rippleRadius?: number | null;\n foreground?: boolean;\n};\n\n/**\n * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback.\n * There's small difference with handling long press ripple since RN's implementation calls\n * ripple animation via bridge. This solution leaves all animations' handling for native components so\n * it follows native behaviours.\n */\nexport default class TouchableNativeFeedback extends Component<\n TouchableNativeFeedbackProps & GenericTouchableProps\n> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n useForeground: true,\n extraButtonProps: {\n // Disable hiding ripple on Android\n rippleColor: null,\n },\n };\n\n // could be taken as RNTouchableNativeFeedback.SelectableBackground etc. but the API may change\n static SelectableBackground = (rippleRadius?: number) => ({\n type: 'ThemeAttrAndroid',\n // I added `attribute` prop to clone the implementation of RN and be able to use only 2 types\n attribute: 'selectableItemBackground',\n rippleRadius,\n });\n static SelectableBackgroundBorderless = (rippleRadius?: number) => ({\n type: 'ThemeAttrAndroid',\n attribute: 'selectableItemBackgroundBorderless',\n rippleRadius,\n });\n static Ripple = (\n color: ColorValue,\n borderless: boolean,\n rippleRadius?: number\n ) => ({\n type: 'RippleAndroid',\n color,\n borderless,\n rippleRadius,\n });\n\n static canUseNativeForeground = () => Platform.Version >= 23;\n\n getExtraButtonProps() {\n const extraProps: TouchableNativeFeedbackExtraProps = {};\n const { background } = this.props;\n if (background) {\n // I changed type values to match those used in RN\n // TODO(TS): check if it works the same as previous implementation - looks like it works the same as RN component, so it should be ok\n if (background.type === 'RippleAndroid') {\n extraProps['borderless'] = background.borderless;\n extraProps['rippleColor'] = background.color;\n } else if (background.type === 'ThemeAttrAndroid') {\n extraProps['borderless'] =\n background.attribute === 'selectableItemBackgroundBorderless';\n }\n // I moved it from above since it should be available in all options\n extraProps['rippleRadius'] = background.rippleRadius;\n }\n extraProps['foreground'] = this.props.useForeground;\n return extraProps;\n }\n render() {\n const { style = {}, ...rest } = this.props;\n return (\n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js new file mode 100644 index 00000000..d75a3e28 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js @@ -0,0 +1,3 @@ +import { TouchableNativeFeedback } from 'react-native'; +export default TouchableNativeFeedback; +//# sourceMappingURL=TouchableNativeFeedback.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js.map new file mode 100644 index 00000000..aaa81bad --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableNativeFeedback.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableNativeFeedback.tsx"],"names":["TouchableNativeFeedback"],"mappings":"AAAA,SAASA,uBAAT,QAAwC,cAAxC;AAEA,eAAeA,uBAAf","sourcesContent":["import { TouchableNativeFeedback } from 'react-native';\n\nexport default TouchableNativeFeedback;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js new file mode 100644 index 00000000..8abeb03d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js @@ -0,0 +1,63 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { Animated, Easing, StyleSheet, View } from 'react-native'; +import GenericTouchable, { TOUCHABLE_STATE } from './GenericTouchable'; +import * as React from 'react'; +import { Component } from 'react'; + +/** + * TouchableOpacity bases on timing animation which has been used in RN's core + */ +export default class TouchableOpacity extends Component { + constructor(...args) { + super(...args); + + _defineProperty(this, "getChildStyleOpacityWithDefault", () => { + const childStyle = StyleSheet.flatten(this.props.style) || {}; + return childStyle.opacity == null ? 1 : childStyle.opacity; + }); + + _defineProperty(this, "opacity", new Animated.Value(this.getChildStyleOpacityWithDefault())); + + _defineProperty(this, "setOpacityTo", (value, duration) => { + var _this$props$useNative; + + Animated.timing(this.opacity, { + toValue: value, + duration: duration, + easing: Easing.inOut(Easing.quad), + useNativeDriver: (_this$props$useNative = this.props.useNativeAnimations) !== null && _this$props$useNative !== void 0 ? _this$props$useNative : true + }).start(); + }); + + _defineProperty(this, "onStateChange", (_from, to) => { + if (to === TOUCHABLE_STATE.BEGAN) { + this.setOpacityTo(this.props.activeOpacity, 0); + } else if (to === TOUCHABLE_STATE.UNDETERMINED || to === TOUCHABLE_STATE.MOVED_OUTSIDE) { + this.setOpacityTo(this.getChildStyleOpacityWithDefault(), 150); + } + }); + } + + render() { + const { + style = {}, + ...rest + } = this.props; + return /*#__PURE__*/React.createElement(GenericTouchable, _extends({}, rest, { + style: [style, { + opacity: this.opacity // TODO: fix this + + }], + onStateChange: this.onStateChange + }), this.props.children ? this.props.children : /*#__PURE__*/React.createElement(View, null)); + } + +} + +_defineProperty(TouchableOpacity, "defaultProps", { ...GenericTouchable.defaultProps, + activeOpacity: 0.2 +}); +//# sourceMappingURL=TouchableOpacity.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js.map new file mode 100644 index 00000000..94b8f685 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableOpacity.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableOpacity.tsx"],"names":["Animated","Easing","StyleSheet","View","GenericTouchable","TOUCHABLE_STATE","React","Component","TouchableOpacity","childStyle","flatten","props","style","opacity","Value","getChildStyleOpacityWithDefault","value","duration","timing","toValue","easing","inOut","quad","useNativeDriver","useNativeAnimations","start","_from","to","BEGAN","setOpacityTo","activeOpacity","UNDETERMINED","MOVED_OUTSIDE","render","rest","onStateChange","children","defaultProps"],"mappings":";;;;AAAA,SACEA,QADF,EAEEC,MAFF,EAGEC,UAHF,EAIEC,IAJF,QAMO,cANP;AAOA,OAAOC,gBAAP,IACEC,eADF,QAGO,oBAHP;AAIA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,QAA0B,OAA1B;;AAMA;AACA;AACA;AACA,eAAe,MAAMC,gBAAN,SAA+BD,SAA/B,CAEb;AAAA;AAAA;;AAAA,6DAOkC,MAAM;AACtC,YAAME,UAAU,GAAGP,UAAU,CAACQ,OAAX,CAAmB,KAAKC,KAAL,CAAWC,KAA9B,KAAwC,EAA3D;AACA,aAAOH,UAAU,CAACI,OAAX,IAAsB,IAAtB,GAA6B,CAA7B,GAAiCJ,UAAU,CAACI,OAAnD;AACD,KAVD;;AAAA,qCAYU,IAAIb,QAAQ,CAACc,KAAb,CAAmB,KAAKC,+BAAL,EAAnB,CAZV;;AAAA,0CAce,CAACC,KAAD,EAAgBC,QAAhB,KAAqC;AAAA;;AAClDjB,MAAAA,QAAQ,CAACkB,MAAT,CAAgB,KAAKL,OAArB,EAA8B;AAC5BM,QAAAA,OAAO,EAAEH,KADmB;AAE5BC,QAAAA,QAAQ,EAAEA,QAFkB;AAG5BG,QAAAA,MAAM,EAAEnB,MAAM,CAACoB,KAAP,CAAapB,MAAM,CAACqB,IAApB,CAHoB;AAI5BC,QAAAA,eAAe,2BAAE,KAAKZ,KAAL,CAAWa,mBAAb,yEAAoC;AAJvB,OAA9B,EAKGC,KALH;AAMD,KArBD;;AAAA,2CAuBgB,CAACC,KAAD,EAAgBC,EAAhB,KAA+B;AAC7C,UAAIA,EAAE,KAAKtB,eAAe,CAACuB,KAA3B,EAAkC;AAChC,aAAKC,YAAL,CAAkB,KAAKlB,KAAL,CAAWmB,aAA7B,EAA6C,CAA7C;AACD,OAFD,MAEO,IACLH,EAAE,KAAKtB,eAAe,CAAC0B,YAAvB,IACAJ,EAAE,KAAKtB,eAAe,CAAC2B,aAFlB,EAGL;AACA,aAAKH,YAAL,CAAkB,KAAKd,+BAAL,EAAlB,EAA0D,GAA1D;AACD;AACF,KAhCD;AAAA;;AAkCAkB,EAAAA,MAAM,GAAG;AACP,UAAM;AAAErB,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGsB;AAAjB,QAA0B,KAAKvB,KAArC;AACA,wBACE,oBAAC,gBAAD,eACMuB,IADN;AAEE,MAAA,KAAK,EAAE,CACLtB,KADK,EAEL;AACEC,QAAAA,OAAO,EAAE,KAAKA,OADhB,CAC8C;;AAD9C,OAFK,CAFT;AAQE,MAAA,aAAa,EAAE,KAAKsB;AARtB,QASG,KAAKxB,KAAL,CAAWyB,QAAX,GAAsB,KAAKzB,KAAL,CAAWyB,QAAjC,gBAA4C,oBAAC,IAAD,OAT/C,CADF;AAaD;;AAjDD;;gBAFmB5B,gB,kBAGG,EACpB,GAAGJ,gBAAgB,CAACiC,YADA;AAEpBP,EAAAA,aAAa,EAAE;AAFK,C","sourcesContent":["import {\n Animated,\n Easing,\n StyleSheet,\n View,\n TouchableOpacityProps,\n} from 'react-native';\nimport GenericTouchable, {\n TOUCHABLE_STATE,\n GenericTouchableProps,\n} from './GenericTouchable';\nimport * as React from 'react';\nimport { Component } from 'react';\n\ninterface GHTouchableOpacityProps {\n useNativeAnimations?: boolean;\n}\n\n/**\n * TouchableOpacity bases on timing animation which has been used in RN's core\n */\nexport default class TouchableOpacity extends Component<\n TouchableOpacityProps & GenericTouchableProps & GHTouchableOpacityProps\n> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n activeOpacity: 0.2,\n };\n\n // opacity is 1 one by default but could be overwritten\n getChildStyleOpacityWithDefault = () => {\n const childStyle = StyleSheet.flatten(this.props.style) || {};\n return childStyle.opacity == null ? 1 : childStyle.opacity;\n };\n\n opacity = new Animated.Value(this.getChildStyleOpacityWithDefault());\n\n setOpacityTo = (value: number, duration: number) => {\n Animated.timing(this.opacity, {\n toValue: value,\n duration: duration,\n easing: Easing.inOut(Easing.quad),\n useNativeDriver: this.props.useNativeAnimations ?? true,\n }).start();\n };\n\n onStateChange = (_from: number, to: number) => {\n if (to === TOUCHABLE_STATE.BEGAN) {\n this.setOpacityTo(this.props.activeOpacity!, 0);\n } else if (\n to === TOUCHABLE_STATE.UNDETERMINED ||\n to === TOUCHABLE_STATE.MOVED_OUTSIDE\n ) {\n this.setOpacityTo(this.getChildStyleOpacityWithDefault(), 150);\n }\n };\n\n render() {\n const { style = {}, ...rest } = this.props;\n return (\n \n {this.props.children ? this.props.children : }\n \n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js new file mode 100644 index 00000000..163396ae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js @@ -0,0 +1,10 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import * as React from 'react'; +import GenericTouchable from './GenericTouchable'; +const TouchableWithoutFeedback = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(GenericTouchable, _extends({ + ref: ref +}, props))); +TouchableWithoutFeedback.defaultProps = GenericTouchable.defaultProps; +export default TouchableWithoutFeedback; +//# sourceMappingURL=TouchableWithoutFeedback.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js.map new file mode 100644 index 00000000..082ee5ec --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/TouchableWithoutFeedback.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchableWithoutFeedback.tsx"],"names":["React","GenericTouchable","TouchableWithoutFeedback","forwardRef","props","ref","defaultProps"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,gBAAP,MAAwD,oBAAxD;AAEA,MAAMC,wBAAwB,gBAAGF,KAAK,CAACG,UAAN,CAG/B,CAACC,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,gBAAD;AAAkB,EAAA,GAAG,EAAEA;AAAvB,GAAgCD,KAAhC,EAHe,CAAjC;AAKAF,wBAAwB,CAACI,YAAzB,GAAwCL,gBAAgB,CAACK,YAAzD;AAEA,eAAeJ,wBAAf","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nconst TouchableWithoutFeedback = React.forwardRef<\n GenericTouchable,\n PropsWithChildren\n>((props, ref) => );\n\nTouchableWithoutFeedback.defaultProps = GenericTouchable.defaultProps;\n\nexport default TouchableWithoutFeedback;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js new file mode 100644 index 00000000..cd5165ed --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js @@ -0,0 +1,5 @@ +export { default as TouchableNativeFeedback } from './TouchableNativeFeedback'; +export { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback'; +export { default as TouchableOpacity } from './TouchableOpacity'; +export { default as TouchableHighlight } from './TouchableHighlight'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js.map new file mode 100644 index 00000000..9e6c56cd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/components/touchables/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":["default","TouchableNativeFeedback","TouchableWithoutFeedback","TouchableOpacity","TouchableHighlight"],"mappings":"AAAA,SAASA,OAAO,IAAIC,uBAApB,QAAmD,2BAAnD;AACA,SAASD,OAAO,IAAIE,wBAApB,QAAoD,4BAApD;AACA,SAASF,OAAO,IAAIG,gBAApB,QAA4C,oBAA5C;AACA,SAASH,OAAO,IAAII,kBAApB,QAA8C,sBAA9C","sourcesContent":["export { default as TouchableNativeFeedback } from './TouchableNativeFeedback';\nexport { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback';\nexport { default as TouchableOpacity } from './TouchableOpacity';\nexport { default as TouchableHighlight } from './TouchableHighlight';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js new file mode 100644 index 00000000..9e67000a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js @@ -0,0 +1,3 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +export default codegenNativeComponent('RNGestureHandlerButton'); +//# sourceMappingURL=RNGestureHandlerButtonNativeComponent.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map new file mode 100644 index 00000000..6062b08d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerButtonNativeComponent.ts"],"names":["codegenNativeComponent"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,yDAAnC;AAiBA,eAAeA,sBAAsB,CAAc,wBAAd,CAArC","sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type {\n Int32,\n WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport type { ViewProps, ColorValue } from 'react-native';\n\ninterface NativeProps extends ViewProps {\n exclusive?: WithDefault;\n foreground?: boolean;\n borderless?: boolean;\n enabled?: WithDefault;\n rippleColor?: ColorValue;\n rippleRadius?: Int32;\n touchSoundDisabled?: WithDefault;\n}\n\nexport default codegenNativeComponent('RNGestureHandlerButton');\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js new file mode 100644 index 00000000..e3b4d7e7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js @@ -0,0 +1,3 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +export default codegenNativeComponent('RNGestureHandlerRootView'); +//# sourceMappingURL=RNGestureHandlerRootViewNativeComponent.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map new file mode 100644 index 00000000..6c5fc98d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RNGestureHandlerRootViewNativeComponent.ts"],"names":["codegenNativeComponent"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,yDAAnC;AAKA,eAAeA,sBAAsB,CAAc,0BAAd,CAArC","sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\ninterface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent('RNGestureHandlerRootView');\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js new file mode 100644 index 00000000..3d0efcc9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { StyleSheet } from 'react-native'; +import hoistNonReactStatics from 'hoist-non-react-statics'; +import GestureHandlerRootView from './GestureHandlerRootView'; +export default function gestureHandlerRootHOC(Component, containerStyles) { + function Wrapper(props) { + return /*#__PURE__*/React.createElement(GestureHandlerRootView, { + style: [styles.container, containerStyles] + }, /*#__PURE__*/React.createElement(Component, props)); + } + + Wrapper.displayName = `gestureHandlerRootHOC(${Component.displayName || Component.name})`; // @ts-ignore - hoistNonReactStatics uses old version of @types/react + + hoistNonReactStatics(Wrapper, Component); + return Wrapper; +} +const styles = StyleSheet.create({ + container: { + flex: 1 + } +}); +//# sourceMappingURL=gestureHandlerRootHOC.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js.map new file mode 100644 index 00000000..8706de28 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/gestureHandlerRootHOC.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureHandlerRootHOC.tsx"],"names":["React","StyleSheet","hoistNonReactStatics","GestureHandlerRootView","gestureHandlerRootHOC","Component","containerStyles","Wrapper","props","styles","container","displayName","name","create","flex"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAAiD,cAAjD;AACA,OAAOC,oBAAP,MAAiC,yBAAjC;AACA,OAAOC,sBAAP,MAAmC,0BAAnC;AAEA,eAAe,SAASC,qBAAT,CAGbC,SAHa,EAIbC,eAJa,EAKW;AACxB,WAASC,OAAT,CAAiBC,KAAjB,EAA2B;AACzB,wBACE,oBAAC,sBAAD;AAAwB,MAAA,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmBJ,eAAnB;AAA/B,oBACE,oBAAC,SAAD,EAAeE,KAAf,CADF,CADF;AAKD;;AAEDD,EAAAA,OAAO,CAACI,WAAR,GAAuB,yBACrBN,SAAS,CAACM,WAAV,IAAyBN,SAAS,CAACO,IACpC,GAFD,CATwB,CAaxB;;AACAV,EAAAA,oBAAoB,CAACK,OAAD,EAAUF,SAAV,CAApB;AAEA,SAAOE,OAAP;AACD;AAED,MAAME,MAAM,GAAGR,UAAU,CAACY,MAAX,CAAkB;AAC/BH,EAAAA,SAAS,EAAE;AAAEI,IAAAA,IAAI,EAAE;AAAR;AADoB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport GestureHandlerRootView from './GestureHandlerRootView';\n\nexport default function gestureHandlerRootHOC<\n P extends JSX.IntrinsicAttributes\n>(\n Component: React.ComponentType

,\n containerStyles?: StyleProp\n): React.ComponentType

{\n function Wrapper(props: P) {\n return (\n \n \n \n );\n }\n\n Wrapper.displayName = `gestureHandlerRootHOC(${\n Component.displayName || Component.name\n })`;\n\n // @ts-ignore - hoistNonReactStatics uses old version of @types/react\n hoistNonReactStatics(Wrapper, Component);\n\n return Wrapper;\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js new file mode 100644 index 00000000..fcd1e199 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js @@ -0,0 +1,20 @@ +// Used by GestureDetector (unsupported on web at the moment) to check whether the +// attached view may get flattened on Fabric. This implementation causes errors +// on web due to the static resolution of `require` statements by webpack breaking +// the conditional importing. Solved by making .web file. +let findHostInstance_DEPRECATED; +export function getShadowNodeFromRef(ref) { + // load findHostInstance_DEPRECATED lazily because it may not be available before render + if (findHostInstance_DEPRECATED === undefined) { + try { + findHostInstance_DEPRECATED = // eslint-disable-next-line @typescript-eslint/no-var-requires + require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED; + } catch (e) { + findHostInstance_DEPRECATED = _ref => null; + } + } // @ts-ignore Fabric + + + return findHostInstance_DEPRECATED(ref)._internalInstanceHandle.stateNode.node; +} +//# sourceMappingURL=getShadowNodeFromRef.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js.map new file mode 100644 index 00000000..e10a02e1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["getShadowNodeFromRef.ts"],"names":["findHostInstance_DEPRECATED","getShadowNodeFromRef","ref","undefined","require","e","_ref","_internalInstanceHandle","stateNode","node"],"mappings":"AAAA;AACA;AACA;AACA;AACA,IAAIA,2BAAJ;AAEA,OAAO,SAASC,oBAAT,CAA8BC,GAA9B,EAAwC;AAC7C;AACA,MAAIF,2BAA2B,KAAKG,SAApC,EAA+C;AAC7C,QAAI;AACFH,MAAAA,2BAA2B,GACzB;AACAI,MAAAA,OAAO,CAAC,mDAAD,CAAP,CAA6DJ,2BAF/D;AAGD,KAJD,CAIE,OAAOK,CAAP,EAAU;AACVL,MAAAA,2BAA2B,GAAIM,IAAD,IAAe,IAA7C;AACD;AACF,GAV4C,CAY7C;;;AACA,SAAON,2BAA2B,CAACE,GAAD,CAA3B,CAAiCK,uBAAjC,CAAyDC,SAAzD,CACJC,IADH;AAED","sourcesContent":["// Used by GestureDetector (unsupported on web at the moment) to check whether the\n// attached view may get flattened on Fabric. This implementation causes errors\n// on web due to the static resolution of `require` statements by webpack breaking\n// the conditional importing. Solved by making .web file.\nlet findHostInstance_DEPRECATED: (ref: any) => void;\n\nexport function getShadowNodeFromRef(ref: any) {\n // load findHostInstance_DEPRECATED lazily because it may not be available before render\n if (findHostInstance_DEPRECATED === undefined) {\n try {\n findHostInstance_DEPRECATED =\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED;\n } catch (e) {\n findHostInstance_DEPRECATED = (_ref: any) => null;\n }\n }\n\n // @ts-ignore Fabric\n return findHostInstance_DEPRECATED(ref)._internalInstanceHandle.stateNode\n .node;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js new file mode 100644 index 00000000..a5dbf1f2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js @@ -0,0 +1,8 @@ +// Used by GestureDetector (unsupported on web at the moment) to check whether the +// attached view may get flattened on Fabric. Original implementation causes errors +// on web due to the static resolution of `require` statements by webpack breaking +// the conditional importing. +export function getShadowNodeFromRef(_ref) { + return null; +} +//# sourceMappingURL=getShadowNodeFromRef.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js.map new file mode 100644 index 00000000..d2a1c37d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/getShadowNodeFromRef.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["getShadowNodeFromRef.web.ts"],"names":["getShadowNodeFromRef","_ref"],"mappings":"AAAA;AACA;AACA;AACA;AACA,OAAO,SAASA,oBAAT,CAA8BC,IAA9B,EAAyC;AAC9C,SAAO,IAAP;AACD","sourcesContent":["// Used by GestureDetector (unsupported on web at the moment) to check whether the\n// attached view may get flattened on Fabric. Original implementation causes errors\n// on web due to the static resolution of `require` statements by webpack breaking\n// the conditional importing.\nexport function getShadowNodeFromRef(_ref: any) {\n return null;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js new file mode 100644 index 00000000..082e5ec1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js @@ -0,0 +1,11 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const flingGestureHandlerProps = ['numberOfPointers', 'direction']; +export const flingHandlerName = 'FlingGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const FlingGestureHandler = createHandler({ + name: flingHandlerName, + allowedProps: [...baseGestureHandlerProps, ...flingGestureHandlerProps], + config: {} +}); +//# sourceMappingURL=FlingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js.map new file mode 100644 index 00000000..0254f836 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/FlingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["FlingGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","flingGestureHandlerProps","flingHandlerName","FlingGestureHandler","name","allowedProps","config"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAKA,OAAO,MAAMC,wBAAwB,GAAG,CACtC,kBADsC,EAEtC,WAFsC,CAAjC;AAsCP,OAAO,MAAMC,gBAAgB,GAAG,qBAAzB;AAGP;AACA,OAAO,MAAMC,mBAAmB,GAAGJ,aAAa,CAG9C;AACAK,EAAAA,IAAI,EAAEF,gBADN;AAEAG,EAAAA,YAAY,EAAE,CACZ,GAAGL,uBADS,EAEZ,GAAGC,wBAFS,CAFd;AAMAK,EAAAA,MAAM,EAAE;AANR,CAH8C,CAAzC","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const flingGestureHandlerProps = [\n 'numberOfPointers',\n 'direction',\n] as const;\n\nexport type FlingGestureHandlerEventPayload = {\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\nexport interface FlingGestureConfig {\n /**\n * Expressed allowed direction of movement. It's possible to pass one or many\n * directions in one parameter:\n *\n * ```js\n * direction={Directions.RIGHT | Directions.LEFT}\n * ```\n *\n * or\n *\n * ```js\n * direction={Directions.DOWN}\n * ```\n */\n direction?: number;\n\n /**\n * Determine exact number of points required to handle the fling gesture.\n */\n numberOfPointers?: number;\n}\n\nexport interface FlingGestureHandlerProps\n extends BaseGestureHandlerProps,\n FlingGestureConfig {}\n\nexport const flingHandlerName = 'FlingGestureHandler';\n\nexport type FlingGestureHandler = typeof FlingGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const FlingGestureHandler = createHandler<\n FlingGestureHandlerProps,\n FlingGestureHandlerEventPayload\n>({\n name: flingHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...flingGestureHandlerProps,\n ] as const,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js new file mode 100644 index 00000000..d92079a3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js @@ -0,0 +1,31 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import React from 'react'; +import { tagMessage } from '../utils'; +import PlatformConstants from '../PlatformConstants'; +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const forceTouchGestureHandlerProps = ['minForce', 'maxForce', 'feedbackOnActivation']; // implicit `children` prop has been removed in @types/react^18.0.0 + +class ForceTouchFallback extends React.Component { + componentDidMount() { + console.warn(tagMessage('ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase')); + } + + render() { + return this.props.children; + } + +} + +_defineProperty(ForceTouchFallback, "forceTouchAvailable", false); + +export const forceTouchHandlerName = 'ForceTouchGestureHandler'; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file + +export const ForceTouchGestureHandler = PlatformConstants !== null && PlatformConstants !== void 0 && PlatformConstants.forceTouchAvailable ? createHandler({ + name: forceTouchHandlerName, + allowedProps: [...baseGestureHandlerProps, ...forceTouchGestureHandlerProps], + config: {} +}) : ForceTouchFallback; +ForceTouchGestureHandler.forceTouchAvailable = (PlatformConstants === null || PlatformConstants === void 0 ? void 0 : PlatformConstants.forceTouchAvailable) || false; +//# sourceMappingURL=ForceTouchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js.map new file mode 100644 index 00000000..efdc811c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/ForceTouchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ForceTouchGestureHandler.ts"],"names":["React","tagMessage","PlatformConstants","createHandler","baseGestureHandlerProps","forceTouchGestureHandlerProps","ForceTouchFallback","Component","componentDidMount","console","warn","render","props","children","forceTouchHandlerName","ForceTouchGestureHandler","forceTouchAvailable","name","allowedProps","config"],"mappings":";;AAAA,OAAOA,KAAP,MAAyC,OAAzC;AACA,SAASC,UAAT,QAA2B,UAA3B;AACA,OAAOC,iBAAP,MAA8B,sBAA9B;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAKA,OAAO,MAAMC,6BAA6B,GAAG,CAC3C,UAD2C,EAE3C,UAF2C,EAG3C,sBAH2C,CAAtC,C,CAMP;;AACA,MAAMC,kBAAN,SAAiCN,KAAK,CAACO,SAAvC,CAA6E;AAE3EC,EAAAA,iBAAiB,GAAG;AAClBC,IAAAA,OAAO,CAACC,IAAR,CACET,UAAU,CACR,8NADQ,CADZ;AAKD;;AACDU,EAAAA,MAAM,GAAG;AACP,WAAO,KAAKC,KAAL,CAAWC,QAAlB;AACD;;AAX0E;;gBAAvEP,kB,yBACyB,K;;AAsD/B,OAAO,MAAMQ,qBAAqB,GAAG,0BAA9B,C,CAEP;;AACA,OAAO,MAAMC,wBAAwB,GAAGb,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,IAAAA,iBAAiB,CAAEc,mBAAnB,GACpCb,aAAa,CAGX;AACAc,EAAAA,IAAI,EAAEH,qBADN;AAEAI,EAAAA,YAAY,EAAE,CACZ,GAAGd,uBADS,EAEZ,GAAGC,6BAFS,CAFd;AAMAc,EAAAA,MAAM,EAAE;AANR,CAHW,CADuB,GAYpCb,kBAZG;AAcNS,wBAAD,CAAuDC,mBAAvD,GACE,CAAAd,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAEc,mBAAnB,KAA0C,KAD5C","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { tagMessage } from '../utils';\nimport PlatformConstants from '../PlatformConstants';\nimport createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const forceTouchGestureHandlerProps = [\n 'minForce',\n 'maxForce',\n 'feedbackOnActivation',\n] as const;\n\n// implicit `children` prop has been removed in @types/react^18.0.0\nclass ForceTouchFallback extends React.Component> {\n static forceTouchAvailable = false;\n componentDidMount() {\n console.warn(\n tagMessage(\n 'ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase'\n )\n );\n }\n render() {\n return this.props.children;\n }\n}\n\nexport type ForceTouchGestureHandlerEventPayload = {\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n\n /**\n * The pressure of a touch.\n */\n force: number;\n};\n\nexport interface ForceTouchGestureConfig {\n /**\n *\n * A minimal pressure that is required before handler can activate. Should be a\n * value from range `[0.0, 1.0]`. Default is `0.2`.\n */\n minForce?: number;\n\n /**\n * A maximal pressure that could be applied for handler. If the pressure is\n * greater, handler fails. Should be a value from range `[0.0, 1.0]`.\n */\n maxForce?: number;\n\n /**\n * Boolean value defining if haptic feedback has to be performed on\n * activation.\n */\n feedbackOnActivation?: boolean;\n}\n\nexport interface ForceTouchGestureHandlerProps\n extends BaseGestureHandlerProps,\n ForceTouchGestureConfig {}\n\nexport type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {\n forceTouchAvailable: boolean;\n};\n\nexport const forceTouchHandlerName = 'ForceTouchGestureHandler';\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const ForceTouchGestureHandler = PlatformConstants?.forceTouchAvailable\n ? createHandler<\n ForceTouchGestureHandlerProps,\n ForceTouchGestureHandlerEventPayload\n >({\n name: forceTouchHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...forceTouchGestureHandlerProps,\n ] as const,\n config: {},\n })\n : ForceTouchFallback;\n\n(ForceTouchGestureHandler as ForceTouchGestureHandler).forceTouchAvailable =\n PlatformConstants?.forceTouchAvailable || false;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js new file mode 100644 index 00000000..1e205cc0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js @@ -0,0 +1,13 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const longPressGestureHandlerProps = ['minDurationMs', 'maxDist']; +export const longPressHandlerName = 'LongPressGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const LongPressGestureHandler = createHandler({ + name: longPressHandlerName, + allowedProps: [...baseGestureHandlerProps, ...longPressGestureHandlerProps], + config: { + shouldCancelWhenOutside: true + } +}); +//# sourceMappingURL=LongPressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js.map new file mode 100644 index 00000000..fe2cd5d7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/LongPressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","longPressGestureHandlerProps","longPressHandlerName","LongPressGestureHandler","name","allowedProps","config","shouldCancelWhenOutside"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAKA,OAAO,MAAMC,4BAA4B,GAAG,CAC1C,eAD0C,EAE1C,SAF0C,CAArC;AAiEP,OAAO,MAAMC,oBAAoB,GAAG,yBAA7B;AAGP;AACA,OAAO,MAAMC,uBAAuB,GAAGJ,aAAa,CAGlD;AACAK,EAAAA,IAAI,EAAEF,oBADN;AAEAG,EAAAA,YAAY,EAAE,CACZ,GAAGL,uBADS,EAEZ,GAAGC,4BAFS,CAFd;AAMAK,EAAAA,MAAM,EAAE;AACNC,IAAAA,uBAAuB,EAAE;AADnB;AANR,CAHkD,CAA7C","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const longPressGestureHandlerProps = [\n 'minDurationMs',\n 'maxDist',\n] as const;\n\nexport type LongPressGestureHandlerEventPayload = {\n /**\n * X coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the view attached to the handler.\n */\n x: number;\n\n /**\n * Y coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the view attached to the handler.\n */\n y: number;\n\n /**\n * X coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the window. It is recommended to use `absoluteX` instead of\n * `x` in cases when the view attached to the handler can be transformed as an\n * effect of the gesture.\n */\n absoluteX: number;\n\n /**\n * Y coordinate, expressed in points, of the current position of the pointer\n * (finger or a leading pointer when there are multiple fingers placed)\n * relative to the window. It is recommended to use `absoluteY` instead of\n * `y` in cases when the view attached to the handler can be transformed as an\n * effect of the gesture.\n */\n absoluteY: number;\n\n /**\n * Duration of the long press (time since the start of the event), expressed\n * in milliseconds.\n */\n duration: number;\n};\n\nexport interface LongPressGestureConfig {\n /**\n * Minimum time, expressed in milliseconds, that a finger must remain pressed on\n * the corresponding view. The default value is 500.\n */\n minDurationMs?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel during a long press gesture. If the finger travels\n * further than the defined distance and the handler hasn't yet activated, it\n * will fail to recognize the gesture. The default value is 10.\n */\n maxDist?: number;\n}\n\nexport interface LongPressGestureHandlerProps\n extends BaseGestureHandlerProps,\n LongPressGestureConfig {}\n\nexport const longPressHandlerName = 'LongPressGestureHandler';\n\nexport type LongPressGestureHandler = typeof LongPressGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const LongPressGestureHandler = createHandler<\n LongPressGestureHandlerProps,\n LongPressGestureHandlerEventPayload\n>({\n name: longPressHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...longPressGestureHandlerProps,\n ] as const,\n config: {\n shouldCancelWhenOutside: true,\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js new file mode 100644 index 00000000..33f12e44 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js @@ -0,0 +1,12 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const nativeViewGestureHandlerProps = ['shouldActivateOnStart', 'disallowInterruption']; +export const nativeViewProps = [...baseGestureHandlerProps, ...nativeViewGestureHandlerProps]; +export const nativeViewHandlerName = 'NativeViewGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const NativeViewGestureHandler = createHandler({ + name: nativeViewHandlerName, + allowedProps: nativeViewProps, + config: {} +}); +//# sourceMappingURL=NativeViewGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js.map new file mode 100644 index 00000000..1bdd4da4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/NativeViewGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","nativeViewGestureHandlerProps","nativeViewProps","nativeViewHandlerName","NativeViewGestureHandler","name","allowedProps","config"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAKA,OAAO,MAAMC,6BAA6B,GAAG,CAC3C,uBAD2C,EAE3C,sBAF2C,CAAtC;AAgCP,OAAO,MAAMC,eAAe,GAAG,CAC7B,GAAGF,uBAD0B,EAE7B,GAAGC,6BAF0B,CAAxB;AAKP,OAAO,MAAME,qBAAqB,GAAG,0BAA9B;AAGP;AACA,OAAO,MAAMC,wBAAwB,GAAGL,aAAa,CAGnD;AACAM,EAAAA,IAAI,EAAEF,qBADN;AAEAG,EAAAA,YAAY,EAAEJ,eAFd;AAGAK,EAAAA,MAAM,EAAE;AAHR,CAHmD,CAA9C","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const nativeViewGestureHandlerProps = [\n 'shouldActivateOnStart',\n 'disallowInterruption',\n] as const;\n\nexport interface NativeViewGestureConfig {\n /**\n * Android only.\n *\n * Determines whether the handler should check for an existing touch event on\n * instantiation.\n */\n shouldActivateOnStart?: boolean;\n\n /**\n * When `true`, cancels all other gesture handlers when this\n * `NativeViewGestureHandler` receives an `ACTIVE` state event.\n */\n disallowInterruption?: boolean;\n}\n\nexport interface NativeViewGestureHandlerProps\n extends BaseGestureHandlerProps,\n NativeViewGestureConfig {}\n\nexport type NativeViewGestureHandlerPayload = {\n /**\n * True if gesture was performed inside of containing view, false otherwise.\n */\n pointerInside: boolean;\n};\n\nexport const nativeViewProps = [\n ...baseGestureHandlerProps,\n ...nativeViewGestureHandlerProps,\n] as const;\n\nexport const nativeViewHandlerName = 'NativeViewGestureHandler';\n\nexport type NativeViewGestureHandler = typeof NativeViewGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const NativeViewGestureHandler = createHandler<\n NativeViewGestureHandlerProps,\n NativeViewGestureHandlerPayload\n>({\n name: nativeViewHandlerName,\n allowedProps: nativeViewProps,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js new file mode 100644 index 00000000..e286a9a8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js @@ -0,0 +1,107 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const panGestureHandlerProps = ['activeOffsetY', 'activeOffsetX', 'failOffsetY', 'failOffsetX', 'minDist', 'minVelocity', 'minVelocityX', 'minVelocityY', 'minPointers', 'maxPointers', 'avgTouches', 'enableTrackpadTwoFingerGesture', 'activateAfterLongPress']; +export const panGestureHandlerCustomNativeProps = ['activeOffsetYStart', 'activeOffsetYEnd', 'activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetYStart', 'failOffsetYEnd', 'failOffsetXStart', 'failOffsetXEnd']; +export const panHandlerName = 'PanGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const PanGestureHandler = createHandler({ + name: panHandlerName, + allowedProps: [...baseGestureHandlerProps, ...panGestureHandlerProps], + config: {}, + transformProps: managePanProps, + customNativeProps: panGestureHandlerCustomNativeProps +}); + +function validatePanGestureHandlerProps(props) { + if (Array.isArray(props.activeOffsetX) && (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)) { + throw new Error(`First element of activeOffsetX should be negative, a the second one should be positive`); + } + + if (Array.isArray(props.activeOffsetY) && (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)) { + throw new Error(`First element of activeOffsetY should be negative, a the second one should be positive`); + } + + if (Array.isArray(props.failOffsetX) && (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)) { + throw new Error(`First element of failOffsetX should be negative, a the second one should be positive`); + } + + if (Array.isArray(props.failOffsetY) && (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)) { + throw new Error(`First element of failOffsetY should be negative, a the second one should be positive`); + } + + if (props.minDist && (props.failOffsetX || props.failOffsetY)) { + throw new Error(`It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`); + } + + if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) { + throw new Error(`It is not supported to use minDist with activeOffsetX or activeOffsetY`); + } +} + +function transformPanGestureHandlerProps(props) { + const res = { ...props + }; + + if (props.activeOffsetX !== undefined) { + delete res.activeOffsetX; + + if (Array.isArray(props.activeOffsetX)) { + res.activeOffsetXStart = props.activeOffsetX[0]; + res.activeOffsetXEnd = props.activeOffsetX[1]; + } else if (props.activeOffsetX < 0) { + res.activeOffsetXStart = props.activeOffsetX; + } else { + res.activeOffsetXEnd = props.activeOffsetX; + } + } + + if (props.activeOffsetY !== undefined) { + delete res.activeOffsetY; + + if (Array.isArray(props.activeOffsetY)) { + res.activeOffsetYStart = props.activeOffsetY[0]; + res.activeOffsetYEnd = props.activeOffsetY[1]; + } else if (props.activeOffsetY < 0) { + res.activeOffsetYStart = props.activeOffsetY; + } else { + res.activeOffsetYEnd = props.activeOffsetY; + } + } + + if (props.failOffsetX !== undefined) { + delete res.failOffsetX; + + if (Array.isArray(props.failOffsetX)) { + res.failOffsetXStart = props.failOffsetX[0]; + res.failOffsetXEnd = props.failOffsetX[1]; + } else if (props.failOffsetX < 0) { + res.failOffsetXStart = props.failOffsetX; + } else { + res.failOffsetXEnd = props.failOffsetX; + } + } + + if (props.failOffsetY !== undefined) { + delete res.failOffsetY; + + if (Array.isArray(props.failOffsetY)) { + res.failOffsetYStart = props.failOffsetY[0]; + res.failOffsetYEnd = props.failOffsetY[1]; + } else if (props.failOffsetY < 0) { + res.failOffsetYStart = props.failOffsetY; + } else { + res.failOffsetYEnd = props.failOffsetY; + } + } + + return res; +} + +export function managePanProps(props) { + if (__DEV__) { + validatePanGestureHandlerProps(props); + } + + return transformPanGestureHandlerProps(props); +} +//# sourceMappingURL=PanGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js.map new file mode 100644 index 00000000..a3a8c44b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PanGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PanGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","panGestureHandlerProps","panGestureHandlerCustomNativeProps","panHandlerName","PanGestureHandler","name","allowedProps","config","transformProps","managePanProps","customNativeProps","validatePanGestureHandlerProps","props","Array","isArray","activeOffsetX","Error","activeOffsetY","failOffsetX","failOffsetY","minDist","transformPanGestureHandlerProps","res","undefined","activeOffsetXStart","activeOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetXStart","failOffsetXEnd","failOffsetYStart","failOffsetYEnd","__DEV__"],"mappings":"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","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const panGestureHandlerProps = [\n 'activeOffsetY',\n 'activeOffsetX',\n 'failOffsetY',\n 'failOffsetX',\n 'minDist',\n 'minVelocity',\n 'minVelocityX',\n 'minVelocityY',\n 'minPointers',\n 'maxPointers',\n 'avgTouches',\n 'enableTrackpadTwoFingerGesture',\n 'activateAfterLongPress',\n] as const;\n\nexport const panGestureHandlerCustomNativeProps = [\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n] as const;\n\nexport type PanGestureHandlerEventPayload = {\n /**\n * X coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the view\n * attached to the handler. Expressed in point units.\n */\n x: number;\n\n /**\n * Y coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the view\n * attached to the handler. Expressed in point units.\n */\n y: number;\n\n /**\n * X coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the window.\n * The value is expressed in point units. It is recommended to use it instead\n * of `x` in cases when the original view can be transformed as an effect of\n * the gesture.\n */\n absoluteX: number;\n\n /**\n * Y coordinate of the current position of the pointer (finger or a leading\n * pointer when there are multiple fingers placed) relative to the window.\n * The value is expressed in point units. It is recommended to use it instead\n * of `y` in cases when the original view can be transformed as an\n * effect of the gesture.\n */\n absoluteY: number;\n\n /**\n * Translation of the pan gesture along X axis accumulated over the time of\n * the gesture. The value is expressed in the point units.\n */\n translationX: number;\n\n /**\n * Translation of the pan gesture along Y axis accumulated over the time of\n * the gesture. The value is expressed in the point units.\n */\n translationY: number;\n\n /**\n * Velocity of the pan gesture along the X axis in the current moment. The\n * value is expressed in point units per second.\n */\n velocityX: number;\n\n /**\n * Velocity of the pan gesture along the Y axis in the current moment. The\n * value is expressed in point units per second.\n */\n velocityY: number;\n};\n\ninterface CommonPanProperties {\n /**\n * Minimum distance the finger (or multiple finger) need to travel before the\n * handler activates. Expressed in points.\n */\n minDist?: number;\n\n /**\n * Android only.\n */\n avgTouches?: boolean;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * A number of fingers that is required to be placed before handler can\n * activate. Should be a higher or equal to 0 integer.\n */\n minPointers?: number;\n\n /**\n * When the given number of fingers is placed on the screen and handler hasn't\n * yet activated it will fail recognizing the gesture. Should be a higher or\n * equal to 0 integer.\n */\n maxPointers?: number;\n\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n activateAfterLongPress?: number;\n}\n\nexport interface PanGestureConfig extends CommonPanProperties {\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n failOffsetYStart?: number;\n failOffsetYEnd?: number;\n failOffsetXStart?: number;\n failOffsetXEnd?: number;\n}\n\nexport interface PanGestureHandlerProps\n extends BaseGestureHandlerProps,\n CommonPanProperties {\n /**\n * Range along X axis (in points) where fingers travels without activation of\n * handler. Moving outside of this range implies activation of handler. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n activeOffsetY?: number | number[];\n\n /**\n * Range along X axis (in points) where fingers travels without activation of\n * handler. Moving outside of this range implies activation of handler. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n activeOffsetX?: number | number[];\n\n /**\n * When the finger moves outside this range (in points) along Y axis and\n * handler hasn't yet activated it will fail recognizing the gesture. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n failOffsetY?: number | number[];\n\n /**\n * When the finger moves outside this range (in points) along X axis and\n * handler hasn't yet activated it will fail recognizing the gesture. Range\n * can be given as an array or a single number. If range is set as an array,\n * first value must be lower or equal to 0, a the second one higher or equal\n * to 0. If only one number `p` is given a range of `(-inf, p)` will be used\n * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.\n */\n failOffsetX?: number | number[];\n}\n\nexport const panHandlerName = 'PanGestureHandler';\n\nexport type PanGestureHandler = typeof PanGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const PanGestureHandler = createHandler<\n PanGestureHandlerProps,\n PanGestureHandlerEventPayload\n>({\n name: panHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...panGestureHandlerProps,\n ] as const,\n config: {},\n transformProps: managePanProps,\n customNativeProps: panGestureHandlerCustomNativeProps,\n});\n\nfunction validatePanGestureHandlerProps(props: PanGestureHandlerProps) {\n if (\n Array.isArray(props.activeOffsetX) &&\n (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)\n ) {\n throw new Error(\n `First element of activeOffsetX should be negative, a the second one should be positive`\n );\n }\n\n if (\n Array.isArray(props.activeOffsetY) &&\n (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)\n ) {\n throw new Error(\n `First element of activeOffsetY should be negative, a the second one should be positive`\n );\n }\n\n if (\n Array.isArray(props.failOffsetX) &&\n (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)\n ) {\n throw new Error(\n `First element of failOffsetX should be negative, a the second one should be positive`\n );\n }\n\n if (\n Array.isArray(props.failOffsetY) &&\n (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)\n ) {\n throw new Error(\n `First element of failOffsetY should be negative, a the second one should be positive`\n );\n }\n\n if (props.minDist && (props.failOffsetX || props.failOffsetY)) {\n throw new Error(\n `It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`\n );\n }\n\n if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) {\n throw new Error(\n `It is not supported to use minDist with activeOffsetX or activeOffsetY`\n );\n }\n}\n\nfunction transformPanGestureHandlerProps(props: PanGestureHandlerProps) {\n type InternalPanGHKeys =\n | 'activeOffsetXStart'\n | 'activeOffsetXEnd'\n | 'failOffsetXStart'\n | 'failOffsetXEnd'\n | 'activeOffsetYStart'\n | 'activeOffsetYEnd'\n | 'failOffsetYStart'\n | 'failOffsetYEnd';\n type PanGestureHandlerInternalProps = PanGestureHandlerProps &\n Partial>;\n\n const res: PanGestureHandlerInternalProps = { ...props };\n\n if (props.activeOffsetX !== undefined) {\n delete res.activeOffsetX;\n if (Array.isArray(props.activeOffsetX)) {\n res.activeOffsetXStart = props.activeOffsetX[0];\n res.activeOffsetXEnd = props.activeOffsetX[1];\n } else if (props.activeOffsetX < 0) {\n res.activeOffsetXStart = props.activeOffsetX;\n } else {\n res.activeOffsetXEnd = props.activeOffsetX;\n }\n }\n\n if (props.activeOffsetY !== undefined) {\n delete res.activeOffsetY;\n if (Array.isArray(props.activeOffsetY)) {\n res.activeOffsetYStart = props.activeOffsetY[0];\n res.activeOffsetYEnd = props.activeOffsetY[1];\n } else if (props.activeOffsetY < 0) {\n res.activeOffsetYStart = props.activeOffsetY;\n } else {\n res.activeOffsetYEnd = props.activeOffsetY;\n }\n }\n\n if (props.failOffsetX !== undefined) {\n delete res.failOffsetX;\n if (Array.isArray(props.failOffsetX)) {\n res.failOffsetXStart = props.failOffsetX[0];\n res.failOffsetXEnd = props.failOffsetX[1];\n } else if (props.failOffsetX < 0) {\n res.failOffsetXStart = props.failOffsetX;\n } else {\n res.failOffsetXEnd = props.failOffsetX;\n }\n }\n\n if (props.failOffsetY !== undefined) {\n delete res.failOffsetY;\n if (Array.isArray(props.failOffsetY)) {\n res.failOffsetYStart = props.failOffsetY[0];\n res.failOffsetYEnd = props.failOffsetY[1];\n } else if (props.failOffsetY < 0) {\n res.failOffsetYStart = props.failOffsetY;\n } else {\n res.failOffsetYEnd = props.failOffsetY;\n }\n }\n\n return res;\n}\n\nexport function managePanProps(props: PanGestureHandlerProps) {\n if (__DEV__) {\n validatePanGestureHandlerProps(props);\n }\n return transformPanGestureHandlerProps(props);\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js new file mode 100644 index 00000000..ff8031c2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js @@ -0,0 +1,10 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const pinchHandlerName = 'PinchGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const PinchGestureHandler = createHandler({ + name: pinchHandlerName, + allowedProps: baseGestureHandlerProps, + config: {} +}); +//# sourceMappingURL=PinchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js.map new file mode 100644 index 00000000..8722a610 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PinchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PinchGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","pinchHandlerName","PinchGestureHandler","name","allowedProps","config"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAmCA,OAAO,MAAMC,gBAAgB,GAAG,qBAAzB;AAGP;AACA,OAAO,MAAMC,mBAAmB,GAAGH,aAAa,CAG9C;AACAI,EAAAA,IAAI,EAAEF,gBADN;AAEAG,EAAAA,YAAY,EAAEJ,uBAFd;AAGAK,EAAAA,MAAM,EAAE;AAHR,CAH8C,CAAzC","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport type PinchGestureHandlerEventPayload = {\n /**\n * The scale factor relative to the points of the two touches in screen\n * coordinates.\n */\n scale: number;\n\n /**\n * Position expressed in points along X axis of center anchor point of\n * gesture.\n */\n focalX: number;\n\n /**\n * Position expressed in points along Y axis of center anchor point of\n * gesture.\n */\n focalY: number;\n\n /**\n *\n * Velocity of the pan gesture the current moment. The value is expressed in\n * point units per second.\n */\n velocity: number;\n};\n\nexport interface PinchGestureHandlerProps\n extends BaseGestureHandlerProps {}\n\nexport const pinchHandlerName = 'PinchGestureHandler';\n\nexport type PinchGestureHandler = typeof PinchGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const PinchGestureHandler = createHandler<\n PinchGestureHandlerProps,\n PinchGestureHandlerEventPayload\n>({\n name: pinchHandlerName,\n allowedProps: baseGestureHandlerProps,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js new file mode 100644 index 00000000..e90a1973 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js @@ -0,0 +1,3 @@ +// @ts-ignore it's not exported so we need to import it from path +export { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug'; +//# sourceMappingURL=PressabilityDebugView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js.map new file mode 100644 index 00000000..22ff9228 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PressabilityDebugView.tsx"],"names":["PressabilityDebugView"],"mappings":"AAAA;AACA,SAASA,qBAAT,QAAsC,uDAAtC","sourcesContent":["// @ts-ignore it's not exported so we need to import it from path\nexport { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js new file mode 100644 index 00000000..f427be8a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js @@ -0,0 +1,5 @@ +// PressabilityDebugView is not implemented in react-native-web +export function PressabilityDebugView() { + return null; +} +//# sourceMappingURL=PressabilityDebugView.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js.map new file mode 100644 index 00000000..072a1cca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/PressabilityDebugView.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PressabilityDebugView.web.tsx"],"names":["PressabilityDebugView"],"mappings":"AAAA;AACA,OAAO,SAASA,qBAAT,GAAiC;AACtC,SAAO,IAAP;AACD","sourcesContent":["// PressabilityDebugView is not implemented in react-native-web\nexport function PressabilityDebugView() {\n return null;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js new file mode 100644 index 00000000..bdd0f272 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js @@ -0,0 +1,10 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const rotationHandlerName = 'RotationGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const RotationGestureHandler = createHandler({ + name: rotationHandlerName, + allowedProps: baseGestureHandlerProps, + config: {} +}); +//# sourceMappingURL=RotationGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js.map new file mode 100644 index 00000000..6c421a7a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/RotationGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","rotationHandlerName","RotationGestureHandler","name","allowedProps","config"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAmCA,OAAO,MAAMC,mBAAmB,GAAG,wBAA5B;AAGP;AACA,OAAO,MAAMC,sBAAsB,GAAGH,aAAa,CAGjD;AACAI,EAAAA,IAAI,EAAEF,mBADN;AAEAG,EAAAA,YAAY,EAAEJ,uBAFd;AAGAK,EAAAA,MAAM,EAAE;AAHR,CAHiD,CAA5C","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport type RotationGestureHandlerEventPayload = {\n /**\n * Amount rotated, expressed in radians, from the gesture's focal point\n * (anchor).\n */\n rotation: number;\n\n /**\n * X coordinate, expressed in points, of the gesture's central focal point\n * (anchor).\n */\n anchorX: number;\n\n /**\n * Y coordinate, expressed in points, of the gesture's central focal point\n * (anchor).\n */\n anchorY: number;\n\n /**\n *\n * Instantaneous velocity, expressed in point units per second, of the\n * gesture.\n */\n velocity: number;\n};\n\nexport interface RotationGestureHandlerProps\n extends BaseGestureHandlerProps {}\n\nexport const rotationHandlerName = 'RotationGestureHandler';\n\nexport type RotationGestureHandler = typeof RotationGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const RotationGestureHandler = createHandler<\n RotationGestureHandlerProps,\n RotationGestureHandlerEventPayload\n>({\n name: rotationHandlerName,\n allowedProps: baseGestureHandlerProps,\n config: {},\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js new file mode 100644 index 00000000..50608f70 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js @@ -0,0 +1,13 @@ +import createHandler from './createHandler'; +import { baseGestureHandlerProps } from './gestureHandlerCommon'; +export const tapGestureHandlerProps = ['maxDurationMs', 'maxDelayMs', 'numberOfTaps', 'maxDeltaX', 'maxDeltaY', 'maxDist', 'minPointers']; +export const tapHandlerName = 'TapGestureHandler'; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const TapGestureHandler = createHandler({ + name: tapHandlerName, + allowedProps: [...baseGestureHandlerProps, ...tapGestureHandlerProps], + config: { + shouldCancelWhenOutside: true + } +}); +//# sourceMappingURL=TapGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js.map new file mode 100644 index 00000000..0b106931 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/TapGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TapGestureHandler.ts"],"names":["createHandler","baseGestureHandlerProps","tapGestureHandlerProps","tapHandlerName","TapGestureHandler","name","allowedProps","config","shouldCancelWhenOutside"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,iBAA1B;AACA,SAEEC,uBAFF,QAGO,wBAHP;AAKA,OAAO,MAAMC,sBAAsB,GAAG,CACpC,eADoC,EAEpC,YAFoC,EAGpC,cAHoC,EAIpC,WAJoC,EAKpC,WALoC,EAMpC,SANoC,EAOpC,aAPoC,CAA/B;AAuEP,OAAO,MAAMC,cAAc,GAAG,mBAAvB;AAGP;AACA,OAAO,MAAMC,iBAAiB,GAAGJ,aAAa,CAG5C;AACAK,EAAAA,IAAI,EAAEF,cADN;AAEAG,EAAAA,YAAY,EAAE,CACZ,GAAGL,uBADS,EAEZ,GAAGC,sBAFS,CAFd;AAMAK,EAAAA,MAAM,EAAE;AACNC,IAAAA,uBAAuB,EAAE;AADnB;AANR,CAH4C,CAAvC","sourcesContent":["import createHandler from './createHandler';\nimport {\n BaseGestureHandlerProps,\n baseGestureHandlerProps,\n} from './gestureHandlerCommon';\n\nexport const tapGestureHandlerProps = [\n 'maxDurationMs',\n 'maxDelayMs',\n 'numberOfTaps',\n 'maxDeltaX',\n 'maxDeltaY',\n 'maxDist',\n 'minPointers',\n] as const;\n\nexport type TapGestureHandlerEventPayload = {\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\nexport interface TapGestureConfig {\n /**\n * Minimum number of pointers (fingers) required to be placed before the\n * handler activates. Should be a positive integer.\n * The default value is 1.\n */\n minPointers?: number;\n\n /**\n * Maximum time, expressed in milliseconds, that defines how fast a finger\n * must be released after a touch. The default value is 500.\n */\n maxDurationMs?: number;\n\n /**\n * Maximum time, expressed in milliseconds, that can pass before the next tap\n * if many taps are required. The default value is 500.\n */\n maxDelayMs?: number;\n\n /**\n * Number of tap gestures required to activate the handler. The default value\n * is 1.\n */\n numberOfTaps?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel along the X axis during a tap gesture. If the finger\n * travels further than the defined distance along the X axis and the handler\n * hasn't yet activated, it will fail to recognize the gesture.\n */\n maxDeltaX?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel along the Y axis during a tap gesture. If the finger\n * travels further than the defined distance along the Y axis and the handler\n * hasn't yet activated, it will fail to recognize the gesture.\n */\n maxDeltaY?: number;\n\n /**\n * Maximum distance, expressed in points, that defines how far the finger is\n * allowed to travel during a tap gesture. If the finger travels further than\n * the defined distance and the handler hasn't yet\n * activated, it will fail to recognize the gesture.\n */\n maxDist?: number;\n}\n\nexport interface TapGestureHandlerProps\n extends BaseGestureHandlerProps,\n TapGestureConfig {}\n\nexport const tapHandlerName = 'TapGestureHandler';\n\nexport type TapGestureHandler = typeof TapGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file\nexport const TapGestureHandler = createHandler<\n TapGestureHandlerProps,\n TapGestureHandlerEventPayload\n>({\n name: tapHandlerName,\n allowedProps: [\n ...baseGestureHandlerProps,\n ...tapGestureHandlerProps,\n ] as const,\n config: {\n shouldCancelWhenOutside: true,\n },\n});\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js new file mode 100644 index 00000000..d20ba6ca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js @@ -0,0 +1,425 @@ +var _UIManagerAny$getView, _UIManagerAny$getView2, _UIManagerAny$getCons; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import * as React from 'react'; +import { Platform, UIManager, DeviceEventEmitter } from 'react-native'; // @ts-ignore - it isn't typed by TS & don't have definitelyTyped types + +import deepEqual from 'lodash/isEqual'; +import RNGestureHandlerModule from '../RNGestureHandlerModule'; +import { State } from '../State'; +import { handlerIDToTag, getNextHandlerTag, registerOldGestureHandler } from './handlersRegistry'; +import { filterConfig, findNodeHandle, scheduleFlushOperations } from './gestureHandlerCommon'; +import { isFabric, isJestEnv, tagMessage } from '../utils'; +import { ActionType } from '../ActionType'; +import { PressabilityDebugView } from './PressabilityDebugView'; +const UIManagerAny = UIManager; +const customGHEventsConfigFabricAndroid = { + topOnGestureHandlerEvent: { + registrationName: 'onGestureHandlerEvent' + }, + topOnGestureHandlerStateChange: { + registrationName: 'onGestureHandlerStateChange' + } +}; +const customGHEventsConfig = { + onGestureHandlerEvent: { + registrationName: 'onGestureHandlerEvent' + }, + onGestureHandlerStateChange: { + registrationName: 'onGestureHandlerStateChange' + }, + // When using React Native Gesture Handler for Animated.event with useNativeDriver: true + // on Android with Fabric enabled, the native part still sends the native events to JS + // but prefixed with "top". We cannot simply rename the events above so they are prefixed + // with "top" instead of "on" because in such case Animated.events would not be registered. + // That's why we need to register another pair of event names. + // The incoming events will be queued but never handled. + // Without this piece of code below, you'll get the following JS error: + // Unsupported top level event type "topOnGestureHandlerEvent" dispatched + ...(isFabric() && Platform.OS === 'android' && customGHEventsConfigFabricAndroid) +}; // Add gesture specific events to genericDirectEventTypes object exported from UIManager +// native module. +// Once new event types are registered with react it is possible to dispatch these +// events to all kind of native views. + +UIManagerAny.genericDirectEventTypes = { ...UIManagerAny.genericDirectEventTypes, + ...customGHEventsConfig +}; // In newer versions of RN the `genericDirectEventTypes` is located in the object +// returned by UIManager.getViewManagerConfig('getConstants') or in older RN UIManager.getConstants(), we need to add it there as well to make +// it compatible with RN 61+ + +const UIManagerConstants = (_UIManagerAny$getView = (_UIManagerAny$getView2 = UIManagerAny.getViewManagerConfig) === null || _UIManagerAny$getView2 === void 0 ? void 0 : _UIManagerAny$getView2.call(UIManagerAny, 'getConstants')) !== null && _UIManagerAny$getView !== void 0 ? _UIManagerAny$getView : (_UIManagerAny$getCons = UIManagerAny.getConstants) === null || _UIManagerAny$getCons === void 0 ? void 0 : _UIManagerAny$getCons.call(UIManagerAny); + +if (UIManagerConstants) { + UIManagerConstants.genericDirectEventTypes = { ...UIManagerConstants.genericDirectEventTypes, + ...customGHEventsConfig + }; +} // Wrap JS responder calls and notify gesture handler manager + + +const { + setJSResponder: oldSetJSResponder = () => {//no operation + }, + clearJSResponder: oldClearJSResponder = () => {//no operation + } +} = UIManagerAny; + +UIManagerAny.setJSResponder = (tag, blockNativeResponder) => { + RNGestureHandlerModule.handleSetJSResponder(tag, blockNativeResponder); + oldSetJSResponder(tag, blockNativeResponder); +}; + +UIManagerAny.clearJSResponder = () => { + RNGestureHandlerModule.handleClearJSResponder(); + oldClearJSResponder(); +}; + +let allowTouches = true; +const DEV_ON_ANDROID = __DEV__ && Platform.OS === 'android'; // Toggled inspector blocks touch events in order to allow inspecting on Android +// This needs to be a global variable in order to set initial state for `allowTouches` property in Handler component + +if (DEV_ON_ANDROID) { + DeviceEventEmitter.addListener('toggleElementInspector', () => { + allowTouches = !allowTouches; + }); +} + +function hasUnresolvedRefs(props) { + // TODO(TS) - add type for extract arg + const extract = refs => { + if (!Array.isArray(refs)) { + return refs && refs.current === null; + } + + return refs.some(r => r && r.current === null); + }; + + return extract(props['simultaneousHandlers']) || extract(props['waitFor']); +} + +const stateToPropMappings = { + [State.UNDETERMINED]: undefined, + [State.BEGAN]: 'onBegan', + [State.FAILED]: 'onFailed', + [State.CANCELLED]: 'onCancelled', + [State.ACTIVE]: 'onActivated', + [State.END]: 'onEnded' +}; +const UNRESOLVED_REFS_RETRY_LIMIT = 1; // TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties. + +export default function createHandler({ + name, + allowedProps = [], + config = {}, + transformProps, + customNativeProps = [] +}) { + class Handler extends React.Component { + constructor(props) { + super(props); + + _defineProperty(this, "handlerTag", void 0); + + _defineProperty(this, "config", void 0); + + _defineProperty(this, "propsRef", void 0); + + _defineProperty(this, "viewNode", void 0); + + _defineProperty(this, "viewTag", void 0); + + _defineProperty(this, "updateEnqueued", null); + + _defineProperty(this, "inspectorToggleListener", void 0); + + _defineProperty(this, "onGestureHandlerEvent", event => { + if (event.nativeEvent.handlerTag === this.handlerTag) { + if (typeof this.props.onGestureEvent === 'function') { + var _this$props$onGesture, _this$props; + + (_this$props$onGesture = (_this$props = this.props).onGestureEvent) === null || _this$props$onGesture === void 0 ? void 0 : _this$props$onGesture.call(_this$props, event); + } + } else { + var _this$props$onGesture2, _this$props2; + + (_this$props$onGesture2 = (_this$props2 = this.props).onGestureHandlerEvent) === null || _this$props$onGesture2 === void 0 ? void 0 : _this$props$onGesture2.call(_this$props2, event); + } + }); + + _defineProperty(this, "onGestureHandlerStateChange", event => { + if (event.nativeEvent.handlerTag === this.handlerTag) { + if (typeof this.props.onHandlerStateChange === 'function') { + var _this$props$onHandler, _this$props3; + + (_this$props$onHandler = (_this$props3 = this.props).onHandlerStateChange) === null || _this$props$onHandler === void 0 ? void 0 : _this$props$onHandler.call(_this$props3, event); + } + + const state = event.nativeEvent.state; + const stateEventName = stateToPropMappings[state]; + const eventHandler = stateEventName && this.props[stateEventName]; + + if (eventHandler && typeof eventHandler === 'function') { + eventHandler(event); + } + } else { + var _this$props$onGesture3, _this$props4; + + (_this$props$onGesture3 = (_this$props4 = this.props).onGestureHandlerStateChange) === null || _this$props$onGesture3 === void 0 ? void 0 : _this$props$onGesture3.call(_this$props4, event); + } + }); + + _defineProperty(this, "refHandler", node => { + this.viewNode = node; + const child = React.Children.only(this.props.children); // TODO(TS) fix ref type + + const { + ref + } = child; + + if (ref !== null) { + if (typeof ref === 'function') { + ref(node); + } else { + ref.current = node; + } + } + }); + + _defineProperty(this, "createGestureHandler", newConfig => { + this.config = newConfig; + RNGestureHandlerModule.createGestureHandler(name, this.handlerTag, newConfig); + }); + + _defineProperty(this, "attachGestureHandler", newViewTag => { + this.viewTag = newViewTag; + + if (Platform.OS === 'web') { + // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch + RNGestureHandlerModule.attachGestureHandler(this.handlerTag, newViewTag, ActionType.JS_FUNCTION_OLD_API, // ignored on web + this.propsRef); + } else { + registerOldGestureHandler(this.handlerTag, { + onGestureEvent: this.onGestureHandlerEvent, + onGestureStateChange: this.onGestureHandlerStateChange + }); + + const actionType = (() => { + var _this$props5, _this$props6; + + if ((_this$props5 = this.props) !== null && _this$props5 !== void 0 && _this$props5.onGestureEvent && 'current' in this.props.onGestureEvent) { + // Reanimated worklet + return ActionType.REANIMATED_WORKLET; + } else if ((_this$props6 = this.props) !== null && _this$props6 !== void 0 && _this$props6.onGestureEvent && '__isNative' in this.props.onGestureEvent) { + // Animated.event with useNativeDriver: true + return ActionType.NATIVE_ANIMATED_EVENT; + } else { + // JS callback or Animated.event with useNativeDriver: false + return ActionType.JS_FUNCTION_OLD_API; + } + })(); + + RNGestureHandlerModule.attachGestureHandler(this.handlerTag, newViewTag, actionType); + } + + scheduleFlushOperations(); + }); + + _defineProperty(this, "updateGestureHandler", newConfig => { + this.config = newConfig; + RNGestureHandlerModule.updateGestureHandler(this.handlerTag, newConfig); + scheduleFlushOperations(); + }); + + this.handlerTag = getNextHandlerTag(); + this.config = {}; + this.propsRef = /*#__PURE__*/React.createRef(); + this.state = { + allowTouches + }; + + if (props.id) { + if (handlerIDToTag[props.id] !== undefined) { + throw new Error(`Handler with ID "${props.id}" already registered`); + } + + handlerIDToTag[props.id] = this.handlerTag; + } + } + + componentDidMount() { + const props = this.props; + + if (DEV_ON_ANDROID) { + this.inspectorToggleListener = DeviceEventEmitter.addListener('toggleElementInspector', () => { + this.setState(_ => ({ + allowTouches + })); + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + }); + } + + if (hasUnresolvedRefs(props)) { + // If there are unresolved refs (e.g. ".current" has not yet been set) + // passed as `simultaneousHandlers` or `waitFor`, we enqueue a call to + // _update method that will try to update native handler props using + // setImmediate. This makes it so update() function gets called after all + // react components are mounted and we expect the missing ref object to + // be resolved by then. + this.updateEnqueued = setImmediate(() => { + this.updateEnqueued = null; + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + }); + } + + this.createGestureHandler(filterConfig(transformProps ? transformProps(this.props) : this.props, [...allowedProps, ...customNativeProps], config)); + this.attachGestureHandler(findNodeHandle(this.viewNode)); // TODO(TS) - check if this can be null + } + + componentDidUpdate() { + const viewTag = findNodeHandle(this.viewNode); + + if (this.viewTag !== viewTag) { + this.attachGestureHandler(viewTag); // TODO(TS) - check interaction between _viewTag & findNodeHandle + } + + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + } + + componentWillUnmount() { + var _this$inspectorToggle; + + (_this$inspectorToggle = this.inspectorToggleListener) === null || _this$inspectorToggle === void 0 ? void 0 : _this$inspectorToggle.remove(); + RNGestureHandlerModule.dropGestureHandler(this.handlerTag); + scheduleFlushOperations(); + + if (this.updateEnqueued) { + clearImmediate(this.updateEnqueued); + } // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context + + + const handlerID = this.props.id; + + if (handlerID) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete handlerIDToTag[handlerID]; + } + } + + update(remainingTries) { + const props = this.props; // When ref is set via a function i.e. `ref={(r) => refObject.current = r}` instead of + // `ref={refObject}` it's possible that it won't be resolved in time. Seems like trying + // again is easy enough fix. + + if (hasUnresolvedRefs(props) && remainingTries > 0) { + this.updateEnqueued = setImmediate(() => { + this.updateEnqueued = null; + this.update(remainingTries - 1); + }); + } else { + const newConfig = filterConfig(transformProps ? transformProps(this.props) : this.props, [...allowedProps, ...customNativeProps], config); + + if (!deepEqual(this.config, newConfig)) { + this.updateGestureHandler(newConfig); + } + } + } + + setNativeProps(updates) { + const mergedProps = { ...this.props, + ...updates + }; + const newConfig = filterConfig(transformProps ? transformProps(mergedProps) : mergedProps, [...allowedProps, ...customNativeProps], config); + this.updateGestureHandler(newConfig); + } + + render() { + var _this$props$testID; + + let gestureEventHandler = this.onGestureHandlerEvent; // Another instance of https://github.com/microsoft/TypeScript/issues/13995 + + const { + onGestureEvent, + onGestureHandlerEvent + } = this.props; + + if (onGestureEvent && typeof onGestureEvent !== 'function') { + // If it's not a method it should be an native Animated.event + // object. We set it directly as the handler for the view + // In this case nested handlers are not going to be supported + if (onGestureHandlerEvent) { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + + gestureEventHandler = onGestureEvent; + } else { + if (onGestureHandlerEvent && typeof onGestureHandlerEvent !== 'function') { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + } + + let gestureStateEventHandler = this.onGestureHandlerStateChange; // Another instance of https://github.com/microsoft/TypeScript/issues/13995 + + const { + onHandlerStateChange, + onGestureHandlerStateChange + } = this.props; + + if (onHandlerStateChange && typeof onHandlerStateChange !== 'function') { + // If it's not a method it should be an native Animated.event + // object. We set it directly as the handler for the view + // In this case nested handlers are not going to be supported + if (onGestureHandlerStateChange) { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + + gestureStateEventHandler = onHandlerStateChange; + } else { + if (onGestureHandlerStateChange && typeof onGestureHandlerStateChange !== 'function') { + throw new Error('Nesting touch handlers with native animated driver is not supported yet'); + } + } + + const events = { + onGestureHandlerEvent: this.state.allowTouches ? gestureEventHandler : undefined, + onGestureHandlerStateChange: this.state.allowTouches ? gestureStateEventHandler : undefined + }; + this.propsRef.current = events; + let child = null; + + try { + child = React.Children.only(this.props.children); + } catch (e) { + throw new Error(tagMessage(`${name} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`)); + } + + let grandChildren = child.props.children; + + if (__DEV__ && child.type && (child.type === 'RNGestureHandlerButton' || child.type.name === 'View' || child.type.displayName === 'View')) { + grandChildren = React.Children.toArray(grandChildren); + grandChildren.push( /*#__PURE__*/React.createElement(PressabilityDebugView, { + key: "pressabilityDebugView", + color: "mediumspringgreen", + hitSlop: child.props.hitSlop + })); + } + + return /*#__PURE__*/React.cloneElement(child, { + ref: this.refHandler, + collapsable: false, + ...(isJestEnv() ? { + handlerType: name, + handlerTag: this.handlerTag + } : {}), + testID: (_this$props$testID = this.props.testID) !== null && _this$props$testID !== void 0 ? _this$props$testID : child.props.testID, + ...events + }, grandChildren); + } + + } + + _defineProperty(Handler, "displayName", name); + + return Handler; +} +//# sourceMappingURL=createHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js.map new file mode 100644 index 00000000..58955f0e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["createHandler.tsx"],"names":["React","Platform","UIManager","DeviceEventEmitter","deepEqual","RNGestureHandlerModule","State","handlerIDToTag","getNextHandlerTag","registerOldGestureHandler","filterConfig","findNodeHandle","scheduleFlushOperations","isFabric","isJestEnv","tagMessage","ActionType","PressabilityDebugView","UIManagerAny","customGHEventsConfigFabricAndroid","topOnGestureHandlerEvent","registrationName","topOnGestureHandlerStateChange","customGHEventsConfig","onGestureHandlerEvent","onGestureHandlerStateChange","OS","genericDirectEventTypes","UIManagerConstants","getViewManagerConfig","getConstants","setJSResponder","oldSetJSResponder","clearJSResponder","oldClearJSResponder","tag","blockNativeResponder","handleSetJSResponder","handleClearJSResponder","allowTouches","DEV_ON_ANDROID","__DEV__","addListener","hasUnresolvedRefs","props","extract","refs","Array","isArray","current","some","r","stateToPropMappings","UNDETERMINED","undefined","BEGAN","FAILED","CANCELLED","ACTIVE","END","UNRESOLVED_REFS_RETRY_LIMIT","createHandler","name","allowedProps","config","transformProps","customNativeProps","Handler","Component","constructor","event","nativeEvent","handlerTag","onGestureEvent","onHandlerStateChange","state","stateEventName","eventHandler","node","viewNode","child","Children","only","children","ref","newConfig","createGestureHandler","newViewTag","viewTag","attachGestureHandler","JS_FUNCTION_OLD_API","propsRef","onGestureStateChange","actionType","REANIMATED_WORKLET","NATIVE_ANIMATED_EVENT","updateGestureHandler","createRef","id","Error","componentDidMount","inspectorToggleListener","setState","_","update","updateEnqueued","setImmediate","componentDidUpdate","componentWillUnmount","remove","dropGestureHandler","clearImmediate","handlerID","remainingTries","setNativeProps","updates","mergedProps","render","gestureEventHandler","gestureStateEventHandler","events","e","grandChildren","type","displayName","toArray","push","hitSlop","cloneElement","refHandler","collapsable","handlerType","testID"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n UIManager,\n DeviceEventEmitter,\n EmitterSubscription,\n} from 'react-native';\n// @ts-ignore - it isn't typed by TS & don't have definitelyTyped types\nimport deepEqual from 'lodash/isEqual';\nimport RNGestureHandlerModule from '../RNGestureHandlerModule';\nimport type RNGestureHandlerModuleWeb from '../RNGestureHandlerModule.web';\nimport { State } from '../State';\nimport {\n handlerIDToTag,\n getNextHandlerTag,\n registerOldGestureHandler,\n} from './handlersRegistry';\n\nimport {\n BaseGestureHandlerProps,\n filterConfig,\n GestureEvent,\n HandlerStateChangeEvent,\n findNodeHandle,\n scheduleFlushOperations,\n} from './gestureHandlerCommon';\nimport { ValueOf } from '../typeUtils';\nimport { isFabric, isJestEnv, tagMessage } from '../utils';\nimport { ActionType } from '../ActionType';\nimport { PressabilityDebugView } from './PressabilityDebugView';\n\nconst UIManagerAny = UIManager as any;\n\nconst customGHEventsConfigFabricAndroid = {\n topOnGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' },\n topOnGestureHandlerStateChange: {\n registrationName: 'onGestureHandlerStateChange',\n },\n};\n\nconst customGHEventsConfig = {\n onGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' },\n onGestureHandlerStateChange: {\n registrationName: 'onGestureHandlerStateChange',\n },\n\n // When using React Native Gesture Handler for Animated.event with useNativeDriver: true\n // on Android with Fabric enabled, the native part still sends the native events to JS\n // but prefixed with \"top\". We cannot simply rename the events above so they are prefixed\n // with \"top\" instead of \"on\" because in such case Animated.events would not be registered.\n // That's why we need to register another pair of event names.\n // The incoming events will be queued but never handled.\n // Without this piece of code below, you'll get the following JS error:\n // Unsupported top level event type \"topOnGestureHandlerEvent\" dispatched\n ...(isFabric() &&\n Platform.OS === 'android' &&\n customGHEventsConfigFabricAndroid),\n};\n\n// Add gesture specific events to genericDirectEventTypes object exported from UIManager\n// native module.\n// Once new event types are registered with react it is possible to dispatch these\n// events to all kind of native views.\nUIManagerAny.genericDirectEventTypes = {\n ...UIManagerAny.genericDirectEventTypes,\n ...customGHEventsConfig,\n};\n// In newer versions of RN the `genericDirectEventTypes` is located in the object\n// returned by UIManager.getViewManagerConfig('getConstants') or in older RN UIManager.getConstants(), we need to add it there as well to make\n// it compatible with RN 61+\nconst UIManagerConstants =\n UIManagerAny.getViewManagerConfig?.('getConstants') ??\n UIManagerAny.getConstants?.();\n\nif (UIManagerConstants) {\n UIManagerConstants.genericDirectEventTypes = {\n ...UIManagerConstants.genericDirectEventTypes,\n ...customGHEventsConfig,\n };\n}\n\n// Wrap JS responder calls and notify gesture handler manager\nconst {\n setJSResponder: oldSetJSResponder = () => {\n //no operation\n },\n clearJSResponder: oldClearJSResponder = () => {\n //no operation\n },\n} = UIManagerAny;\nUIManagerAny.setJSResponder = (tag: number, blockNativeResponder: boolean) => {\n RNGestureHandlerModule.handleSetJSResponder(tag, blockNativeResponder);\n oldSetJSResponder(tag, blockNativeResponder);\n};\nUIManagerAny.clearJSResponder = () => {\n RNGestureHandlerModule.handleClearJSResponder();\n oldClearJSResponder();\n};\n\nlet allowTouches = true;\nconst DEV_ON_ANDROID = __DEV__ && Platform.OS === 'android';\n// Toggled inspector blocks touch events in order to allow inspecting on Android\n// This needs to be a global variable in order to set initial state for `allowTouches` property in Handler component\nif (DEV_ON_ANDROID) {\n DeviceEventEmitter.addListener('toggleElementInspector', () => {\n allowTouches = !allowTouches;\n });\n}\n\ntype HandlerProps> = Readonly<\n React.PropsWithChildren>\n>;\nfunction hasUnresolvedRefs>(\n props: HandlerProps\n) {\n // TODO(TS) - add type for extract arg\n const extract = (refs: any | any[]) => {\n if (!Array.isArray(refs)) {\n return refs && refs.current === null;\n }\n return refs.some((r) => r && r.current === null);\n };\n return extract(props['simultaneousHandlers']) || extract(props['waitFor']);\n}\n\nconst stateToPropMappings = {\n [State.UNDETERMINED]: undefined,\n [State.BEGAN]: 'onBegan',\n [State.FAILED]: 'onFailed',\n [State.CANCELLED]: 'onCancelled',\n [State.ACTIVE]: 'onActivated',\n [State.END]: 'onEnded',\n} as const;\n\ntype CreateHandlerArgs> =\n Readonly<{\n name: string;\n allowedProps: Readonly[]>;\n config: Readonly>;\n transformProps?: (props: HandlerPropsT) => HandlerPropsT;\n customNativeProps?: Readonly;\n }>;\n\n// TODO(TS) fix event types\ntype InternalEventHandlers = {\n onGestureHandlerEvent?: (event: any) => void;\n onGestureHandlerStateChange?: (event: any) => void;\n};\n\nconst UNRESOLVED_REFS_RETRY_LIMIT = 1;\n\n// TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties.\nexport default function createHandler<\n T extends BaseGestureHandlerProps,\n U extends Record\n>({\n name,\n allowedProps = [],\n config = {},\n transformProps,\n customNativeProps = [],\n}: CreateHandlerArgs): React.ComponentType> {\n interface HandlerState {\n allowTouches: boolean;\n }\n class Handler extends React.Component<\n T & InternalEventHandlers,\n HandlerState\n > {\n static displayName = name;\n\n private handlerTag: number;\n private config: Record;\n private propsRef: React.MutableRefObject;\n private viewNode: any;\n private viewTag?: number;\n private updateEnqueued: ReturnType | null = null;\n private inspectorToggleListener?: EmitterSubscription;\n\n constructor(props: T & InternalEventHandlers) {\n super(props);\n this.handlerTag = getNextHandlerTag();\n this.config = {};\n this.propsRef = React.createRef();\n this.state = { allowTouches };\n if (props.id) {\n if (handlerIDToTag[props.id] !== undefined) {\n throw new Error(`Handler with ID \"${props.id}\" already registered`);\n }\n handlerIDToTag[props.id] = this.handlerTag;\n }\n }\n\n componentDidMount() {\n const props: HandlerProps = this.props;\n\n if (DEV_ON_ANDROID) {\n this.inspectorToggleListener = DeviceEventEmitter.addListener(\n 'toggleElementInspector',\n () => {\n this.setState((_) => ({ allowTouches }));\n this.update(UNRESOLVED_REFS_RETRY_LIMIT);\n }\n );\n }\n if (hasUnresolvedRefs(props)) {\n // If there are unresolved refs (e.g. \".current\" has not yet been set)\n // passed as `simultaneousHandlers` or `waitFor`, we enqueue a call to\n // _update method that will try to update native handler props using\n // setImmediate. This makes it so update() function gets called after all\n // react components are mounted and we expect the missing ref object to\n // be resolved by then.\n this.updateEnqueued = setImmediate(() => {\n this.updateEnqueued = null;\n this.update(UNRESOLVED_REFS_RETRY_LIMIT);\n });\n }\n\n this.createGestureHandler(\n filterConfig(\n transformProps ? transformProps(this.props) : this.props,\n [...allowedProps, ...customNativeProps],\n config\n )\n );\n\n this.attachGestureHandler(findNodeHandle(this.viewNode) as number); // TODO(TS) - check if this can be null\n }\n\n componentDidUpdate() {\n const viewTag = findNodeHandle(this.viewNode);\n if (this.viewTag !== viewTag) {\n this.attachGestureHandler(viewTag as number); // TODO(TS) - check interaction between _viewTag & findNodeHandle\n }\n this.update(UNRESOLVED_REFS_RETRY_LIMIT);\n }\n\n componentWillUnmount() {\n this.inspectorToggleListener?.remove();\n RNGestureHandlerModule.dropGestureHandler(this.handlerTag);\n scheduleFlushOperations();\n if (this.updateEnqueued) {\n clearImmediate(this.updateEnqueued);\n }\n // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context\n const handlerID: string | undefined = this.props.id;\n if (handlerID) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete handlerIDToTag[handlerID];\n }\n }\n\n private onGestureHandlerEvent = (event: GestureEvent) => {\n if (event.nativeEvent.handlerTag === this.handlerTag) {\n if (typeof this.props.onGestureEvent === 'function') {\n this.props.onGestureEvent?.(event);\n }\n } else {\n this.props.onGestureHandlerEvent?.(event);\n }\n };\n\n // TODO(TS) - make sure this is right type for event\n private onGestureHandlerStateChange = (\n event: HandlerStateChangeEvent\n ) => {\n if (event.nativeEvent.handlerTag === this.handlerTag) {\n if (typeof this.props.onHandlerStateChange === 'function') {\n this.props.onHandlerStateChange?.(event);\n }\n\n const state: ValueOf = event.nativeEvent.state;\n const stateEventName = stateToPropMappings[state];\n const eventHandler = stateEventName && this.props[stateEventName];\n if (eventHandler && typeof eventHandler === 'function') {\n eventHandler(event);\n }\n } else {\n this.props.onGestureHandlerStateChange?.(event);\n }\n };\n\n private refHandler = (node: any) => {\n this.viewNode = node;\n\n const child = React.Children.only(this.props.children);\n // TODO(TS) fix ref type\n const { ref }: any = child;\n if (ref !== null) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n };\n\n private createGestureHandler = (\n newConfig: Readonly>\n ) => {\n this.config = newConfig;\n\n RNGestureHandlerModule.createGestureHandler(\n name,\n this.handlerTag,\n newConfig\n );\n };\n\n private attachGestureHandler = (newViewTag: number) => {\n this.viewTag = newViewTag;\n\n if (Platform.OS === 'web') {\n // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch\n (\n RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler\n )(\n this.handlerTag,\n newViewTag,\n ActionType.JS_FUNCTION_OLD_API, // ignored on web\n this.propsRef\n );\n } else {\n registerOldGestureHandler(this.handlerTag, {\n onGestureEvent: this.onGestureHandlerEvent,\n onGestureStateChange: this.onGestureHandlerStateChange,\n });\n\n const actionType = (() => {\n if (\n this.props?.onGestureEvent &&\n 'current' in this.props.onGestureEvent\n ) {\n // Reanimated worklet\n return ActionType.REANIMATED_WORKLET;\n } else if (\n this.props?.onGestureEvent &&\n '__isNative' in this.props.onGestureEvent\n ) {\n // Animated.event with useNativeDriver: true\n return ActionType.NATIVE_ANIMATED_EVENT;\n } else {\n // JS callback or Animated.event with useNativeDriver: false\n return ActionType.JS_FUNCTION_OLD_API;\n }\n })();\n\n RNGestureHandlerModule.attachGestureHandler(\n this.handlerTag,\n newViewTag,\n actionType\n );\n }\n\n scheduleFlushOperations();\n };\n\n private updateGestureHandler = (\n newConfig: Readonly>\n ) => {\n this.config = newConfig;\n\n RNGestureHandlerModule.updateGestureHandler(this.handlerTag, newConfig);\n scheduleFlushOperations();\n };\n\n private update(remainingTries: number) {\n const props: HandlerProps = this.props;\n\n // When ref is set via a function i.e. `ref={(r) => refObject.current = r}` instead of\n // `ref={refObject}` it's possible that it won't be resolved in time. Seems like trying\n // again is easy enough fix.\n if (hasUnresolvedRefs(props) && remainingTries > 0) {\n this.updateEnqueued = setImmediate(() => {\n this.updateEnqueued = null;\n this.update(remainingTries - 1);\n });\n } else {\n const newConfig = filterConfig(\n transformProps ? transformProps(this.props) : this.props,\n [...allowedProps, ...customNativeProps],\n config\n );\n if (!deepEqual(this.config, newConfig)) {\n this.updateGestureHandler(newConfig);\n }\n }\n }\n\n setNativeProps(updates: any) {\n const mergedProps = { ...this.props, ...updates };\n const newConfig = filterConfig(\n transformProps ? transformProps(mergedProps) : mergedProps,\n [...allowedProps, ...customNativeProps],\n config\n );\n this.updateGestureHandler(newConfig);\n }\n\n render() {\n let gestureEventHandler = this.onGestureHandlerEvent;\n // Another instance of https://github.com/microsoft/TypeScript/issues/13995\n type OnGestureEventHandlers = {\n onGestureEvent?: BaseGestureHandlerProps['onGestureEvent'];\n onGestureHandlerEvent?: InternalEventHandlers['onGestureHandlerEvent'];\n };\n const { onGestureEvent, onGestureHandlerEvent }: OnGestureEventHandlers =\n this.props;\n if (onGestureEvent && typeof onGestureEvent !== 'function') {\n // If it's not a method it should be an native Animated.event\n // object. We set it directly as the handler for the view\n // In this case nested handlers are not going to be supported\n if (onGestureHandlerEvent) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n gestureEventHandler = onGestureEvent;\n } else {\n if (\n onGestureHandlerEvent &&\n typeof onGestureHandlerEvent !== 'function'\n ) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n }\n\n let gestureStateEventHandler = this.onGestureHandlerStateChange;\n // Another instance of https://github.com/microsoft/TypeScript/issues/13995\n type OnGestureStateChangeHandlers = {\n onHandlerStateChange?: BaseGestureHandlerProps['onHandlerStateChange'];\n onGestureHandlerStateChange?: InternalEventHandlers['onGestureHandlerStateChange'];\n };\n const {\n onHandlerStateChange,\n onGestureHandlerStateChange,\n }: OnGestureStateChangeHandlers = this.props;\n if (onHandlerStateChange && typeof onHandlerStateChange !== 'function') {\n // If it's not a method it should be an native Animated.event\n // object. We set it directly as the handler for the view\n // In this case nested handlers are not going to be supported\n if (onGestureHandlerStateChange) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n gestureStateEventHandler = onHandlerStateChange;\n } else {\n if (\n onGestureHandlerStateChange &&\n typeof onGestureHandlerStateChange !== 'function'\n ) {\n throw new Error(\n 'Nesting touch handlers with native animated driver is not supported yet'\n );\n }\n }\n const events = {\n onGestureHandlerEvent: this.state.allowTouches\n ? gestureEventHandler\n : undefined,\n onGestureHandlerStateChange: this.state.allowTouches\n ? gestureStateEventHandler\n : undefined,\n };\n\n this.propsRef.current = events;\n\n let child: any = null;\n try {\n child = React.Children.only(this.props.children);\n } catch (e) {\n throw new Error(\n tagMessage(\n `${name} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`\n )\n );\n }\n\n let grandChildren = child.props.children;\n if (\n __DEV__ &&\n child.type &&\n (child.type === 'RNGestureHandlerButton' ||\n child.type.name === 'View' ||\n child.type.displayName === 'View')\n ) {\n grandChildren = React.Children.toArray(grandChildren);\n grandChildren.push(\n \n );\n }\n\n return React.cloneElement(\n child,\n {\n ref: this.refHandler,\n collapsable: false,\n ...(isJestEnv()\n ? {\n handlerType: name,\n handlerTag: this.handlerTag,\n }\n : {}),\n testID: this.props.testID ?? child.props.testID,\n ...events,\n },\n grandChildren\n );\n }\n }\n return Handler;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js new file mode 100644 index 00000000..9e7f4edd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js @@ -0,0 +1,62 @@ +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import * as React from 'react'; +import { useImperativeHandle, useRef } from 'react'; +import { NativeViewGestureHandler, nativeViewProps } from './NativeViewGestureHandler'; +/* + * This array should consist of: + * - All keys in propTypes from NativeGestureHandler + * (and all keys in GestureHandlerPropTypes) + * - 'onGestureHandlerEvent' + * - 'onGestureHandlerStateChange' + */ + +const NATIVE_WRAPPER_PROPS_FILTER = [...nativeViewProps, 'onGestureHandlerEvent', 'onGestureHandlerStateChange']; +export default function createNativeWrapper(Component, config = {}) { + var _Component$render; + + const ComponentWrapper = /*#__PURE__*/React.forwardRef((props, ref) => { + // filter out props that should be passed to gesture handler wrapper + const gestureHandlerProps = Object.keys(props).reduce((res, key) => { + // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info + const allowedKeys = NATIVE_WRAPPER_PROPS_FILTER; + + if (allowedKeys.includes(key)) { + // @ts-ignore FIXME(TS) + res[key] = props[key]; + } + + return res; + }, { ...config + } // watch out not to modify config + ); + + const _ref = useRef(); + + const _gestureHandlerRef = useRef(); + + useImperativeHandle(ref, // @ts-ignore TODO(TS) decide how nulls work in this context + () => { + const node = _gestureHandlerRef.current; // add handlerTag for relations config + + if (_ref.current && node) { + // @ts-ignore FIXME(TS) think about createHandler return type + _ref.current.handlerTag = node.handlerTag; + return _ref.current; + } + + return null; + }, [_ref, _gestureHandlerRef]); + return /*#__PURE__*/React.createElement(NativeViewGestureHandler, _extends({}, gestureHandlerProps, { + // @ts-ignore TODO(TS) + ref: _gestureHandlerRef + }), /*#__PURE__*/React.createElement(Component, _extends({}, props, { + ref: _ref + }))); + }); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + ComponentWrapper.displayName = (Component === null || Component === void 0 ? void 0 : Component.displayName) || ( // @ts-ignore if render doesn't exist it will return undefined and go further + Component === null || Component === void 0 ? void 0 : (_Component$render = Component.render) === null || _Component$render === void 0 ? void 0 : _Component$render.name) || typeof Component === 'string' && Component || 'ComponentWrapper'; + return ComponentWrapper; +} +//# sourceMappingURL=createNativeWrapper.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js.map new file mode 100644 index 00000000..8bec3547 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/createNativeWrapper.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["createNativeWrapper.tsx"],"names":["React","useImperativeHandle","useRef","NativeViewGestureHandler","nativeViewProps","NATIVE_WRAPPER_PROPS_FILTER","createNativeWrapper","Component","config","ComponentWrapper","forwardRef","props","ref","gestureHandlerProps","Object","keys","reduce","res","key","allowedKeys","includes","_ref","_gestureHandlerRef","node","current","handlerTag","displayName","render","name"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,mBAAT,EAA8BC,MAA9B,QAA4C,OAA5C;AAEA,SACEC,wBADF,EAGEC,eAHF,QAIO,4BAJP;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,2BAA2B,GAAG,CAClC,GAAGD,eAD+B,EAElC,uBAFkC,EAGlC,6BAHkC,CAApC;AAMA,eAAe,SAASE,mBAAT,CACbC,SADa,EAEbC,MAA+C,GAAG,EAFrC,EAGb;AAAA;;AACA,QAAMC,gBAAgB,gBAAGT,KAAK,CAACU,UAAN,CAGvB,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAChB;AACA,UAAMC,mBAAmB,GAAGC,MAAM,CAACC,IAAP,CAAYJ,KAAZ,EAAmBK,MAAnB,CAC1B,CAACC,GAAD,EAAMC,GAAN,KAAc;AACZ;AACA,YAAMC,WAA8B,GAAGd,2BAAvC;;AACA,UAAIc,WAAW,CAACC,QAAZ,CAAqBF,GAArB,CAAJ,EAA+B;AAC7B;AACAD,QAAAA,GAAG,CAACC,GAAD,CAAH,GAAWP,KAAK,CAACO,GAAD,CAAhB;AACD;;AACD,aAAOD,GAAP;AACD,KATyB,EAU1B,EAAE,GAAGT;AAAL,KAV0B,CAUZ;AAVY,KAA5B;;AAYA,UAAMa,IAAI,GAAGnB,MAAM,EAAnB;;AACA,UAAMoB,kBAAkB,GAAGpB,MAAM,EAAjC;;AACAD,IAAAA,mBAAmB,CACjBW,GADiB,EAEjB;AACA,UAAM;AACJ,YAAMW,IAAI,GAAGD,kBAAkB,CAACE,OAAhC,CADI,CAEJ;;AACA,UAAIH,IAAI,CAACG,OAAL,IAAgBD,IAApB,EAA0B;AACxB;AACAF,QAAAA,IAAI,CAACG,OAAL,CAAaC,UAAb,GAA0BF,IAAI,CAACE,UAA/B;AACA,eAAOJ,IAAI,CAACG,OAAZ;AACD;;AACD,aAAO,IAAP;AACD,KAZgB,EAajB,CAACH,IAAD,EAAOC,kBAAP,CAbiB,CAAnB;AAeA,wBACE,oBAAC,wBAAD,eACMT,mBADN;AAEE;AACA,MAAA,GAAG,EAAES;AAHP,qBAIE,oBAAC,SAAD,eAAeX,KAAf;AAAsB,MAAA,GAAG,EAAEU;AAA3B,OAJF,CADF;AAQD,GA1CwB,CAAzB,CADA,CA6CA;;AACAZ,EAAAA,gBAAgB,CAACiB,WAAjB,GACE,CAAAnB,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEmB,WAAX,OACA;AACAnB,EAAAA,SAFA,aAEAA,SAFA,4CAEAA,SAAS,CAAEoB,MAFX,sDAEA,kBAAmBC,IAFnB,KAGC,OAAOrB,SAAP,KAAqB,QAArB,IAAiCA,SAHlC,IAIA,kBALF;AAOA,SAAOE,gBAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { useImperativeHandle, useRef } from 'react';\n\nimport {\n NativeViewGestureHandler,\n NativeViewGestureHandlerProps,\n nativeViewProps,\n} from './NativeViewGestureHandler';\n\n/*\n * This array should consist of:\n * - All keys in propTypes from NativeGestureHandler\n * (and all keys in GestureHandlerPropTypes)\n * - 'onGestureHandlerEvent'\n * - 'onGestureHandlerStateChange'\n */\nconst NATIVE_WRAPPER_PROPS_FILTER = [\n ...nativeViewProps,\n 'onGestureHandlerEvent',\n 'onGestureHandlerStateChange',\n] as const;\n\nexport default function createNativeWrapper

(\n Component: React.ComponentType

,\n config: Readonly = {}\n) {\n const ComponentWrapper = React.forwardRef<\n React.ComponentType,\n P & NativeViewGestureHandlerProps\n >((props, ref) => {\n // filter out props that should be passed to gesture handler wrapper\n const gestureHandlerProps = Object.keys(props).reduce(\n (res, key) => {\n // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info\n const allowedKeys: readonly string[] = NATIVE_WRAPPER_PROPS_FILTER;\n if (allowedKeys.includes(key)) {\n // @ts-ignore FIXME(TS)\n res[key] = props[key];\n }\n return res;\n },\n { ...config } // watch out not to modify config\n );\n const _ref = useRef>();\n const _gestureHandlerRef = useRef>();\n useImperativeHandle(\n ref,\n // @ts-ignore TODO(TS) decide how nulls work in this context\n () => {\n const node = _gestureHandlerRef.current;\n // add handlerTag for relations config\n if (_ref.current && node) {\n // @ts-ignore FIXME(TS) think about createHandler return type\n _ref.current.handlerTag = node.handlerTag;\n return _ref.current;\n }\n return null;\n },\n [_ref, _gestureHandlerRef]\n );\n return (\n \n \n \n );\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ComponentWrapper.displayName =\n Component?.displayName ||\n // @ts-ignore if render doesn't exist it will return undefined and go further\n Component?.render?.name ||\n (typeof Component === 'string' && Component) ||\n 'ComponentWrapper';\n\n return ComponentWrapper;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js new file mode 100644 index 00000000..8bf8ef54 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js @@ -0,0 +1,79 @@ +// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class. +// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof +// e.g. React.createRef -> React.createRef. +// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference. +import { Platform, findNodeHandle as findNodeHandleRN } from 'react-native'; +import { handlerIDToTag } from './handlersRegistry'; +import { toArray } from '../utils'; +import RNGestureHandlerModule from '../RNGestureHandlerModule'; +const commonProps = ['id', 'enabled', 'shouldCancelWhenOutside', 'hitSlop', 'cancelsTouchesInView', 'userSelect']; +const componentInteractionProps = ['waitFor', 'simultaneousHandlers']; +export const baseGestureHandlerProps = [...commonProps, ...componentInteractionProps, 'onBegan', 'onFailed', 'onCancelled', 'onActivated', 'onEnded', 'onGestureEvent', 'onHandlerStateChange']; +export const baseGestureHandlerWithMonitorProps = [...commonProps, 'needsPointerData', 'manualActivation']; + +function isConfigParam(param, name) { + // param !== Object(param) returns false if `param` is a function + // or an object and returns true if `param` is null + return param !== undefined && (param !== Object(param) || !('__isNative' in param)) && name !== 'onHandlerStateChange' && name !== 'onGestureEvent'; +} + +export function filterConfig(props, validProps, defaults = {}) { + const filteredConfig = { ...defaults + }; + + for (const key of validProps) { + let value = props[key]; + + if (isConfigParam(value, key)) { + if (key === 'simultaneousHandlers' || key === 'waitFor') { + value = transformIntoHandlerTags(props[key]); + } else if (key === 'hitSlop' && typeof value !== 'object') { + value = { + top: value, + left: value, + bottom: value, + right: value + }; + } + + filteredConfig[key] = value; + } + } + + return filteredConfig; +} + +function transformIntoHandlerTags(handlerIDs) { + handlerIDs = toArray(handlerIDs); + + if (Platform.OS === 'web') { + return handlerIDs.map(({ + current + }) => current).filter(handle => handle); + } // converts handler string IDs into their numeric tags + + + return handlerIDs.map(handlerID => { + var _handlerID$current; + + return handlerIDToTag[handlerID] || ((_handlerID$current = handlerID.current) === null || _handlerID$current === void 0 ? void 0 : _handlerID$current.handlerTag) || -1; + }).filter(handlerTag => handlerTag > 0); +} + +export function findNodeHandle(node) { + if (Platform.OS === 'web') { + return node; + } + + return findNodeHandleRN(node); +} +let scheduledFlushOperationsId = null; +export function scheduleFlushOperations() { + if (scheduledFlushOperationsId === null) { + scheduledFlushOperationsId = requestAnimationFrame(() => { + RNGestureHandlerModule.flushOperations(); + scheduledFlushOperationsId = null; + }); + } +} +//# sourceMappingURL=gestureHandlerCommon.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js.map new file mode 100644 index 00000000..7948ef62 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerCommon.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureHandlerCommon.ts"],"names":["Platform","findNodeHandle","findNodeHandleRN","handlerIDToTag","toArray","RNGestureHandlerModule","commonProps","componentInteractionProps","baseGestureHandlerProps","baseGestureHandlerWithMonitorProps","isConfigParam","param","name","undefined","Object","filterConfig","props","validProps","defaults","filteredConfig","key","value","transformIntoHandlerTags","top","left","bottom","right","handlerIDs","OS","map","current","filter","handle","handlerID","handlerTag","node","scheduledFlushOperationsId","scheduleFlushOperations","requestAnimationFrame","flushOperations"],"mappings":"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","sourcesContent":["// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class.\n// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof\n// e.g. React.createRef -> React.createRef.\n// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.\nimport * as React from 'react';\nimport { Platform, findNodeHandle as findNodeHandleRN } from 'react-native';\n\nimport { State } from '../State';\nimport { TouchEventType } from '../TouchEventType';\nimport { ValueOf } from '../typeUtils';\nimport { handlerIDToTag } from './handlersRegistry';\nimport { toArray } from '../utils';\nimport RNGestureHandlerModule from '../RNGestureHandlerModule';\n\nconst commonProps = [\n 'id',\n 'enabled',\n 'shouldCancelWhenOutside',\n 'hitSlop',\n 'cancelsTouchesInView',\n 'userSelect',\n] as const;\n\nconst componentInteractionProps = ['waitFor', 'simultaneousHandlers'] as const;\n\nexport const baseGestureHandlerProps = [\n ...commonProps,\n ...componentInteractionProps,\n 'onBegan',\n 'onFailed',\n 'onCancelled',\n 'onActivated',\n 'onEnded',\n 'onGestureEvent',\n 'onHandlerStateChange',\n] as const;\n\nexport const baseGestureHandlerWithMonitorProps = [\n ...commonProps,\n 'needsPointerData',\n 'manualActivation',\n];\n\nexport interface GestureEventPayload {\n handlerTag: number;\n numberOfPointers: number;\n state: ValueOf;\n}\nexport interface HandlerStateChangeEventPayload extends GestureEventPayload {\n oldState: ValueOf;\n}\n\nexport type HitSlop =\n | number\n | Partial<\n Record<\n 'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal',\n number\n >\n >\n | Record<'width' | 'left', number>\n | Record<'width' | 'right', number>\n | Record<'height' | 'top', number>\n | Record<'height' | 'bottom', number>;\n\nexport type UserSelect = 'none' | 'auto' | 'text';\n\n//TODO(TS) events in handlers\n\nexport interface GestureEvent> {\n nativeEvent: Readonly;\n}\nexport interface HandlerStateChangeEvent<\n ExtraEventPayloadT = Record\n> {\n nativeEvent: Readonly;\n}\n\nexport type TouchData = {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n};\n\nexport type GestureTouchEvent = {\n handlerTag: number;\n numberOfTouches: number;\n state: ValueOf;\n eventType: TouchEventType;\n allTouches: TouchData[];\n changedTouches: TouchData[];\n};\n\nexport type GestureUpdateEvent> =\n GestureEventPayload & GestureEventPayloadT;\n\nexport type GestureStateChangeEvent<\n GestureStateChangeEventPayloadT = Record\n> = HandlerStateChangeEventPayload & GestureStateChangeEventPayloadT;\n\nexport type CommonGestureConfig = {\n enabled?: boolean;\n shouldCancelWhenOutside?: boolean;\n hitSlop?: HitSlop;\n userSelect?: UserSelect;\n};\n\n// Events payloads are types instead of interfaces due to TS limitation.\n// See https://github.com/microsoft/TypeScript/issues/15300 for more info.\nexport type BaseGestureHandlerProps<\n ExtraEventPayloadT extends Record = Record\n> = CommonGestureConfig & {\n id?: string;\n waitFor?: React.Ref | React.Ref[];\n simultaneousHandlers?: React.Ref | React.Ref[];\n testID?: string;\n cancelsTouchesInView?: boolean;\n // TODO(TS) - fix event types\n onBegan?: (event: HandlerStateChangeEvent) => void;\n onFailed?: (event: HandlerStateChangeEvent) => void;\n onCancelled?: (event: HandlerStateChangeEvent) => void;\n onActivated?: (event: HandlerStateChangeEvent) => void;\n onEnded?: (event: HandlerStateChangeEvent) => void;\n\n //TODO(TS) consider using NativeSyntheticEvent\n onGestureEvent?: (event: GestureEvent) => void;\n onHandlerStateChange?: (\n event: HandlerStateChangeEvent\n ) => void;\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?: React.ReactNode;\n};\n\nfunction isConfigParam(param: unknown, name: string) {\n // param !== Object(param) returns false if `param` is a function\n // or an object and returns true if `param` is null\n return (\n param !== undefined &&\n (param !== Object(param) ||\n !('__isNative' in (param as Record))) &&\n name !== 'onHandlerStateChange' &&\n name !== 'onGestureEvent'\n );\n}\n\nexport function filterConfig(\n props: Record,\n validProps: string[],\n defaults: Record = {}\n) {\n const filteredConfig = { ...defaults };\n for (const key of validProps) {\n let value = props[key];\n if (isConfigParam(value, key)) {\n if (key === 'simultaneousHandlers' || key === 'waitFor') {\n value = transformIntoHandlerTags(props[key]);\n } else if (key === 'hitSlop' && typeof value !== 'object') {\n value = { top: value, left: value, bottom: value, right: value };\n }\n filteredConfig[key] = value;\n }\n }\n return filteredConfig;\n}\n\nfunction transformIntoHandlerTags(handlerIDs: any) {\n handlerIDs = toArray(handlerIDs);\n\n if (Platform.OS === 'web') {\n return handlerIDs\n .map(({ current }: { current: any }) => current)\n .filter((handle: any) => handle);\n }\n // converts handler string IDs into their numeric tags\n return handlerIDs\n .map(\n (handlerID: any) =>\n handlerIDToTag[handlerID] || handlerID.current?.handlerTag || -1\n )\n .filter((handlerTag: number) => handlerTag > 0);\n}\n\nexport function findNodeHandle(\n node: null | number | React.Component | React.ComponentClass\n): null | number | React.Component | React.ComponentClass {\n if (Platform.OS === 'web') {\n return node;\n }\n return findNodeHandleRN(node);\n}\n\nlet scheduledFlushOperationsId: ReturnType<\n typeof requestAnimationFrame\n> | null = null;\n\nexport function scheduleFlushOperations() {\n if (scheduledFlushOperationsId === null) {\n scheduledFlushOperationsId = requestAnimationFrame(() => {\n RNGestureHandlerModule.flushOperations();\n\n scheduledFlushOperationsId = null;\n });\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js new file mode 100644 index 00000000..9553de4e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=gestureHandlerTypesCompat.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js.map new file mode 100644 index 00000000..9ffd4b22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestureHandlerTypesCompat.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js new file mode 100644 index 00000000..baf1ca34 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js @@ -0,0 +1,600 @@ +var _Reanimated$default$c, _Reanimated$default; + +import React, { useEffect, useRef, useState } from 'react'; +import { BaseGesture, CALLBACK_TYPE } from './gesture'; +import { Reanimated } from './reanimatedWrapper'; +import { registerHandler, unregisterHandler } from '../handlersRegistry'; +import RNGestureHandlerModule from '../../RNGestureHandlerModule'; +import { baseGestureHandlerWithMonitorProps, filterConfig, findNodeHandle, scheduleFlushOperations } from '../gestureHandlerCommon'; +import { GestureStateManager } from './gestureStateManager'; +import { flingGestureHandlerProps } from '../FlingGestureHandler'; +import { forceTouchGestureHandlerProps } from '../ForceTouchGestureHandler'; +import { longPressGestureHandlerProps } from '../LongPressGestureHandler'; +import { panGestureHandlerProps, panGestureHandlerCustomNativeProps } from '../PanGestureHandler'; +import { tapGestureHandlerProps } from '../TapGestureHandler'; +import { State } from '../../State'; +import { TouchEventType } from '../../TouchEventType'; +import { ActionType } from '../../ActionType'; +import { isFabric, REACT_NATIVE_VERSION, tagMessage } from '../../utils'; +import { getShadowNodeFromRef } from '../../getShadowNodeFromRef'; +import { Platform } from 'react-native'; +import { onGestureHandlerEvent } from './eventReceiver'; +import { RNRenderer } from '../../RNRenderer'; +import { isExperimentalWebImplementationEnabled } from '../../EnableExperimentalWebImplementation'; +const ALLOWED_PROPS = [...baseGestureHandlerWithMonitorProps, ...tapGestureHandlerProps, ...panGestureHandlerProps, ...panGestureHandlerCustomNativeProps, ...longPressGestureHandlerProps, ...forceTouchGestureHandlerProps, ...flingGestureHandlerProps]; + +function convertToHandlerTag(ref) { + if (typeof ref === 'number') { + return ref; + } else if (ref instanceof BaseGesture) { + return ref.handlerTag; + } else { + var _ref$current$handlerT, _ref$current; + + // @ts-ignore in this case it should be a ref either to gesture object or + // a gesture handler component, in both cases handlerTag property exists + return (_ref$current$handlerT = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.handlerTag) !== null && _ref$current$handlerT !== void 0 ? _ref$current$handlerT : -1; + } +} + +function extractValidHandlerTags(interactionGroup) { + var _interactionGroup$map, _interactionGroup$map2; + + return (_interactionGroup$map = interactionGroup === null || interactionGroup === void 0 ? void 0 : (_interactionGroup$map2 = interactionGroup.map(convertToHandlerTag)) === null || _interactionGroup$map2 === void 0 ? void 0 : _interactionGroup$map2.filter(tag => tag > 0)) !== null && _interactionGroup$map !== void 0 ? _interactionGroup$map : []; +} + +function dropHandlers(preparedGesture) { + for (const handler of preparedGesture.config) { + RNGestureHandlerModule.dropGestureHandler(handler.handlerTag); + unregisterHandler(handler.handlerTag, handler.config.testId); + } + + scheduleFlushOperations(); +} + +function checkGestureCallbacksForWorklets(gesture) { + // if a gesture is explicitly marked to run on the JS thread there is no need to check + // if callbacks are worklets as the user is aware they will be ran on the JS thread + if (gesture.config.runOnJS) { + return; + } + + const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false); + const areSomeWorklets = gesture.handlers.isWorklet.includes(true); // if some of the callbacks are worklets and some are not, and the gesture is not + // explicitly marked with `.runOnJS(true)` show an error + + if (areSomeNotWorklets && areSomeWorklets) { + console.error(tagMessage(`Some of the callbacks in the gesture are worklets and some are not. Either make sure that all calbacks are marked as 'worklet' if you wish to run them on the UI thread or use '.runOnJS(true)' modifier on the gesture explicitly to run all callbacks on the JS thread.`)); + } +} + +function attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + viewTag, + webEventHandlersRef, + mountedRef +}) { + if (!preparedGesture.firstExecution) { + gestureConfig.initialize(); + } else { + preparedGesture.firstExecution = false; + } // use setImmediate to extract handlerTags, because all refs should be initialized + // when it's ran + + + setImmediate(() => { + if (!mountedRef.current) { + return; + } + + gestureConfig.prepare(); + }); + + for (const handler of gesture) { + checkGestureCallbacksForWorklets(handler); + RNGestureHandlerModule.createGestureHandler(handler.handlerName, handler.handlerTag, filterConfig(handler.config, ALLOWED_PROPS)); + registerHandler(handler.handlerTag, handler, handler.config.testId); + } // use setImmediate to extract handlerTags, because all refs should be initialized + // when it's ran + + + setImmediate(() => { + if (!mountedRef.current) { + return; + } + + for (const handler of gesture) { + let requireToFail = []; + + if (handler.config.requireToFail) { + requireToFail = extractValidHandlerTags(handler.config.requireToFail); + } + + let simultaneousWith = []; + + if (handler.config.simultaneousWith) { + simultaneousWith = extractValidHandlerTags(handler.config.simultaneousWith); + } + + RNGestureHandlerModule.updateGestureHandler(handler.handlerTag, filterConfig(handler.config, ALLOWED_PROPS, { + simultaneousHandlers: simultaneousWith, + waitFor: requireToFail + })); + } + + scheduleFlushOperations(); + }); + preparedGesture.config = gesture; + + for (const gesture of preparedGesture.config) { + const actionType = gesture.shouldUseReanimated ? ActionType.REANIMATED_WORKLET : ActionType.JS_FUNCTION_NEW_API; + + if (Platform.OS === 'web') { + RNGestureHandlerModule.attachGestureHandler(gesture.handlerTag, viewTag, ActionType.JS_FUNCTION_OLD_API, // ignored on web + webEventHandlersRef); + } else { + RNGestureHandlerModule.attachGestureHandler(gesture.handlerTag, viewTag, actionType); + } + } + + if (preparedGesture.animatedHandlers) { + const isAnimatedGesture = g => g.shouldUseReanimated; + + preparedGesture.animatedHandlers.value = gesture.filter(isAnimatedGesture).map(g => g.handlers); + } +} + +function updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef) { + gestureConfig.prepare(); + + for (let i = 0; i < gesture.length; i++) { + const handler = preparedGesture.config[i]; + checkGestureCallbacksForWorklets(handler); // only update handlerTag when it's actually different, it may be the same + // if gesture config object is wrapped with useMemo + + if (gesture[i].handlerTag !== handler.handlerTag) { + gesture[i].handlerTag = handler.handlerTag; + gesture[i].handlers.handlerTag = handler.handlerTag; + } + } // use setImmediate to extract handlerTags, because when it's ran, all refs should be updated + // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait + // in case of external relations) + + + setImmediate(() => { + if (!mountedRef.current) { + return; + } + + for (let i = 0; i < gesture.length; i++) { + const handler = preparedGesture.config[i]; + handler.config = gesture[i].config; + handler.handlers = gesture[i].handlers; + const requireToFail = extractValidHandlerTags(handler.config.requireToFail); + const simultaneousWith = extractValidHandlerTags(handler.config.simultaneousWith); + RNGestureHandlerModule.updateGestureHandler(handler.handlerTag, filterConfig(handler.config, ALLOWED_PROPS, { + simultaneousHandlers: simultaneousWith, + waitFor: requireToFail + })); + registerHandler(handler.handlerTag, handler, handler.config.testId); + } + + if (preparedGesture.animatedHandlers) { + var _preparedGesture$anim; + + const previousHandlersValue = (_preparedGesture$anim = preparedGesture.animatedHandlers.value) !== null && _preparedGesture$anim !== void 0 ? _preparedGesture$anim : []; + const newHandlersValue = preparedGesture.config.filter(g => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI + .map(g => g.handlers); // if amount of gesture configs changes, we need to update the callbacks in shared value + + let shouldUpdateSharedValue = previousHandlersValue.length !== newHandlersValue.length; + + if (!shouldUpdateSharedValue) { + // if the amount is the same, we need to check if any of the configs inside has changed + for (let i = 0; i < newHandlersValue.length; i++) { + if ( // we can use the `gestureId` prop as it's unique for every config instance + newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId) { + shouldUpdateSharedValue = true; + break; + } + } + } + + if (shouldUpdateSharedValue) { + preparedGesture.animatedHandlers.value = newHandlersValue; + } + } + + scheduleFlushOperations(); + }); +} + +function needsToReattach(preparedGesture, gesture) { + if (gesture.length !== preparedGesture.config.length) { + return true; + } + + for (let i = 0; i < gesture.length; i++) { + if (gesture[i].handlerName !== preparedGesture.config[i].handlerName || gesture[i].shouldUseReanimated !== preparedGesture.config[i].shouldUseReanimated) { + return true; + } + } + + return false; +} + +function isStateChangeEvent(event) { + 'worklet'; // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point + + return event.oldState != null; +} + +function isTouchEvent(event) { + 'worklet'; + + return event.eventType != null; +} + +function getHandler(type, gesture) { + 'worklet'; + + switch (type) { + case CALLBACK_TYPE.BEGAN: + return gesture.onBegin; + + case CALLBACK_TYPE.START: + return gesture.onStart; + + case CALLBACK_TYPE.UPDATE: + return gesture.onUpdate; + + case CALLBACK_TYPE.CHANGE: + return gesture.onChange; + + case CALLBACK_TYPE.END: + return gesture.onEnd; + + case CALLBACK_TYPE.FINALIZE: + return gesture.onFinalize; + + case CALLBACK_TYPE.TOUCHES_DOWN: + return gesture.onTouchesDown; + + case CALLBACK_TYPE.TOUCHES_MOVE: + return gesture.onTouchesMove; + + case CALLBACK_TYPE.TOUCHES_UP: + return gesture.onTouchesUp; + + case CALLBACK_TYPE.TOUCHES_CANCELLED: + return gesture.onTouchesCancelled; + } +} + +function touchEventTypeToCallbackType(eventType) { + 'worklet'; + + switch (eventType) { + case TouchEventType.TOUCHES_DOWN: + return CALLBACK_TYPE.TOUCHES_DOWN; + + case TouchEventType.TOUCHES_MOVE: + return CALLBACK_TYPE.TOUCHES_MOVE; + + case TouchEventType.TOUCHES_UP: + return CALLBACK_TYPE.TOUCHES_UP; + + case TouchEventType.TOUCHES_CANCELLED: + return CALLBACK_TYPE.TOUCHES_CANCELLED; + } + + return CALLBACK_TYPE.UNDEFINED; +} + +function runWorklet(type, gesture, event, ...args) { + 'worklet'; + + const handler = getHandler(type, gesture); + + if (gesture.isWorklet[type]) { + // @ts-ignore Logic below makes sure the correct event is send to the + // correct handler. + handler === null || handler === void 0 ? void 0 : handler(event, ...args); + } else if (handler) { + console.warn(tagMessage('Animated gesture callback must be a worklet')); + } +} + +function useAnimatedGesture(preparedGesture, needsRebuild) { + if (!Reanimated) { + return; + } // Hooks are called conditionally, but the condition is whether the + // react-native-reanimated is installed, which shouldn't change while running + // eslint-disable-next-line react-hooks/rules-of-hooks + + + const sharedHandlersCallbacks = Reanimated.useSharedValue(null); // eslint-disable-next-line react-hooks/rules-of-hooks + + const lastUpdateEvent = Reanimated.useSharedValue([]); // not every gesture needs a state controller, init them lazily + + const stateControllers = []; + + const callback = event => { + 'worklet'; + + const currentCallback = sharedHandlersCallbacks.value; + + if (!currentCallback) { + return; + } + + for (let i = 0; i < currentCallback.length; i++) { + const gesture = currentCallback[i]; + + if (event.handlerTag === gesture.handlerTag) { + if (isStateChangeEvent(event)) { + if (event.oldState === State.UNDETERMINED && event.state === State.BEGAN) { + runWorklet(CALLBACK_TYPE.BEGAN, gesture, event); + } else if ((event.oldState === State.BEGAN || event.oldState === State.UNDETERMINED) && event.state === State.ACTIVE) { + runWorklet(CALLBACK_TYPE.START, gesture, event); + lastUpdateEvent.value[gesture.handlerTag] = undefined; + } else if (event.oldState !== event.state && event.state === State.END) { + if (event.oldState === State.ACTIVE) { + runWorklet(CALLBACK_TYPE.END, gesture, event, true); + } + + runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, true); + } else if ((event.state === State.FAILED || event.state === State.CANCELLED) && event.state !== event.oldState) { + if (event.oldState === State.ACTIVE) { + runWorklet(CALLBACK_TYPE.END, gesture, event, false); + } + + runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false); + } + } else if (isTouchEvent(event)) { + if (!stateControllers[i]) { + stateControllers[i] = GestureStateManager.create(event.handlerTag); + } + + if (event.eventType !== TouchEventType.UNDETERMINED) { + runWorklet(touchEventTypeToCallbackType(event.eventType), gesture, event, stateControllers[i]); + } + } else { + runWorklet(CALLBACK_TYPE.UPDATE, gesture, event); + + if (gesture.onChange && gesture.changeEventCalculator) { + var _gesture$changeEventC; + + runWorklet(CALLBACK_TYPE.CHANGE, gesture, (_gesture$changeEventC = gesture.changeEventCalculator) === null || _gesture$changeEventC === void 0 ? void 0 : _gesture$changeEventC.call(gesture, event, lastUpdateEvent.value[gesture.handlerTag])); + lastUpdateEvent.value[gesture.handlerTag] = event; + } + } + } + } + }; // eslint-disable-next-line react-hooks/rules-of-hooks + + + const event = Reanimated.useEvent(callback, ['onGestureHandlerStateChange', 'onGestureHandlerEvent'], needsRebuild); + preparedGesture.animatedEventHandler = event; + preparedGesture.animatedHandlers = sharedHandlersCallbacks; +} // eslint-disable-next-line @typescript-eslint/no-explicit-any + + +function validateDetectorChildren(ref) { + // finds the first native view under the Wrap component and traverses the fiber tree upwards + // to check whether there is more than one native view as a pseudo-direct child of GestureDetector + // i.e. this is not ok: + // Wrap + // | + // / \ + // / \ + // / \ + // / \ + // NativeView NativeView + // + // but this is fine: + // Wrap + // | + // NativeView + // | + // / \ + // / \ + // / \ + // / \ + // NativeView NativeView + if (__DEV__ && Platform.OS !== 'web') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const wrapType = REACT_NATIVE_VERSION.minor > 63 || REACT_NATIVE_VERSION.major > 0 ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + ref._reactInternals.elementType : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + ref._reactInternalFiber.elementType; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + let instance = RNRenderer.findHostInstance_DEPRECATED(ref)._internalFiberInstanceHandleDEV; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + + + while (instance && instance.elementType !== wrapType) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (instance.sibling) { + throw new Error('GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a or .'); + } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + + + instance = instance.return; + } + } +} + +const applyUserSelectProp = (userSelect, gesture) => { + for (const g of gesture.toGestureArray()) { + g.config.userSelect = userSelect; + } +}; + +export const GestureDetector = props => { + const gestureConfig = props.gesture; + + if (props.userSelect) { + applyUserSelectProp(props.userSelect, gestureConfig); + } + + const gesture = gestureConfig.toGestureArray(); + const useReanimatedHook = gesture.some(g => g.shouldUseReanimated); // store state in ref to prevent unnecessary renders + + const state = useRef({ + firstRender: true, + viewRef: null, + previousViewTag: -1, + forceReattach: false + }).current; + const mountedRef = useRef(false); + const webEventHandlersRef = useRef({ + onGestureHandlerEvent: e => { + onGestureHandlerEvent(e.nativeEvent); + }, + onGestureHandlerStateChange: isExperimentalWebImplementationEnabled() ? e => { + onGestureHandlerEvent(e.nativeEvent); + } : undefined + }); + const [renderState, setRenderState] = useState(false); + + function forceRender() { + setRenderState(!renderState); + } + + const preparedGesture = React.useRef({ + config: gesture, + animatedEventHandler: null, + animatedHandlers: null, + firstExecution: true, + useReanimatedHook: useReanimatedHook + }).current; + + if (useReanimatedHook !== preparedGesture.useReanimatedHook) { + throw new Error(tagMessage('You cannot change the thread the callbacks are ran on while the app is running')); + } + + function onHandlersUpdate(skipConfigUpdate) { + // if the underlying view has changed we need to reattach handlers to the new view + const viewTag = findNodeHandle(state.viewRef); + const forceReattach = viewTag !== state.previousViewTag; + + if (forceReattach || needsToReattach(preparedGesture, gesture)) { + validateDetectorChildren(state.viewRef); + dropHandlers(preparedGesture); + attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + webEventHandlersRef, + viewTag, + mountedRef + }); + state.previousViewTag = viewTag; + state.forceReattach = forceReattach; + + if (forceReattach) { + forceRender(); + } + } else if (!skipConfigUpdate) { + updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef); + } + } // Reanimated event should be rebuilt only when gestures are reattached, otherwise + // config update will be enough as all necessary items are stored in shared values anyway + + + const needsToRebuildReanimatedEvent = preparedGesture.firstExecution || needsToReattach(preparedGesture, gesture) || state.forceReattach; + state.forceReattach = false; + + if (preparedGesture.firstExecution) { + gestureConfig.initialize(); + } + + if (useReanimatedHook) { + // Whether animatedGesture or gesture is used shouldn't change while the app is running + // eslint-disable-next-line react-hooks/rules-of-hooks + useAnimatedGesture(preparedGesture, needsToRebuildReanimatedEvent); + } + + useEffect(() => { + const viewTag = findNodeHandle(state.viewRef); + state.firstRender = true; + mountedRef.current = true; + validateDetectorChildren(state.viewRef); + attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + webEventHandlersRef, + viewTag, + mountedRef + }); + return () => { + mountedRef.current = false; + dropHandlers(preparedGesture); + }; + }, []); + useEffect(() => { + if (!state.firstRender) { + onHandlersUpdate(); + } else { + state.firstRender = false; + } + }, [props]); + + const refFunction = ref => { + if (ref !== null) { + // @ts-ignore Just setting the view ref + state.viewRef = ref; // if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed + + if (state.previousViewTag === -1) { + state.previousViewTag = findNodeHandle(state.viewRef); + } // pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers + // in case the view has changed, while config update would be handled be the `useEffect` above + + + onHandlersUpdate(true); + + if (isFabric()) { + const node = getShadowNodeFromRef(ref); + + if (global.isFormsStackingContext(node) === false) { + console.error(tagMessage('GestureDetector has received a child that may get view-flattened. ' + '\nTo prevent it from misbehaving you need to wrap the child with a ``.')); + } + } + } + }; + + if (useReanimatedHook) { + return /*#__PURE__*/React.createElement(AnimatedWrap, { + ref: refFunction, + onGestureHandlerEvent: preparedGesture.animatedEventHandler + }, props.children); + } else { + return /*#__PURE__*/React.createElement(Wrap, { + ref: refFunction + }, props.children); + } +}; + +class Wrap extends React.Component { + render() { + try { + // I don't think that fighting with types over such a simple function is worth it + // The only thing it does is add 'collapsable: false' to the child component + // to make sure it is in the native view hierarchy so the detector can find + // correct viewTag to attach to. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const child = React.Children.only(this.props.children); + return /*#__PURE__*/React.cloneElement(child, { + collapsable: false + }, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + child.props.children); + } catch (e) { + throw new Error(tagMessage(`GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`)); + } + } + +} + +const AnimatedWrap = (_Reanimated$default$c = Reanimated === null || Reanimated === void 0 ? void 0 : (_Reanimated$default = Reanimated.default) === null || _Reanimated$default === void 0 ? void 0 : _Reanimated$default.createAnimatedComponent(Wrap)) !== null && _Reanimated$default$c !== void 0 ? _Reanimated$default$c : Wrap; +//# sourceMappingURL=GestureDetector.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js.map new file mode 100644 index 00000000..f3358321 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/GestureDetector.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureDetector.tsx"],"names":["React","useEffect","useRef","useState","BaseGesture","CALLBACK_TYPE","Reanimated","registerHandler","unregisterHandler","RNGestureHandlerModule","baseGestureHandlerWithMonitorProps","filterConfig","findNodeHandle","scheduleFlushOperations","GestureStateManager","flingGestureHandlerProps","forceTouchGestureHandlerProps","longPressGestureHandlerProps","panGestureHandlerProps","panGestureHandlerCustomNativeProps","tapGestureHandlerProps","State","TouchEventType","ActionType","isFabric","REACT_NATIVE_VERSION","tagMessage","getShadowNodeFromRef","Platform","onGestureHandlerEvent","RNRenderer","isExperimentalWebImplementationEnabled","ALLOWED_PROPS","convertToHandlerTag","ref","handlerTag","current","extractValidHandlerTags","interactionGroup","map","filter","tag","dropHandlers","preparedGesture","handler","config","dropGestureHandler","testId","checkGestureCallbacksForWorklets","gesture","runOnJS","areSomeNotWorklets","handlers","isWorklet","includes","areSomeWorklets","console","error","attachHandlers","gestureConfig","viewTag","webEventHandlersRef","mountedRef","firstExecution","initialize","setImmediate","prepare","createGestureHandler","handlerName","requireToFail","simultaneousWith","updateGestureHandler","simultaneousHandlers","waitFor","actionType","shouldUseReanimated","REANIMATED_WORKLET","JS_FUNCTION_NEW_API","OS","attachGestureHandler","JS_FUNCTION_OLD_API","animatedHandlers","isAnimatedGesture","g","value","updateHandlers","i","length","previousHandlersValue","newHandlersValue","shouldUpdateSharedValue","gestureId","needsToReattach","isStateChangeEvent","event","oldState","isTouchEvent","eventType","getHandler","type","BEGAN","onBegin","START","onStart","UPDATE","onUpdate","CHANGE","onChange","END","onEnd","FINALIZE","onFinalize","TOUCHES_DOWN","onTouchesDown","TOUCHES_MOVE","onTouchesMove","TOUCHES_UP","onTouchesUp","TOUCHES_CANCELLED","onTouchesCancelled","touchEventTypeToCallbackType","UNDEFINED","runWorklet","args","warn","useAnimatedGesture","needsRebuild","sharedHandlersCallbacks","useSharedValue","lastUpdateEvent","stateControllers","callback","currentCallback","UNDETERMINED","state","ACTIVE","undefined","FAILED","CANCELLED","create","changeEventCalculator","useEvent","animatedEventHandler","validateDetectorChildren","__DEV__","wrapType","minor","major","_reactInternals","elementType","_reactInternalFiber","instance","findHostInstance_DEPRECATED","_internalFiberInstanceHandleDEV","sibling","Error","return","applyUserSelectProp","userSelect","toGestureArray","GestureDetector","props","useReanimatedHook","some","firstRender","viewRef","previousViewTag","forceReattach","e","nativeEvent","onGestureHandlerStateChange","renderState","setRenderState","forceRender","onHandlersUpdate","skipConfigUpdate","needsToRebuildReanimatedEvent","refFunction","node","global","isFormsStackingContext","children","Wrap","Component","render","child","Children","only","cloneElement","collapsable","AnimatedWrap","default","createAnimatedComponent"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n GestureType,\n HandlerCallbacks,\n BaseGesture,\n GestureRef,\n CALLBACK_TYPE,\n} from './gesture';\nimport { Reanimated, SharedValue } from './reanimatedWrapper';\nimport { registerHandler, unregisterHandler } from '../handlersRegistry';\nimport RNGestureHandlerModule from '../../RNGestureHandlerModule';\nimport {\n baseGestureHandlerWithMonitorProps,\n filterConfig,\n findNodeHandle,\n GestureTouchEvent,\n GestureUpdateEvent,\n GestureStateChangeEvent,\n HandlerStateChangeEvent,\n scheduleFlushOperations,\n UserSelect,\n} from '../gestureHandlerCommon';\nimport {\n GestureStateManager,\n GestureStateManagerType,\n} from './gestureStateManager';\nimport { flingGestureHandlerProps } from '../FlingGestureHandler';\nimport { forceTouchGestureHandlerProps } from '../ForceTouchGestureHandler';\nimport { longPressGestureHandlerProps } from '../LongPressGestureHandler';\nimport {\n panGestureHandlerProps,\n panGestureHandlerCustomNativeProps,\n} from '../PanGestureHandler';\nimport { tapGestureHandlerProps } from '../TapGestureHandler';\nimport { State } from '../../State';\nimport { TouchEventType } from '../../TouchEventType';\nimport { ComposedGesture } from './gestureComposition';\nimport { ActionType } from '../../ActionType';\nimport { isFabric, REACT_NATIVE_VERSION, tagMessage } from '../../utils';\nimport { getShadowNodeFromRef } from '../../getShadowNodeFromRef';\nimport { Platform } from 'react-native';\nimport type RNGestureHandlerModuleWeb from '../../RNGestureHandlerModule.web';\nimport { onGestureHandlerEvent } from './eventReceiver';\nimport { RNRenderer } from '../../RNRenderer';\nimport { isExperimentalWebImplementationEnabled } from '../../EnableExperimentalWebImplementation';\n\ndeclare const global: {\n isFormsStackingContext: (node: unknown) => boolean | null; // JSI function\n};\n\nconst ALLOWED_PROPS = [\n ...baseGestureHandlerWithMonitorProps,\n ...tapGestureHandlerProps,\n ...panGestureHandlerProps,\n ...panGestureHandlerCustomNativeProps,\n ...longPressGestureHandlerProps,\n ...forceTouchGestureHandlerProps,\n ...flingGestureHandlerProps,\n];\n\nexport type GestureConfigReference = {\n config: GestureType[];\n animatedEventHandler: unknown;\n animatedHandlers: SharedValue<\n HandlerCallbacks>[] | null\n > | null;\n firstExecution: boolean;\n useReanimatedHook: boolean;\n};\n\nfunction convertToHandlerTag(ref: GestureRef): number {\n if (typeof ref === 'number') {\n return ref;\n } else if (ref instanceof BaseGesture) {\n return ref.handlerTag;\n } else {\n // @ts-ignore in this case it should be a ref either to gesture object or\n // a gesture handler component, in both cases handlerTag property exists\n return ref.current?.handlerTag ?? -1;\n }\n}\n\nfunction extractValidHandlerTags(interactionGroup: GestureRef[] | undefined) {\n return (\n interactionGroup?.map(convertToHandlerTag)?.filter((tag) => tag > 0) ?? []\n );\n}\n\nfunction dropHandlers(preparedGesture: GestureConfigReference) {\n for (const handler of preparedGesture.config) {\n RNGestureHandlerModule.dropGestureHandler(handler.handlerTag);\n\n unregisterHandler(handler.handlerTag, handler.config.testId);\n }\n\n scheduleFlushOperations();\n}\n\nfunction checkGestureCallbacksForWorklets(gesture: GestureType) {\n // if a gesture is explicitly marked to run on the JS thread there is no need to check\n // if callbacks are worklets as the user is aware they will be ran on the JS thread\n if (gesture.config.runOnJS) {\n return;\n }\n\n const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false);\n const areSomeWorklets = gesture.handlers.isWorklet.includes(true);\n\n // if some of the callbacks are worklets and some are not, and the gesture is not\n // explicitly marked with `.runOnJS(true)` show an error\n if (areSomeNotWorklets && areSomeWorklets) {\n console.error(\n tagMessage(\n `Some of the callbacks in the gesture are worklets and some are not. Either make sure that all calbacks are marked as 'worklet' if you wish to run them on the UI thread or use '.runOnJS(true)' modifier on the gesture explicitly to run all callbacks on the JS thread.`\n )\n );\n }\n}\n\ninterface WebEventHandler {\n onGestureHandlerEvent: (event: HandlerStateChangeEvent) => void;\n onGestureHandlerStateChange?: (\n event: HandlerStateChangeEvent\n ) => void;\n}\n\ninterface AttachHandlersConfig {\n preparedGesture: GestureConfigReference;\n gestureConfig: ComposedGesture | GestureType;\n gesture: GestureType[];\n viewTag: number;\n webEventHandlersRef: React.RefObject;\n mountedRef: React.RefObject;\n}\n\nfunction attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n viewTag,\n webEventHandlersRef,\n mountedRef,\n}: AttachHandlersConfig) {\n if (!preparedGesture.firstExecution) {\n gestureConfig.initialize();\n } else {\n preparedGesture.firstExecution = false;\n }\n\n // use setImmediate to extract handlerTags, because all refs should be initialized\n // when it's ran\n setImmediate(() => {\n if (!mountedRef.current) {\n return;\n }\n gestureConfig.prepare();\n });\n\n for (const handler of gesture) {\n checkGestureCallbacksForWorklets(handler);\n RNGestureHandlerModule.createGestureHandler(\n handler.handlerName,\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS)\n );\n\n registerHandler(handler.handlerTag, handler, handler.config.testId);\n }\n\n // use setImmediate to extract handlerTags, because all refs should be initialized\n // when it's ran\n setImmediate(() => {\n if (!mountedRef.current) {\n return;\n }\n for (const handler of gesture) {\n let requireToFail: number[] = [];\n if (handler.config.requireToFail) {\n requireToFail = extractValidHandlerTags(handler.config.requireToFail);\n }\n\n let simultaneousWith: number[] = [];\n if (handler.config.simultaneousWith) {\n simultaneousWith = extractValidHandlerTags(\n handler.config.simultaneousWith\n );\n }\n\n RNGestureHandlerModule.updateGestureHandler(\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS, {\n simultaneousHandlers: simultaneousWith,\n waitFor: requireToFail,\n })\n );\n }\n\n scheduleFlushOperations();\n });\n\n preparedGesture.config = gesture;\n\n for (const gesture of preparedGesture.config) {\n const actionType = gesture.shouldUseReanimated\n ? ActionType.REANIMATED_WORKLET\n : ActionType.JS_FUNCTION_NEW_API;\n\n if (Platform.OS === 'web') {\n (\n RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler\n )(\n gesture.handlerTag,\n viewTag,\n ActionType.JS_FUNCTION_OLD_API, // ignored on web\n webEventHandlersRef\n );\n } else {\n RNGestureHandlerModule.attachGestureHandler(\n gesture.handlerTag,\n viewTag,\n actionType\n );\n }\n }\n\n if (preparedGesture.animatedHandlers) {\n const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated;\n\n preparedGesture.animatedHandlers.value = gesture\n .filter(isAnimatedGesture)\n .map((g) => g.handlers) as unknown as HandlerCallbacks<\n Record\n >[];\n }\n}\n\nfunction updateHandlers(\n preparedGesture: GestureConfigReference,\n gestureConfig: ComposedGesture | GestureType,\n gesture: GestureType[],\n mountedRef: React.RefObject\n) {\n gestureConfig.prepare();\n\n for (let i = 0; i < gesture.length; i++) {\n const handler = preparedGesture.config[i];\n checkGestureCallbacksForWorklets(handler);\n\n // only update handlerTag when it's actually different, it may be the same\n // if gesture config object is wrapped with useMemo\n if (gesture[i].handlerTag !== handler.handlerTag) {\n gesture[i].handlerTag = handler.handlerTag;\n gesture[i].handlers.handlerTag = handler.handlerTag;\n }\n }\n\n // use setImmediate to extract handlerTags, because when it's ran, all refs should be updated\n // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait\n // in case of external relations)\n setImmediate(() => {\n if (!mountedRef.current) {\n return;\n }\n for (let i = 0; i < gesture.length; i++) {\n const handler = preparedGesture.config[i];\n\n handler.config = gesture[i].config;\n handler.handlers = gesture[i].handlers;\n\n const requireToFail = extractValidHandlerTags(\n handler.config.requireToFail\n );\n\n const simultaneousWith = extractValidHandlerTags(\n handler.config.simultaneousWith\n );\n\n RNGestureHandlerModule.updateGestureHandler(\n handler.handlerTag,\n filterConfig(handler.config, ALLOWED_PROPS, {\n simultaneousHandlers: simultaneousWith,\n waitFor: requireToFail,\n })\n );\n\n registerHandler(handler.handlerTag, handler, handler.config.testId);\n }\n\n if (preparedGesture.animatedHandlers) {\n const previousHandlersValue =\n preparedGesture.animatedHandlers.value ?? [];\n const newHandlersValue = preparedGesture.config\n .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI\n .map((g) => g.handlers) as unknown as HandlerCallbacks<\n Record\n >[];\n\n // if amount of gesture configs changes, we need to update the callbacks in shared value\n let shouldUpdateSharedValue =\n previousHandlersValue.length !== newHandlersValue.length;\n\n if (!shouldUpdateSharedValue) {\n // if the amount is the same, we need to check if any of the configs inside has changed\n for (let i = 0; i < newHandlersValue.length; i++) {\n if (\n // we can use the `gestureId` prop as it's unique for every config instance\n newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId\n ) {\n shouldUpdateSharedValue = true;\n break;\n }\n }\n }\n\n if (shouldUpdateSharedValue) {\n preparedGesture.animatedHandlers.value = newHandlersValue;\n }\n }\n\n scheduleFlushOperations();\n });\n}\n\nfunction needsToReattach(\n preparedGesture: GestureConfigReference,\n gesture: GestureType[]\n) {\n if (gesture.length !== preparedGesture.config.length) {\n return true;\n }\n for (let i = 0; i < gesture.length; i++) {\n if (\n gesture[i].handlerName !== preparedGesture.config[i].handlerName ||\n gesture[i].shouldUseReanimated !==\n preparedGesture.config[i].shouldUseReanimated\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isStateChangeEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureStateChangeEvent {\n 'worklet';\n // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point\n return event.oldState != null;\n}\n\nfunction isTouchEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureTouchEvent {\n 'worklet';\n return event.eventType != null;\n}\n\nfunction getHandler(\n type: CALLBACK_TYPE,\n gesture: HandlerCallbacks>\n) {\n 'worklet';\n switch (type) {\n case CALLBACK_TYPE.BEGAN:\n return gesture.onBegin;\n case CALLBACK_TYPE.START:\n return gesture.onStart;\n case CALLBACK_TYPE.UPDATE:\n return gesture.onUpdate;\n case CALLBACK_TYPE.CHANGE:\n return gesture.onChange;\n case CALLBACK_TYPE.END:\n return gesture.onEnd;\n case CALLBACK_TYPE.FINALIZE:\n return gesture.onFinalize;\n case CALLBACK_TYPE.TOUCHES_DOWN:\n return gesture.onTouchesDown;\n case CALLBACK_TYPE.TOUCHES_MOVE:\n return gesture.onTouchesMove;\n case CALLBACK_TYPE.TOUCHES_UP:\n return gesture.onTouchesUp;\n case CALLBACK_TYPE.TOUCHES_CANCELLED:\n return gesture.onTouchesCancelled;\n }\n}\n\nfunction touchEventTypeToCallbackType(\n eventType: TouchEventType\n): CALLBACK_TYPE {\n 'worklet';\n switch (eventType) {\n case TouchEventType.TOUCHES_DOWN:\n return CALLBACK_TYPE.TOUCHES_DOWN;\n case TouchEventType.TOUCHES_MOVE:\n return CALLBACK_TYPE.TOUCHES_MOVE;\n case TouchEventType.TOUCHES_UP:\n return CALLBACK_TYPE.TOUCHES_UP;\n case TouchEventType.TOUCHES_CANCELLED:\n return CALLBACK_TYPE.TOUCHES_CANCELLED;\n }\n return CALLBACK_TYPE.UNDEFINED;\n}\n\nfunction runWorklet(\n type: CALLBACK_TYPE,\n gesture: HandlerCallbacks>,\n event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent,\n ...args: any[]\n) {\n 'worklet';\n const handler = getHandler(type, gesture);\n if (gesture.isWorklet[type]) {\n // @ts-ignore Logic below makes sure the correct event is send to the\n // correct handler.\n handler?.(event, ...args);\n } else if (handler) {\n console.warn(tagMessage('Animated gesture callback must be a worklet'));\n }\n}\n\nfunction useAnimatedGesture(\n preparedGesture: GestureConfigReference,\n needsRebuild: boolean\n) {\n if (!Reanimated) {\n return;\n }\n\n // Hooks are called conditionally, but the condition is whether the\n // react-native-reanimated is installed, which shouldn't change while running\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const sharedHandlersCallbacks = Reanimated.useSharedValue<\n HandlerCallbacks>[] | null\n >(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const lastUpdateEvent = Reanimated.useSharedValue<\n (GestureUpdateEvent | undefined)[]\n >([]);\n\n // not every gesture needs a state controller, init them lazily\n const stateControllers: GestureStateManagerType[] = [];\n\n const callback = (\n event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent\n ) => {\n 'worklet';\n\n const currentCallback = sharedHandlersCallbacks.value;\n if (!currentCallback) {\n return;\n }\n\n for (let i = 0; i < currentCallback.length; i++) {\n const gesture = currentCallback[i];\n\n if (event.handlerTag === gesture.handlerTag) {\n if (isStateChangeEvent(event)) {\n if (\n event.oldState === State.UNDETERMINED &&\n event.state === State.BEGAN\n ) {\n runWorklet(CALLBACK_TYPE.BEGAN, gesture, event);\n } else if (\n (event.oldState === State.BEGAN ||\n event.oldState === State.UNDETERMINED) &&\n event.state === State.ACTIVE\n ) {\n runWorklet(CALLBACK_TYPE.START, gesture, event);\n lastUpdateEvent.value[gesture.handlerTag] = undefined;\n } else if (\n event.oldState !== event.state &&\n event.state === State.END\n ) {\n if (event.oldState === State.ACTIVE) {\n runWorklet(CALLBACK_TYPE.END, gesture, event, true);\n }\n runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, true);\n } else if (\n (event.state === State.FAILED || event.state === State.CANCELLED) &&\n event.state !== event.oldState\n ) {\n if (event.oldState === State.ACTIVE) {\n runWorklet(CALLBACK_TYPE.END, gesture, event, false);\n }\n runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false);\n }\n } else if (isTouchEvent(event)) {\n if (!stateControllers[i]) {\n stateControllers[i] = GestureStateManager.create(event.handlerTag);\n }\n\n if (event.eventType !== TouchEventType.UNDETERMINED) {\n runWorklet(\n touchEventTypeToCallbackType(event.eventType),\n gesture,\n event,\n stateControllers[i]\n );\n }\n } else {\n runWorklet(CALLBACK_TYPE.UPDATE, gesture, event);\n\n if (gesture.onChange && gesture.changeEventCalculator) {\n runWorklet(\n CALLBACK_TYPE.CHANGE,\n gesture,\n gesture.changeEventCalculator?.(\n event,\n lastUpdateEvent.value[gesture.handlerTag]\n )\n );\n\n lastUpdateEvent.value[gesture.handlerTag] = event;\n }\n }\n }\n }\n };\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const event = Reanimated.useEvent(\n callback,\n ['onGestureHandlerStateChange', 'onGestureHandlerEvent'],\n needsRebuild\n );\n\n preparedGesture.animatedEventHandler = event;\n preparedGesture.animatedHandlers = sharedHandlersCallbacks;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateDetectorChildren(ref: any) {\n // finds the first native view under the Wrap component and traverses the fiber tree upwards\n // to check whether there is more than one native view as a pseudo-direct child of GestureDetector\n // i.e. this is not ok:\n // Wrap\n // |\n // / \\\n // / \\\n // / \\\n // / \\\n // NativeView NativeView\n //\n // but this is fine:\n // Wrap\n // |\n // NativeView\n // |\n // / \\\n // / \\\n // / \\\n // / \\\n // NativeView NativeView\n if (__DEV__ && Platform.OS !== 'web') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const wrapType =\n REACT_NATIVE_VERSION.minor > 63 || REACT_NATIVE_VERSION.major > 0\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ref._reactInternals.elementType\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ref._reactInternalFiber.elementType;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let instance =\n RNRenderer.findHostInstance_DEPRECATED(\n ref\n )._internalFiberInstanceHandleDEV;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n while (instance && instance.elementType !== wrapType) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (instance.sibling) {\n throw new Error(\n 'GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a or .'\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n instance = instance.return;\n }\n }\n}\n\nconst applyUserSelectProp = (\n userSelect: UserSelect,\n gesture: ComposedGesture | GestureType\n): void => {\n for (const g of gesture.toGestureArray()) {\n g.config.userSelect = userSelect;\n }\n};\n\ninterface GestureDetectorProps {\n gesture: ComposedGesture | GestureType;\n userSelect?: UserSelect;\n children?: React.ReactNode;\n}\ninterface GestureDetectorState {\n firstRender: boolean;\n viewRef: React.Component | null;\n previousViewTag: number;\n forceReattach: boolean;\n}\nexport const GestureDetector = (props: GestureDetectorProps) => {\n const gestureConfig = props.gesture;\n\n if (props.userSelect) {\n applyUserSelectProp(props.userSelect, gestureConfig);\n }\n\n const gesture = gestureConfig.toGestureArray();\n const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);\n\n // store state in ref to prevent unnecessary renders\n const state = useRef({\n firstRender: true,\n viewRef: null,\n previousViewTag: -1,\n forceReattach: false,\n }).current;\n const mountedRef = useRef(false);\n const webEventHandlersRef = useRef({\n onGestureHandlerEvent: (e: HandlerStateChangeEvent) => {\n onGestureHandlerEvent(e.nativeEvent);\n },\n onGestureHandlerStateChange: isExperimentalWebImplementationEnabled()\n ? (e: HandlerStateChangeEvent) => {\n onGestureHandlerEvent(e.nativeEvent);\n }\n : undefined,\n });\n\n const [renderState, setRenderState] = useState(false);\n function forceRender() {\n setRenderState(!renderState);\n }\n\n const preparedGesture = React.useRef({\n config: gesture,\n animatedEventHandler: null,\n animatedHandlers: null,\n firstExecution: true,\n useReanimatedHook: useReanimatedHook,\n }).current;\n\n if (useReanimatedHook !== preparedGesture.useReanimatedHook) {\n throw new Error(\n tagMessage(\n 'You cannot change the thread the callbacks are ran on while the app is running'\n )\n );\n }\n\n function onHandlersUpdate(skipConfigUpdate?: boolean) {\n // if the underlying view has changed we need to reattach handlers to the new view\n const viewTag = findNodeHandle(state.viewRef) as number;\n const forceReattach = viewTag !== state.previousViewTag;\n\n if (forceReattach || needsToReattach(preparedGesture, gesture)) {\n validateDetectorChildren(state.viewRef);\n dropHandlers(preparedGesture);\n attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n webEventHandlersRef,\n viewTag,\n mountedRef,\n });\n\n state.previousViewTag = viewTag;\n state.forceReattach = forceReattach;\n if (forceReattach) {\n forceRender();\n }\n } else if (!skipConfigUpdate) {\n updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);\n }\n }\n\n // Reanimated event should be rebuilt only when gestures are reattached, otherwise\n // config update will be enough as all necessary items are stored in shared values anyway\n const needsToRebuildReanimatedEvent =\n preparedGesture.firstExecution ||\n needsToReattach(preparedGesture, gesture) ||\n state.forceReattach;\n\n state.forceReattach = false;\n\n if (preparedGesture.firstExecution) {\n gestureConfig.initialize();\n }\n\n if (useReanimatedHook) {\n // Whether animatedGesture or gesture is used shouldn't change while the app is running\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAnimatedGesture(preparedGesture, needsToRebuildReanimatedEvent);\n }\n\n useEffect(() => {\n const viewTag = findNodeHandle(state.viewRef) as number;\n state.firstRender = true;\n mountedRef.current = true;\n\n validateDetectorChildren(state.viewRef);\n\n attachHandlers({\n preparedGesture,\n gestureConfig,\n gesture,\n webEventHandlersRef,\n viewTag,\n mountedRef,\n });\n\n return () => {\n mountedRef.current = false;\n dropHandlers(preparedGesture);\n };\n }, []);\n\n useEffect(() => {\n if (!state.firstRender) {\n onHandlersUpdate();\n } else {\n state.firstRender = false;\n }\n }, [props]);\n\n const refFunction = (ref: unknown) => {\n if (ref !== null) {\n // @ts-ignore Just setting the view ref\n state.viewRef = ref;\n\n // if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed\n if (state.previousViewTag === -1) {\n state.previousViewTag = findNodeHandle(state.viewRef) as number;\n }\n\n // pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers\n // in case the view has changed, while config update would be handled be the `useEffect` above\n onHandlersUpdate(true);\n\n if (isFabric()) {\n const node = getShadowNodeFromRef(ref);\n if (global.isFormsStackingContext(node) === false) {\n console.error(\n tagMessage(\n 'GestureDetector has received a child that may get view-flattened. ' +\n '\\nTo prevent it from misbehaving you need to wrap the child with a ``.'\n )\n );\n }\n }\n }\n };\n\n if (useReanimatedHook) {\n return (\n \n {props.children}\n \n );\n } else {\n return {props.children};\n }\n};\n\nclass Wrap extends React.Component<{\n onGestureHandlerEvent?: unknown;\n // implicit `children` prop has been removed in @types/react^18.0.0\n children?: React.ReactNode;\n}> {\n render() {\n try {\n // I don't think that fighting with types over such a simple function is worth it\n // The only thing it does is add 'collapsable: false' to the child component\n // to make sure it is in the native view hierarchy so the detector can find\n // correct viewTag to attach to.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const child: any = React.Children.only(this.props.children);\n return React.cloneElement(\n child,\n { collapsable: false },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n child.props.children\n );\n } catch (e) {\n throw new Error(\n tagMessage(\n `GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`\n )\n );\n }\n }\n}\n\nconst AnimatedWrap = Reanimated?.default?.createAnimatedComponent(Wrap) ?? Wrap;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js new file mode 100644 index 00000000..103788eb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js @@ -0,0 +1,131 @@ +import { DeviceEventEmitter } from 'react-native'; +import { State } from '../../State'; +import { TouchEventType } from '../../TouchEventType'; +import { findHandler, findOldGestureHandler } from '../handlersRegistry'; +import { GestureStateManager } from './gestureStateManager'; +let gestureHandlerEventSubscription = null; +let gestureHandlerStateChangeEventSubscription = null; +const gestureStateManagers = new Map(); +const lastUpdateEvent = []; + +function isStateChangeEvent(event) { + // @ts-ignore oldState doesn't exist on GestureTouchEvent and that's the point + return event.oldState != null; +} + +function isTouchEvent(event) { + return event.eventType != null; +} + +export function onGestureHandlerEvent(event) { + var _handler$handlers7, _handler$handlers7$on, _handler$handlers8, _handler$handlers8$on, _handler$handlers9, _handler$handlers9$on, _handler$handlers10, _handler$handlers10$o; + + const handler = findHandler(event.handlerTag); + + if (handler) { + if (isStateChangeEvent(event)) { + if (event.oldState === State.UNDETERMINED && event.state === State.BEGAN) { + var _handler$handlers$onB, _handler$handlers; + + (_handler$handlers$onB = (_handler$handlers = handler.handlers).onBegin) === null || _handler$handlers$onB === void 0 ? void 0 : _handler$handlers$onB.call(_handler$handlers, event); + } else if ((event.oldState === State.BEGAN || event.oldState === State.UNDETERMINED) && event.state === State.ACTIVE) { + var _handler$handlers$onS, _handler$handlers2; + + (_handler$handlers$onS = (_handler$handlers2 = handler.handlers).onStart) === null || _handler$handlers$onS === void 0 ? void 0 : _handler$handlers$onS.call(_handler$handlers2, event); + lastUpdateEvent[handler.handlers.handlerTag] = event; + } else if (event.oldState !== event.state && event.state === State.END) { + var _handler$handlers$onF, _handler$handlers4; + + if (event.oldState === State.ACTIVE) { + var _handler$handlers$onE, _handler$handlers3; + + (_handler$handlers$onE = (_handler$handlers3 = handler.handlers).onEnd) === null || _handler$handlers$onE === void 0 ? void 0 : _handler$handlers$onE.call(_handler$handlers3, event, true); + } + + (_handler$handlers$onF = (_handler$handlers4 = handler.handlers).onFinalize) === null || _handler$handlers$onF === void 0 ? void 0 : _handler$handlers$onF.call(_handler$handlers4, event, true); + lastUpdateEvent[handler.handlers.handlerTag] = undefined; + } else if ((event.state === State.FAILED || event.state === State.CANCELLED) && event.oldState !== event.state) { + var _handler$handlers$onF2, _handler$handlers6; + + if (event.oldState === State.ACTIVE) { + var _handler$handlers$onE2, _handler$handlers5; + + (_handler$handlers$onE2 = (_handler$handlers5 = handler.handlers).onEnd) === null || _handler$handlers$onE2 === void 0 ? void 0 : _handler$handlers$onE2.call(_handler$handlers5, event, false); + } + + (_handler$handlers$onF2 = (_handler$handlers6 = handler.handlers).onFinalize) === null || _handler$handlers$onF2 === void 0 ? void 0 : _handler$handlers$onF2.call(_handler$handlers6, event, false); + gestureStateManagers.delete(event.handlerTag); + lastUpdateEvent[handler.handlers.handlerTag] = undefined; + } + } else if (isTouchEvent(event)) { + if (!gestureStateManagers.has(event.handlerTag)) { + gestureStateManagers.set(event.handlerTag, GestureStateManager.create(event.handlerTag)); + } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + + + const manager = gestureStateManagers.get(event.handlerTag); + + switch (event.eventType) { + case TouchEventType.TOUCHES_DOWN: + (_handler$handlers7 = handler.handlers) === null || _handler$handlers7 === void 0 ? void 0 : (_handler$handlers7$on = _handler$handlers7.onTouchesDown) === null || _handler$handlers7$on === void 0 ? void 0 : _handler$handlers7$on.call(_handler$handlers7, event, manager); + break; + + case TouchEventType.TOUCHES_MOVE: + (_handler$handlers8 = handler.handlers) === null || _handler$handlers8 === void 0 ? void 0 : (_handler$handlers8$on = _handler$handlers8.onTouchesMove) === null || _handler$handlers8$on === void 0 ? void 0 : _handler$handlers8$on.call(_handler$handlers8, event, manager); + break; + + case TouchEventType.TOUCHES_UP: + (_handler$handlers9 = handler.handlers) === null || _handler$handlers9 === void 0 ? void 0 : (_handler$handlers9$on = _handler$handlers9.onTouchesUp) === null || _handler$handlers9$on === void 0 ? void 0 : _handler$handlers9$on.call(_handler$handlers9, event, manager); + break; + + case TouchEventType.TOUCHES_CANCELLED: + (_handler$handlers10 = handler.handlers) === null || _handler$handlers10 === void 0 ? void 0 : (_handler$handlers10$o = _handler$handlers10.onTouchesCancelled) === null || _handler$handlers10$o === void 0 ? void 0 : _handler$handlers10$o.call(_handler$handlers10, event, manager); + break; + } + } else { + var _handler$handlers$onU, _handler$handlers11; + + (_handler$handlers$onU = (_handler$handlers11 = handler.handlers).onUpdate) === null || _handler$handlers$onU === void 0 ? void 0 : _handler$handlers$onU.call(_handler$handlers11, event); + + if (handler.handlers.onChange && handler.handlers.changeEventCalculator) { + var _handler$handlers$onC, _handler$handlers12, _handler$handlers$cha, _handler$handlers13; + + (_handler$handlers$onC = (_handler$handlers12 = handler.handlers).onChange) === null || _handler$handlers$onC === void 0 ? void 0 : _handler$handlers$onC.call(_handler$handlers12, (_handler$handlers$cha = (_handler$handlers13 = handler.handlers).changeEventCalculator) === null || _handler$handlers$cha === void 0 ? void 0 : _handler$handlers$cha.call(_handler$handlers13, event, lastUpdateEvent[handler.handlers.handlerTag])); + lastUpdateEvent[handler.handlers.handlerTag] = event; + } + } + } else { + const oldHandler = findOldGestureHandler(event.handlerTag); + + if (oldHandler) { + const nativeEvent = { + nativeEvent: event + }; + + if (isStateChangeEvent(event)) { + oldHandler.onGestureStateChange(nativeEvent); + } else { + oldHandler.onGestureEvent(nativeEvent); + } + + return; + } + } +} +export function startListening() { + stopListening(); + gestureHandlerEventSubscription = DeviceEventEmitter.addListener('onGestureHandlerEvent', onGestureHandlerEvent); + gestureHandlerStateChangeEventSubscription = DeviceEventEmitter.addListener('onGestureHandlerStateChange', onGestureHandlerEvent); +} +export function stopListening() { + if (gestureHandlerEventSubscription) { + gestureHandlerEventSubscription.remove(); + gestureHandlerEventSubscription = null; + } + + if (gestureHandlerStateChangeEventSubscription) { + gestureHandlerStateChangeEventSubscription.remove(); + gestureHandlerStateChangeEventSubscription = null; + } +} +//# sourceMappingURL=eventReceiver.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js.map new file mode 100644 index 00000000..91eeb561 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/eventReceiver.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["eventReceiver.ts"],"names":["DeviceEventEmitter","State","TouchEventType","findHandler","findOldGestureHandler","GestureStateManager","gestureHandlerEventSubscription","gestureHandlerStateChangeEventSubscription","gestureStateManagers","Map","lastUpdateEvent","isStateChangeEvent","event","oldState","isTouchEvent","eventType","onGestureHandlerEvent","handler","handlerTag","UNDETERMINED","state","BEGAN","handlers","onBegin","ACTIVE","onStart","END","onEnd","onFinalize","undefined","FAILED","CANCELLED","delete","has","set","create","manager","get","TOUCHES_DOWN","onTouchesDown","TOUCHES_MOVE","onTouchesMove","TOUCHES_UP","onTouchesUp","TOUCHES_CANCELLED","onTouchesCancelled","onUpdate","onChange","changeEventCalculator","oldHandler","nativeEvent","onGestureStateChange","onGestureEvent","startListening","stopListening","addListener","remove"],"mappings":"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","sourcesContent":["import { DeviceEventEmitter, EmitterSubscription } from 'react-native';\nimport { State } from '../../State';\nimport { TouchEventType } from '../../TouchEventType';\nimport {\n GestureTouchEvent,\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from '../gestureHandlerCommon';\nimport { findHandler, findOldGestureHandler } from '../handlersRegistry';\nimport { BaseGesture } from './gesture';\nimport {\n GestureStateManager,\n GestureStateManagerType,\n} from './gestureStateManager';\n\nlet gestureHandlerEventSubscription: EmitterSubscription | null = null;\nlet gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =\n null;\n\nconst gestureStateManagers: Map = new Map<\n number,\n GestureStateManagerType\n>();\n\nconst lastUpdateEvent: (GestureUpdateEvent | undefined)[] = [];\n\nfunction isStateChangeEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureStateChangeEvent {\n // @ts-ignore oldState doesn't exist on GestureTouchEvent and that's the point\n return event.oldState != null;\n}\n\nfunction isTouchEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n): event is GestureTouchEvent {\n return event.eventType != null;\n}\n\nexport function onGestureHandlerEvent(\n event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent\n) {\n const handler = findHandler(event.handlerTag) as BaseGesture<\n Record\n >;\n\n if (handler) {\n if (isStateChangeEvent(event)) {\n if (\n event.oldState === State.UNDETERMINED &&\n event.state === State.BEGAN\n ) {\n handler.handlers.onBegin?.(event);\n } else if (\n (event.oldState === State.BEGAN ||\n event.oldState === State.UNDETERMINED) &&\n event.state === State.ACTIVE\n ) {\n handler.handlers.onStart?.(event);\n lastUpdateEvent[handler.handlers.handlerTag] = event;\n } else if (event.oldState !== event.state && event.state === State.END) {\n if (event.oldState === State.ACTIVE) {\n handler.handlers.onEnd?.(event, true);\n }\n handler.handlers.onFinalize?.(event, true);\n lastUpdateEvent[handler.handlers.handlerTag] = undefined;\n } else if (\n (event.state === State.FAILED || event.state === State.CANCELLED) &&\n event.oldState !== event.state\n ) {\n if (event.oldState === State.ACTIVE) {\n handler.handlers.onEnd?.(event, false);\n }\n handler.handlers.onFinalize?.(event, false);\n gestureStateManagers.delete(event.handlerTag);\n lastUpdateEvent[handler.handlers.handlerTag] = undefined;\n }\n } else if (isTouchEvent(event)) {\n if (!gestureStateManagers.has(event.handlerTag)) {\n gestureStateManagers.set(\n event.handlerTag,\n GestureStateManager.create(event.handlerTag)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const manager = gestureStateManagers.get(event.handlerTag)!;\n\n switch (event.eventType) {\n case TouchEventType.TOUCHES_DOWN:\n handler.handlers?.onTouchesDown?.(event, manager);\n break;\n case TouchEventType.TOUCHES_MOVE:\n handler.handlers?.onTouchesMove?.(event, manager);\n break;\n case TouchEventType.TOUCHES_UP:\n handler.handlers?.onTouchesUp?.(event, manager);\n break;\n case TouchEventType.TOUCHES_CANCELLED:\n handler.handlers?.onTouchesCancelled?.(event, manager);\n break;\n }\n } else {\n handler.handlers.onUpdate?.(event);\n\n if (handler.handlers.onChange && handler.handlers.changeEventCalculator) {\n handler.handlers.onChange?.(\n handler.handlers.changeEventCalculator?.(\n event,\n lastUpdateEvent[handler.handlers.handlerTag]\n )\n );\n\n lastUpdateEvent[handler.handlers.handlerTag] = event;\n }\n }\n } else {\n const oldHandler = findOldGestureHandler(event.handlerTag);\n if (oldHandler) {\n const nativeEvent = { nativeEvent: event };\n if (isStateChangeEvent(event)) {\n oldHandler.onGestureStateChange(nativeEvent);\n } else {\n oldHandler.onGestureEvent(nativeEvent);\n }\n return;\n }\n }\n}\n\nexport function startListening() {\n stopListening();\n\n gestureHandlerEventSubscription = DeviceEventEmitter.addListener(\n 'onGestureHandlerEvent',\n onGestureHandlerEvent\n );\n\n gestureHandlerStateChangeEventSubscription = DeviceEventEmitter.addListener(\n 'onGestureHandlerStateChange',\n onGestureHandlerEvent\n );\n}\n\nexport function stopListening() {\n if (gestureHandlerEventSubscription) {\n gestureHandlerEventSubscription.remove();\n gestureHandlerEventSubscription = null;\n }\n\n if (gestureHandlerStateChangeEventSubscription) {\n gestureHandlerStateChangeEventSubscription.remove();\n gestureHandlerStateChangeEventSubscription = null;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js new file mode 100644 index 00000000..8cb35193 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js @@ -0,0 +1,24 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { BaseGesture } from './gesture'; +export class FlingGesture extends BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'FlingGestureHandler'; + } + + numberOfPointers(pointers) { + this.config.numberOfPointers = pointers; + return this; + } + + direction(direction) { + this.config.direction = direction; + return this; + } + +} +//# sourceMappingURL=flingGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js.map new file mode 100644 index 00000000..5158bdd1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/flingGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["flingGesture.ts"],"names":["BaseGesture","FlingGesture","constructor","handlerName","numberOfPointers","pointers","config","direction"],"mappings":";;AAAA,SAASA,WAAT,QAA+C,WAA/C;AAMA,OAAO,MAAMC,YAAN,SAA2BD,WAA3B,CAAwE;AAG7EE,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF0C,EAE1C;;AAGZ,SAAKC,WAAL,GAAmB,qBAAnB;AACD;;AAEDC,EAAAA,gBAAgB,CAACC,QAAD,EAAmB;AACjC,SAAKC,MAAL,CAAYF,gBAAZ,GAA+BC,QAA/B;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,SAAS,CAACA,SAAD,EAAoB;AAC3B,SAAKD,MAAL,CAAYC,SAAZ,GAAwBA,SAAxB;AACA,WAAO,IAAP;AACD;;AAjB4E","sourcesContent":["import { BaseGesture, BaseGestureConfig } from './gesture';\nimport {\n FlingGestureConfig,\n FlingGestureHandlerEventPayload,\n} from '../FlingGestureHandler';\n\nexport class FlingGesture extends BaseGesture {\n public config: BaseGestureConfig & FlingGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'FlingGestureHandler';\n }\n\n numberOfPointers(pointers: number) {\n this.config.numberOfPointers = pointers;\n return this;\n }\n\n direction(direction: number) {\n this.config.direction = direction;\n return this;\n }\n}\n\nexport type FlingGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js new file mode 100644 index 00000000..3db33fd3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js @@ -0,0 +1,56 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { ContinousBaseGesture } from './gesture'; + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + forceChange: current.force + }; + } else { + changePayload = { + forceChange: current.force - previous.force + }; + } + + return { ...current, + ...changePayload + }; +} + +export class ForceTouchGesture extends ContinousBaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'ForceTouchGestureHandler'; + } + + minForce(force) { + this.config.minForce = force; + return this; + } + + maxForce(force) { + this.config.maxForce = force; + return this; + } + + feedbackOnActivation(value) { + this.config.feedbackOnActivation = value; + return this; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} +//# sourceMappingURL=forceTouchGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js.map new file mode 100644 index 00000000..cd1ec823 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/forceTouchGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["forceTouchGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","previous","changePayload","undefined","forceChange","force","ForceTouchGesture","constructor","handlerName","minForce","config","maxForce","feedbackOnActivation","value","onChange","callback","handlers"],"mappings":";;AAAA,SAA4BA,oBAA5B,QAAwD,WAAxD;;AAWA,SAASC,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK;AADP,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK,KAAR,GAAgBJ,QAAQ,CAACI;AADxB,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAED,OAAO,MAAMI,iBAAN,SAAgCR,oBAAhC,CAGL;AAGAS,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF+C,EAE/C;;AAGZ,SAAKC,WAAL,GAAmB,0BAAnB;AACD;;AAEDC,EAAAA,QAAQ,CAACJ,KAAD,EAAgB;AACtB,SAAKK,MAAL,CAAYD,QAAZ,GAAuBJ,KAAvB;AACA,WAAO,IAAP;AACD;;AAEDM,EAAAA,QAAQ,CAACN,KAAD,EAAgB;AACtB,SAAKK,MAAL,CAAYC,QAAZ,GAAuBN,KAAvB;AACA,WAAO,IAAP;AACD;;AAEDO,EAAAA,oBAAoB,CAACC,KAAD,EAAiB;AACnC,SAAKH,MAAL,CAAYE,oBAAZ,GAAmCC,KAAnC;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EASN;AACA;AACA,SAAKC,QAAL,CAAcjB,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMe,QAAN,CAAeC,QAAf,CAAP;AACD;;AArCD","sourcesContent":["import { BaseGestureConfig, ContinousBaseGesture } from './gesture';\nimport {\n ForceTouchGestureConfig,\n ForceTouchGestureHandlerEventPayload,\n} from '../ForceTouchGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\nexport type ForceTouchGestureChangeEventPayload = {\n forceChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: ForceTouchGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n forceChange: current.force,\n };\n } else {\n changePayload = {\n forceChange: current.force - previous.force,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class ForceTouchGesture extends ContinousBaseGesture<\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureChangeEventPayload\n> {\n public config: BaseGestureConfig & ForceTouchGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'ForceTouchGestureHandler';\n }\n\n minForce(force: number) {\n this.config.minForce = force;\n return this;\n }\n\n maxForce(force: number) {\n this.config.maxForce = force;\n return this;\n }\n\n feedbackOnActivation(value: boolean) {\n this.config.feedbackOnActivation = value;\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n GestureUpdateEvent<\n ForceTouchGestureHandlerEventPayload &\n ForceTouchGestureChangeEventPayload\n >\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type ForceTouchGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js new file mode 100644 index 00000000..cf1c2179 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js @@ -0,0 +1,209 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { getNextHandlerTag } from '../handlersRegistry'; +import { isRemoteDebuggingEnabled } from '../../utils'; +export const CALLBACK_TYPE = { + UNDEFINED: 0, + BEGAN: 1, + START: 2, + UPDATE: 3, + CHANGE: 4, + END: 5, + FINALIZE: 6, + TOUCHES_DOWN: 7, + TOUCHES_MOVE: 8, + TOUCHES_UP: 9, + TOUCHES_CANCELLED: 10 +}; // Allow using CALLBACK_TYPE as object and type +// eslint-disable-next-line @typescript-eslint/no-redeclare + +export class Gesture {} +let nextGestureId = 0; +export class BaseGesture extends Gesture { + constructor() { + super(); // Used to check whether the gesture config has been updated when wrapping it + // with `useMemo`. Since every config will have a unique id, when the dependencies + // don't change, the config won't be recreated and the id will stay the same. + // If the id is different, it means that the config has changed and the gesture + // needs to be updated. + + _defineProperty(this, "gestureId", -1); + + _defineProperty(this, "handlerTag", -1); + + _defineProperty(this, "handlerName", ''); + + _defineProperty(this, "config", {}); + + _defineProperty(this, "handlers", { + gestureId: -1, + handlerTag: -1, + isWorklet: [] + }); + + this.gestureId = nextGestureId++; + this.handlers.gestureId = this.gestureId; + } + + addDependency(key, gesture) { + const value = this.config[key]; + this.config[key] = value ? Array().concat(value, gesture) : [gesture]; + } + + withRef(ref) { + this.config.ref = ref; + return this; + } // eslint-disable-next-line @typescript-eslint/ban-types + + + isWorklet(callback) { + //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + return callback.__workletHash !== undefined; + } + + onBegin(callback) { + this.handlers.onBegin = callback; + this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback); + return this; + } + + onStart(callback) { + this.handlers.onStart = callback; + this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback); + return this; + } + + onEnd(callback) { + this.handlers.onEnd = callback; //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + + this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback); + return this; + } + + onFinalize(callback) { + this.handlers.onFinalize = callback; //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + + this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback); + return this; + } + + onTouchesDown(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesDown = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] = this.isWorklet(callback); + return this; + } + + onTouchesMove(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesMove = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] = this.isWorklet(callback); + return this; + } + + onTouchesUp(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesUp = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] = this.isWorklet(callback); + return this; + } + + onTouchesCancelled(callback) { + this.config.needsPointerData = true; + this.handlers.onTouchesCancelled = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] = this.isWorklet(callback); + return this; + } + + enabled(enabled) { + this.config.enabled = enabled; + return this; + } + + shouldCancelWhenOutside(value) { + this.config.shouldCancelWhenOutside = value; + return this; + } + + hitSlop(hitSlop) { + this.config.hitSlop = hitSlop; + return this; + } + + runOnJS(runOnJS) { + this.config.runOnJS = runOnJS; + return this; + } + + simultaneousWithExternalGesture(...gestures) { + for (const gesture of gestures) { + this.addDependency('simultaneousWith', gesture); + } + + return this; + } + + requireExternalGestureToFail(...gestures) { + for (const gesture of gestures) { + this.addDependency('requireToFail', gesture); + } + + return this; + } + + withTestId(id) { + this.config.testId = id; + return this; + } + + cancelsTouchesInView(value) { + this.config.cancelsTouchesInView = value; + return this; + } + + initialize() { + this.handlerTag = getNextHandlerTag(); + this.handlers = { ...this.handlers, + handlerTag: this.handlerTag + }; + + if (this.config.ref) { + this.config.ref.current = this; + } + } + + toGestureArray() { + return [this]; + } // eslint-disable-next-line @typescript-eslint/no-empty-function + + + prepare() {} + + get shouldUseReanimated() { + // use Reanimated when runOnJS isn't set explicitly, + // and all defined callbacks are worklets, + // and remote debugging is disabled + return this.config.runOnJS !== true && !this.handlers.isWorklet.includes(false) && !isRemoteDebuggingEnabled(); + } + +} +export class ContinousBaseGesture extends BaseGesture { + onUpdate(callback) { + this.handlers.onUpdate = callback; + this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback); + return this; + } + + onChange(callback) { + this.handlers.onChange = callback; + this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback); + return this; + } + + manualActivation(manualActivation) { + this.config.manualActivation = manualActivation; + return this; + } + +} +//# sourceMappingURL=gesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js.map new file mode 100644 index 00000000..d5d10704 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gesture.ts"],"names":["getNextHandlerTag","isRemoteDebuggingEnabled","CALLBACK_TYPE","UNDEFINED","BEGAN","START","UPDATE","CHANGE","END","FINALIZE","TOUCHES_DOWN","TOUCHES_MOVE","TOUCHES_UP","TOUCHES_CANCELLED","Gesture","nextGestureId","BaseGesture","constructor","gestureId","handlerTag","isWorklet","handlers","addDependency","key","gesture","value","config","Array","concat","withRef","ref","callback","__workletHash","undefined","onBegin","onStart","onEnd","onFinalize","onTouchesDown","needsPointerData","onTouchesMove","onTouchesUp","onTouchesCancelled","enabled","shouldCancelWhenOutside","hitSlop","runOnJS","simultaneousWithExternalGesture","gestures","requireExternalGestureToFail","withTestId","id","testId","cancelsTouchesInView","initialize","current","toGestureArray","prepare","shouldUseReanimated","includes","ContinousBaseGesture","onUpdate","onChange","manualActivation"],"mappings":"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","sourcesContent":["import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler';\nimport { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';\nimport {\n HitSlop,\n CommonGestureConfig,\n GestureTouchEvent,\n GestureStateChangeEvent,\n GestureUpdateEvent,\n} from '../gestureHandlerCommon';\nimport { getNextHandlerTag } from '../handlersRegistry';\nimport { GestureStateManagerType } from './gestureStateManager';\nimport { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler';\nimport { PanGestureHandlerEventPayload } from '../PanGestureHandler';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { TapGestureHandlerEventPayload } from '../TapGestureHandler';\nimport { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler';\nimport { isRemoteDebuggingEnabled } from '../../utils';\n\nexport type GestureType =\n | BaseGesture>\n | BaseGesture>\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture\n | BaseGesture;\n\nexport type GestureRef =\n | number\n | GestureType\n | React.RefObject\n | React.RefObject; // allow adding a ref to a gesture handler\nexport interface BaseGestureConfig\n extends CommonGestureConfig,\n Record {\n ref?: React.MutableRefObject;\n requireToFail?: GestureRef[];\n simultaneousWith?: GestureRef[];\n needsPointerData?: boolean;\n manualActivation?: boolean;\n runOnJS?: boolean;\n testId?: string;\n cancelsTouchesInView?: boolean;\n}\n\ntype TouchEventHandlerType = (\n event: GestureTouchEvent,\n stateManager: GestureStateManagerType\n) => void;\n\nexport type HandlerCallbacks> = {\n gestureId: number;\n handlerTag: number;\n onBegin?: (event: GestureStateChangeEvent) => void;\n onStart?: (event: GestureStateChangeEvent) => void;\n onEnd?: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void;\n onFinalize?: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void;\n onUpdate?: (event: GestureUpdateEvent) => void;\n onChange?: (event: any) => void;\n onTouchesDown?: TouchEventHandlerType;\n onTouchesMove?: TouchEventHandlerType;\n onTouchesUp?: TouchEventHandlerType;\n onTouchesCancelled?: TouchEventHandlerType;\n changeEventCalculator?: (\n current: GestureUpdateEvent>,\n previous?: GestureUpdateEvent>\n ) => GestureUpdateEvent>;\n isWorklet: boolean[];\n};\n\nexport const CALLBACK_TYPE = {\n UNDEFINED: 0,\n BEGAN: 1,\n START: 2,\n UPDATE: 3,\n CHANGE: 4,\n END: 5,\n FINALIZE: 6,\n TOUCHES_DOWN: 7,\n TOUCHES_MOVE: 8,\n TOUCHES_UP: 9,\n TOUCHES_CANCELLED: 10,\n} as const;\n\n// Allow using CALLBACK_TYPE as object and type\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];\n\nexport abstract class Gesture {\n /**\n * Return array of gestures, providing the same interface for creating and updating\n * handlers, no matter which object was used to create gesture instance.\n */\n abstract toGestureArray(): GestureType[];\n\n /**\n * Assign handlerTag to the gesture instance and set ref.current (if a ref is set)\n */\n abstract initialize(): void;\n\n /**\n * Make sure that values of properties defining relations are arrays. Do any necessary\n * preprocessing required to configure relations between handlers. Called just before\n * updating the handler on the native side.\n */\n abstract prepare(): void;\n}\n\nlet nextGestureId = 0;\nexport abstract class BaseGesture<\n EventPayloadT extends Record\n> extends Gesture {\n private gestureId = -1;\n public handlerTag = -1;\n public handlerName = '';\n public config: BaseGestureConfig = {};\n public handlers: HandlerCallbacks = {\n gestureId: -1,\n handlerTag: -1,\n isWorklet: [],\n };\n\n constructor() {\n super();\n\n // Used to check whether the gesture config has been updated when wrapping it\n // with `useMemo`. Since every config will have a unique id, when the dependencies\n // don't change, the config won't be recreated and the id will stay the same.\n // If the id is different, it means that the config has changed and the gesture\n // needs to be updated.\n this.gestureId = nextGestureId++;\n this.handlers.gestureId = this.gestureId;\n }\n\n private addDependency(\n key: 'simultaneousWith' | 'requireToFail',\n gesture: Exclude\n ) {\n const value = this.config[key];\n this.config[key] = value\n ? Array().concat(value, gesture)\n : [gesture];\n }\n\n withRef(ref: React.MutableRefObject) {\n this.config.ref = ref;\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected isWorklet(callback: Function) {\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n return callback.__workletHash !== undefined;\n }\n\n onBegin(callback: (event: GestureStateChangeEvent) => void) {\n this.handlers.onBegin = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback);\n return this;\n }\n\n onStart(callback: (event: GestureStateChangeEvent) => void) {\n this.handlers.onStart = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback);\n return this;\n }\n\n onEnd(\n callback: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void\n ) {\n this.handlers.onEnd = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback);\n return this;\n }\n\n onFinalize(\n callback: (\n event: GestureStateChangeEvent,\n success: boolean\n ) => void\n ) {\n this.handlers.onFinalize = callback;\n //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false\n this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);\n return this;\n }\n\n onTouchesDown(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesDown = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesMove(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesMove = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesUp(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesUp = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =\n this.isWorklet(callback);\n\n return this;\n }\n\n onTouchesCancelled(callback: TouchEventHandlerType) {\n this.config.needsPointerData = true;\n this.handlers.onTouchesCancelled = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =\n this.isWorklet(callback);\n\n return this;\n }\n\n enabled(enabled: boolean) {\n this.config.enabled = enabled;\n return this;\n }\n\n shouldCancelWhenOutside(value: boolean) {\n this.config.shouldCancelWhenOutside = value;\n return this;\n }\n\n hitSlop(hitSlop: HitSlop) {\n this.config.hitSlop = hitSlop;\n return this;\n }\n\n runOnJS(runOnJS: boolean) {\n this.config.runOnJS = runOnJS;\n return this;\n }\n\n simultaneousWithExternalGesture(...gestures: Exclude[]) {\n for (const gesture of gestures) {\n this.addDependency('simultaneousWith', gesture);\n }\n return this;\n }\n\n requireExternalGestureToFail(...gestures: Exclude[]) {\n for (const gesture of gestures) {\n this.addDependency('requireToFail', gesture);\n }\n return this;\n }\n\n withTestId(id: string) {\n this.config.testId = id;\n return this;\n }\n\n cancelsTouchesInView(value: boolean) {\n this.config.cancelsTouchesInView = value;\n return this;\n }\n\n initialize() {\n this.handlerTag = getNextHandlerTag();\n\n this.handlers = { ...this.handlers, handlerTag: this.handlerTag };\n\n if (this.config.ref) {\n this.config.ref.current = this as GestureType;\n }\n }\n\n toGestureArray(): GestureType[] {\n return [this as GestureType];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n prepare() {}\n\n get shouldUseReanimated(): boolean {\n // use Reanimated when runOnJS isn't set explicitly,\n // and all defined callbacks are worklets,\n // and remote debugging is disabled\n return (\n this.config.runOnJS !== true &&\n !this.handlers.isWorklet.includes(false) &&\n !isRemoteDebuggingEnabled()\n );\n }\n}\n\nexport abstract class ContinousBaseGesture<\n EventPayloadT extends Record,\n EventChangePayloadT extends Record\n> extends BaseGesture {\n onUpdate(callback: (event: GestureUpdateEvent) => void) {\n this.handlers.onUpdate = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback);\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent\n ) => void\n ) {\n this.handlers.onChange = callback;\n this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback);\n return this;\n }\n\n manualActivation(manualActivation: boolean) {\n this.config.manualActivation = manualActivation;\n return this;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js new file mode 100644 index 00000000..2ea46eb5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js @@ -0,0 +1,90 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { BaseGesture, Gesture } from './gesture'; + +function extendRelation(currentRelation, extendWith) { + if (currentRelation === undefined) { + return [...extendWith]; + } else { + return [...currentRelation, ...extendWith]; + } +} + +export class ComposedGesture extends Gesture { + constructor(...gestures) { + super(); + + _defineProperty(this, "gestures", []); + + _defineProperty(this, "simultaneousGestures", []); + + _defineProperty(this, "requireGesturesToFail", []); + + this.gestures = gestures; + } + + prepareSingleGesture(gesture, simultaneousGestures, requireGesturesToFail) { + if (gesture instanceof BaseGesture) { + const newConfig = { ...gesture.config + }; + newConfig.simultaneousWith = extendRelation(newConfig.simultaneousWith, simultaneousGestures); + newConfig.requireToFail = extendRelation(newConfig.requireToFail, requireGesturesToFail); + gesture.config = newConfig; + } else if (gesture instanceof ComposedGesture) { + gesture.simultaneousGestures = simultaneousGestures; + gesture.requireGesturesToFail = requireGesturesToFail; + gesture.prepare(); + } + } + + prepare() { + for (const gesture of this.gestures) { + this.prepareSingleGesture(gesture, this.simultaneousGestures, this.requireGesturesToFail); + } + } + + initialize() { + for (const gesture of this.gestures) { + gesture.initialize(); + } + } + + toGestureArray() { + return this.gestures.flatMap(gesture => gesture.toGestureArray()); + } + +} +export class SimultaneousGesture extends ComposedGesture { + prepare() { + // this piece of magic works something like this: + // for every gesture in the array + const simultaneousArrays = this.gestures.map(gesture => // we take the array it's in + this.gestures // and make a copy without it + .filter(x => x !== gesture) // then we flatmap the result to get list of raw (not composed) gestures + // this way we don't make the gestures simultaneous with themselves, which is + // important when the gesture is `ExclusiveGesture` - we don't want to make + // exclusive gestures simultaneous + .flatMap(x => x.toGestureArray())); + + for (let i = 0; i < this.gestures.length; i++) { + this.prepareSingleGesture(this.gestures[i], simultaneousArrays[i], this.requireGesturesToFail); + } + } + +} +export class ExclusiveGesture extends ComposedGesture { + prepare() { + // transforms the array of gestures into array of grouped raw (not composed) gestures + // i.e. [gesture1, gesture2, ComposedGesture(gesture3, gesture4)] -> [[gesture1], [gesture2], [gesture3, gesture4]] + const gestureArrays = this.gestures.map(gesture => gesture.toGestureArray()); + let requireToFail = []; + + for (let i = 0; i < this.gestures.length; i++) { + this.prepareSingleGesture(this.gestures[i], this.simultaneousGestures, this.requireGesturesToFail.concat(requireToFail)); // every group gets to wait for all groups before it + + requireToFail = requireToFail.concat(gestureArrays[i]); + } + } + +} +//# sourceMappingURL=gestureComposition.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js.map new file mode 100644 index 00000000..5376546c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureComposition.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureComposition.ts"],"names":["BaseGesture","Gesture","extendRelation","currentRelation","extendWith","undefined","ComposedGesture","constructor","gestures","prepareSingleGesture","gesture","simultaneousGestures","requireGesturesToFail","newConfig","config","simultaneousWith","requireToFail","prepare","initialize","toGestureArray","flatMap","SimultaneousGesture","simultaneousArrays","map","filter","x","i","length","ExclusiveGesture","gestureArrays","concat"],"mappings":"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","sourcesContent":["import { BaseGesture, Gesture, GestureRef, GestureType } from './gesture';\n\nfunction extendRelation(\n currentRelation: GestureRef[] | undefined,\n extendWith: GestureType[]\n) {\n if (currentRelation === undefined) {\n return [...extendWith];\n } else {\n return [...currentRelation, ...extendWith];\n }\n}\n\nexport class ComposedGesture extends Gesture {\n protected gestures: Gesture[] = [];\n protected simultaneousGestures: GestureType[] = [];\n protected requireGesturesToFail: GestureType[] = [];\n\n constructor(...gestures: Gesture[]) {\n super();\n this.gestures = gestures;\n }\n\n protected prepareSingleGesture(\n gesture: Gesture,\n simultaneousGestures: GestureType[],\n requireGesturesToFail: GestureType[]\n ) {\n if (gesture instanceof BaseGesture) {\n const newConfig = { ...gesture.config };\n\n newConfig.simultaneousWith = extendRelation(\n newConfig.simultaneousWith,\n simultaneousGestures\n );\n newConfig.requireToFail = extendRelation(\n newConfig.requireToFail,\n requireGesturesToFail\n );\n\n gesture.config = newConfig;\n } else if (gesture instanceof ComposedGesture) {\n gesture.simultaneousGestures = simultaneousGestures;\n gesture.requireGesturesToFail = requireGesturesToFail;\n gesture.prepare();\n }\n }\n\n prepare() {\n for (const gesture of this.gestures) {\n this.prepareSingleGesture(\n gesture,\n this.simultaneousGestures,\n this.requireGesturesToFail\n );\n }\n }\n\n initialize() {\n for (const gesture of this.gestures) {\n gesture.initialize();\n }\n }\n\n toGestureArray(): GestureType[] {\n return this.gestures.flatMap((gesture) => gesture.toGestureArray());\n }\n}\n\nexport class SimultaneousGesture extends ComposedGesture {\n prepare() {\n // this piece of magic works something like this:\n // for every gesture in the array\n const simultaneousArrays = this.gestures.map((gesture) =>\n // we take the array it's in\n this.gestures\n // and make a copy without it\n .filter((x) => x !== gesture)\n // then we flatmap the result to get list of raw (not composed) gestures\n // this way we don't make the gestures simultaneous with themselves, which is\n // important when the gesture is `ExclusiveGesture` - we don't want to make\n // exclusive gestures simultaneous\n .flatMap((x) => x.toGestureArray())\n );\n\n for (let i = 0; i < this.gestures.length; i++) {\n this.prepareSingleGesture(\n this.gestures[i],\n simultaneousArrays[i],\n this.requireGesturesToFail\n );\n }\n }\n}\n\nexport class ExclusiveGesture extends ComposedGesture {\n prepare() {\n // transforms the array of gestures into array of grouped raw (not composed) gestures\n // i.e. [gesture1, gesture2, ComposedGesture(gesture3, gesture4)] -> [[gesture1], [gesture2], [gesture3, gesture4]]\n const gestureArrays = this.gestures.map((gesture) =>\n gesture.toGestureArray()\n );\n\n let requireToFail: GestureType[] = [];\n\n for (let i = 0; i < this.gestures.length; i++) {\n this.prepareSingleGesture(\n this.gestures[i],\n this.simultaneousGestures,\n this.requireGesturesToFail.concat(requireToFail)\n );\n\n // every group gets to wait for all groups before it\n requireToFail = requireToFail.concat(gestureArrays[i]);\n }\n }\n}\n\nexport type ComposedGestureType = InstanceType;\nexport type RaceGestureType = ComposedGestureType;\nexport type SimultaneousGestureType = InstanceType;\nexport type ExclusiveGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js new file mode 100644 index 00000000..299f4dc2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js @@ -0,0 +1,67 @@ +import { FlingGesture } from './flingGesture'; +import { ForceTouchGesture } from './forceTouchGesture'; +import { ComposedGesture, ExclusiveGesture, SimultaneousGesture } from './gestureComposition'; +import { LongPressGesture } from './longPressGesture'; +import { PanGesture } from './panGesture'; +import { PinchGesture } from './pinchGesture'; +import { RotationGesture } from './rotationGesture'; +import { TapGesture } from './tapGesture'; +import { NativeGesture } from './nativeGesture'; +import { ManualGesture } from './manualGesture'; +export const GestureObjects = { + Tap: () => { + return new TapGesture(); + }, + Pan: () => { + return new PanGesture(); + }, + Pinch: () => { + return new PinchGesture(); + }, + Rotation: () => { + return new RotationGesture(); + }, + Fling: () => { + return new FlingGesture(); + }, + LongPress: () => { + return new LongPressGesture(); + }, + ForceTouch: () => { + return new ForceTouchGesture(); + }, + Native: () => { + return new NativeGesture(); + }, + Manual: () => { + return new ManualGesture(); + }, + + /** + * Builds a composed gesture consisting of gestures provided as parameters. + * The first one that becomes active cancels the rest of gestures. + */ + Race: (...gestures) => { + return new ComposedGesture(...gestures); + }, + + /** + * Builds a composed gesture that allows all base gestures to run simultaneously. + */ + Simultaneous(...gestures) { + return new SimultaneousGesture(...gestures); + }, + + /** + * Builds a composed gesture where only one of the provided gestures can become active. + * Priority is decided through the order of gestures: the first one has higher priority + * than the second one, second one has higher priority than the third one, and so on. + * For example, to make a gesture that recognizes both single and double tap you need + * to call Exclusive(doubleTap, singleTap). + */ + Exclusive(...gestures) { + return new ExclusiveGesture(...gestures); + } + +}; +//# sourceMappingURL=gestureObjects.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js.map new file mode 100644 index 00000000..4706dbfb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureObjects.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureObjects.ts"],"names":["FlingGesture","ForceTouchGesture","ComposedGesture","ExclusiveGesture","SimultaneousGesture","LongPressGesture","PanGesture","PinchGesture","RotationGesture","TapGesture","NativeGesture","ManualGesture","GestureObjects","Tap","Pan","Pinch","Rotation","Fling","LongPress","ForceTouch","Native","Manual","Race","gestures","Simultaneous","Exclusive"],"mappings":"AAAA,SAASA,YAAT,QAA6B,gBAA7B;AACA,SAASC,iBAAT,QAAkC,qBAAlC;AAEA,SACEC,eADF,EAEEC,gBAFF,EAGEC,mBAHF,QAIO,sBAJP;AAKA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASC,aAAT,QAA8B,iBAA9B;AAEA,OAAO,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,GAAG,EAAE,MAAM;AACT,WAAO,IAAIJ,UAAJ,EAAP;AACD,GAH2B;AAK5BK,EAAAA,GAAG,EAAE,MAAM;AACT,WAAO,IAAIR,UAAJ,EAAP;AACD,GAP2B;AAS5BS,EAAAA,KAAK,EAAE,MAAM;AACX,WAAO,IAAIR,YAAJ,EAAP;AACD,GAX2B;AAa5BS,EAAAA,QAAQ,EAAE,MAAM;AACd,WAAO,IAAIR,eAAJ,EAAP;AACD,GAf2B;AAiB5BS,EAAAA,KAAK,EAAE,MAAM;AACX,WAAO,IAAIjB,YAAJ,EAAP;AACD,GAnB2B;AAqB5BkB,EAAAA,SAAS,EAAE,MAAM;AACf,WAAO,IAAIb,gBAAJ,EAAP;AACD,GAvB2B;AAyB5Bc,EAAAA,UAAU,EAAE,MAAM;AAChB,WAAO,IAAIlB,iBAAJ,EAAP;AACD,GA3B2B;AA6B5BmB,EAAAA,MAAM,EAAE,MAAM;AACZ,WAAO,IAAIV,aAAJ,EAAP;AACD,GA/B2B;AAiC5BW,EAAAA,MAAM,EAAE,MAAM;AACZ,WAAO,IAAIV,aAAJ,EAAP;AACD,GAnC2B;;AAqC5B;AACF;AACA;AACA;AACEW,EAAAA,IAAI,EAAE,CAAC,GAAGC,QAAJ,KAA4B;AAChC,WAAO,IAAIrB,eAAJ,CAAoB,GAAGqB,QAAvB,CAAP;AACD,GA3C2B;;AA6C5B;AACF;AACA;AACEC,EAAAA,YAAY,CAAC,GAAGD,QAAJ,EAAyB;AACnC,WAAO,IAAInB,mBAAJ,CAAwB,GAAGmB,QAA3B,CAAP;AACD,GAlD2B;;AAoD5B;AACF;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,SAAS,CAAC,GAAGF,QAAJ,EAAyB;AAChC,WAAO,IAAIpB,gBAAJ,CAAqB,GAAGoB,QAAxB,CAAP;AACD;;AA7D2B,CAAvB","sourcesContent":["import { FlingGesture } from './flingGesture';\nimport { ForceTouchGesture } from './forceTouchGesture';\nimport { Gesture } from './gesture';\nimport {\n ComposedGesture,\n ExclusiveGesture,\n SimultaneousGesture,\n} from './gestureComposition';\nimport { LongPressGesture } from './longPressGesture';\nimport { PanGesture } from './panGesture';\nimport { PinchGesture } from './pinchGesture';\nimport { RotationGesture } from './rotationGesture';\nimport { TapGesture } from './tapGesture';\nimport { NativeGesture } from './nativeGesture';\nimport { ManualGesture } from './manualGesture';\n\nexport const GestureObjects = {\n Tap: () => {\n return new TapGesture();\n },\n\n Pan: () => {\n return new PanGesture();\n },\n\n Pinch: () => {\n return new PinchGesture();\n },\n\n Rotation: () => {\n return new RotationGesture();\n },\n\n Fling: () => {\n return new FlingGesture();\n },\n\n LongPress: () => {\n return new LongPressGesture();\n },\n\n ForceTouch: () => {\n return new ForceTouchGesture();\n },\n\n Native: () => {\n return new NativeGesture();\n },\n\n Manual: () => {\n return new ManualGesture();\n },\n\n /**\n * Builds a composed gesture consisting of gestures provided as parameters.\n * The first one that becomes active cancels the rest of gestures.\n */\n Race: (...gestures: Gesture[]) => {\n return new ComposedGesture(...gestures);\n },\n\n /**\n * Builds a composed gesture that allows all base gestures to run simultaneously.\n */\n Simultaneous(...gestures: Gesture[]) {\n return new SimultaneousGesture(...gestures);\n },\n\n /**\n * Builds a composed gesture where only one of the provided gestures can become active.\n * Priority is decided through the order of gestures: the first one has higher priority\n * than the second one, second one has higher priority than the third one, and so on.\n * For example, to make a gesture that recognizes both single and double tap you need\n * to call Exclusive(doubleTap, singleTap).\n */\n Exclusive(...gestures: Gesture[]) {\n return new ExclusiveGesture(...gestures);\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js new file mode 100644 index 00000000..ffe75f4e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js @@ -0,0 +1,54 @@ +import { Reanimated } from './reanimatedWrapper'; +import { State } from '../../State'; +import { tagMessage } from '../../utils'; +const warningMessage = tagMessage('react-native-reanimated is required in order to use synchronous state management'); // check if reanimated module is available, but look for useSharedValue as conditional +// require of reanimated can sometimes return content of `utils.ts` file (?) + +const REANIMATED_AVAILABLE = (Reanimated === null || Reanimated === void 0 ? void 0 : Reanimated.useSharedValue) !== undefined; +const setGestureState = Reanimated === null || Reanimated === void 0 ? void 0 : Reanimated.setGestureState; +export const GestureStateManager = { + create(handlerTag) { + 'worklet'; + + return { + begin: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.BEGAN); + } else { + console.warn(warningMessage); + } + }, + activate: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.ACTIVE); + } else { + console.warn(warningMessage); + } + }, + fail: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.FAILED); + } else { + console.warn(warningMessage); + } + }, + end: () => { + 'worklet'; + + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.END); + } else { + console.warn(warningMessage); + } + } + }; + } + +}; +//# sourceMappingURL=gestureStateManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js.map new file mode 100644 index 00000000..1cbc5e17 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureStateManager.ts"],"names":["Reanimated","State","tagMessage","warningMessage","REANIMATED_AVAILABLE","useSharedValue","undefined","setGestureState","GestureStateManager","create","handlerTag","begin","BEGAN","console","warn","activate","ACTIVE","fail","FAILED","end","END"],"mappings":"AAAA,SAASA,UAAT,QAA2B,qBAA3B;AACA,SAASC,KAAT,QAAsB,aAAtB;AACA,SAASC,UAAT,QAA2B,aAA3B;AASA,MAAMC,cAAc,GAAGD,UAAU,CAC/B,kFAD+B,CAAjC,C,CAIA;AACA;;AACA,MAAME,oBAAoB,GAAG,CAAAJ,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEK,cAAZ,MAA+BC,SAA5D;AACA,MAAMC,eAAe,GAAGP,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEO,eAApC;AAEA,OAAO,MAAMC,mBAAmB,GAAG;AACjCC,EAAAA,MAAM,CAACC,UAAD,EAA8C;AAClD;;AACA,WAAO;AACLC,MAAAA,KAAK,EAAE,MAAM;AACX;;AACA,YAAIP,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACG,UAAD,EAAaT,KAAK,CAACW,KAAnB,CAAf;AACD,SAFD,MAEO;AACLC,UAAAA,OAAO,CAACC,IAAR,CAAaX,cAAb;AACD;AACF,OARI;AAULY,MAAAA,QAAQ,EAAE,MAAM;AACd;;AACA,YAAIX,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACG,UAAD,EAAaT,KAAK,CAACe,MAAnB,CAAf;AACD,SAFD,MAEO;AACLH,UAAAA,OAAO,CAACC,IAAR,CAAaX,cAAb;AACD;AACF,OAjBI;AAmBLc,MAAAA,IAAI,EAAE,MAAM;AACV;;AACA,YAAIb,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACG,UAAD,EAAaT,KAAK,CAACiB,MAAnB,CAAf;AACD,SAFD,MAEO;AACLL,UAAAA,OAAO,CAACC,IAAR,CAAaX,cAAb;AACD;AACF,OA1BI;AA4BLgB,MAAAA,GAAG,EAAE,MAAM;AACT;;AACA,YAAIf,oBAAJ,EAA0B;AACxBG,UAAAA,eAAe,CAACG,UAAD,EAAaT,KAAK,CAACmB,GAAnB,CAAf;AACD,SAFD,MAEO;AACLP,UAAAA,OAAO,CAACC,IAAR,CAAaX,cAAb;AACD;AACF;AAnCI,KAAP;AAqCD;;AAxCgC,CAA5B","sourcesContent":["import { Reanimated } from './reanimatedWrapper';\nimport { State } from '../../State';\nimport { tagMessage } from '../../utils';\n\nexport interface GestureStateManagerType {\n begin: () => void;\n activate: () => void;\n fail: () => void;\n end: () => void;\n}\n\nconst warningMessage = tagMessage(\n 'react-native-reanimated is required in order to use synchronous state management'\n);\n\n// check if reanimated module is available, but look for useSharedValue as conditional\n// require of reanimated can sometimes return content of `utils.ts` file (?)\nconst REANIMATED_AVAILABLE = Reanimated?.useSharedValue !== undefined;\nconst setGestureState = Reanimated?.setGestureState;\n\nexport const GestureStateManager = {\n create(handlerTag: number): GestureStateManagerType {\n 'worklet';\n return {\n begin: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.BEGAN);\n } else {\n console.warn(warningMessage);\n }\n },\n\n activate: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.ACTIVE);\n } else {\n console.warn(warningMessage);\n }\n },\n\n fail: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.FAILED);\n } else {\n console.warn(warningMessage);\n }\n },\n\n end: () => {\n 'worklet';\n if (REANIMATED_AVAILABLE) {\n setGestureState(handlerTag, State.END);\n } else {\n console.warn(warningMessage);\n }\n },\n };\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js new file mode 100644 index 00000000..9b9277dc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js @@ -0,0 +1,21 @@ +import NodeManager from '../../web/tools/NodeManager'; +export const GestureStateManager = { + create(handlerTag) { + return { + begin: () => { + NodeManager.getHandler(handlerTag).begin(); + }, + activate: () => { + NodeManager.getHandler(handlerTag).activate(); + }, + fail: () => { + NodeManager.getHandler(handlerTag).fail(); + }, + end: () => { + NodeManager.getHandler(handlerTag).end(); + } + }; + } + +}; +//# sourceMappingURL=gestureStateManager.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js.map new file mode 100644 index 00000000..eb59ad70 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/gestureStateManager.web.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["gestureStateManager.web.ts"],"names":["NodeManager","GestureStateManager","create","handlerTag","begin","getHandler","activate","fail","end"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,6BAAxB;AAGA,OAAO,MAAMC,mBAAmB,GAAG;AACjCC,EAAAA,MAAM,CAACC,UAAD,EAA8C;AAClD,WAAO;AACLC,MAAAA,KAAK,EAAE,MAAM;AACXJ,QAAAA,WAAW,CAACK,UAAZ,CAAuBF,UAAvB,EAAmCC,KAAnC;AACD,OAHI;AAKLE,MAAAA,QAAQ,EAAE,MAAM;AACdN,QAAAA,WAAW,CAACK,UAAZ,CAAuBF,UAAvB,EAAmCG,QAAnC;AACD,OAPI;AASLC,MAAAA,IAAI,EAAE,MAAM;AACVP,QAAAA,WAAW,CAACK,UAAZ,CAAuBF,UAAvB,EAAmCI,IAAnC;AACD,OAXI;AAaLC,MAAAA,GAAG,EAAE,MAAM;AACTR,QAAAA,WAAW,CAACK,UAAZ,CAAuBF,UAAvB,EAAmCK,GAAnC;AACD;AAfI,KAAP;AAiBD;;AAnBgC,CAA5B","sourcesContent":["import NodeManager from '../../web/tools/NodeManager';\nimport { GestureStateManagerType } from './gestureStateManager';\n\nexport const GestureStateManager = {\n create(handlerTag: number): GestureStateManagerType {\n return {\n begin: () => {\n NodeManager.getHandler(handlerTag).begin();\n },\n\n activate: () => {\n NodeManager.getHandler(handlerTag).activate();\n },\n\n fail: () => {\n NodeManager.getHandler(handlerTag).fail();\n },\n\n end: () => {\n NodeManager.getHandler(handlerTag).end();\n },\n };\n },\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js new file mode 100644 index 00000000..b7c0f1f0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js @@ -0,0 +1,25 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { BaseGesture } from './gesture'; +export class LongPressGesture extends BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'LongPressGestureHandler'; + this.shouldCancelWhenOutside(true); + } + + minDuration(duration) { + this.config.minDurationMs = duration; + return this; + } + + maxDistance(distance) { + this.config.maxDist = distance; + return this; + } + +} +//# sourceMappingURL=longPressGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js.map new file mode 100644 index 00000000..5f75fad5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/longPressGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["longPressGesture.ts"],"names":["BaseGesture","LongPressGesture","constructor","handlerName","shouldCancelWhenOutside","minDuration","duration","config","minDurationMs","maxDistance","distance","maxDist"],"mappings":";;AAAA,SAASA,WAAT,QAA+C,WAA/C;AAMA,OAAO,MAAMC,gBAAN,SAA+BD,WAA/B,CAAgF;AAGrFE,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF8C,EAE9C;;AAGZ,SAAKC,WAAL,GAAmB,yBAAnB;AACA,SAAKC,uBAAL,CAA6B,IAA7B;AACD;;AAEDC,EAAAA,WAAW,CAACC,QAAD,EAAmB;AAC5B,SAAKC,MAAL,CAAYC,aAAZ,GAA4BF,QAA5B;AACA,WAAO,IAAP;AACD;;AAEDG,EAAAA,WAAW,CAACC,QAAD,EAAmB;AAC5B,SAAKH,MAAL,CAAYI,OAAZ,GAAsBD,QAAtB;AACA,WAAO,IAAP;AACD;;AAlBoF","sourcesContent":["import { BaseGesture, BaseGestureConfig } from './gesture';\nimport {\n LongPressGestureConfig,\n LongPressGestureHandlerEventPayload,\n} from '../LongPressGestureHandler';\n\nexport class LongPressGesture extends BaseGesture {\n public config: BaseGestureConfig & LongPressGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'LongPressGestureHandler';\n this.shouldCancelWhenOutside(true);\n }\n\n minDuration(duration: number) {\n this.config.minDurationMs = duration;\n return this;\n }\n\n maxDistance(distance: number) {\n this.config.maxDist = distance;\n return this;\n }\n}\n\nexport type LongPressGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js new file mode 100644 index 00000000..bb0909e6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js @@ -0,0 +1,22 @@ +import { ContinousBaseGesture } from './gesture'; + +function changeEventCalculator(current, _previous) { + 'worklet'; + + return current; +} + +export class ManualGesture extends ContinousBaseGesture { + constructor() { + super(); + this.handlerName = 'ManualGestureHandler'; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, Record is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} +//# sourceMappingURL=manualGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js.map new file mode 100644 index 00000000..0a1c4d74 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/manualGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["manualGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","_previous","ManualGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":"AACA,SAASA,oBAAT,QAAqC,WAArC;;AAEA,SAASC,qBAAT,CACEC,OADF,EAEEC,SAFF,EAGE;AACA;;AACA,SAAOD,OAAP;AACD;;AAED,OAAO,MAAME,aAAN,SAA4BJ,oBAA5B,CAGL;AACAK,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,sBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAEN;AACA;AACA,SAAKC,QAAL,CAAcR,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMM,QAAN,CAAeC,QAAf,CAAP;AACD;;AAbD","sourcesContent":["import { GestureUpdateEvent } from '../gestureHandlerCommon';\nimport { ContinousBaseGesture } from './gesture';\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent>,\n _previous?: GestureUpdateEvent>\n) {\n 'worklet';\n return current;\n}\n\nexport class ManualGesture extends ContinousBaseGesture<\n Record,\n Record\n> {\n constructor() {\n super();\n\n this.handlerName = 'ManualGestureHandler';\n }\n\n onChange(\n callback: (event: GestureUpdateEvent>) => void\n ) {\n // @ts-ignore TS being overprotective, Record is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type ManualGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js new file mode 100644 index 00000000..a6ad75d2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js @@ -0,0 +1,24 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { BaseGesture } from './gesture'; +export class NativeGesture extends BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'NativeViewGestureHandler'; + } + + shouldActivateOnStart(value) { + this.config.shouldActivateOnStart = value; + return this; + } + + disallowInterruption(value) { + this.config.disallowInterruption = value; + return this; + } + +} +//# sourceMappingURL=nativeGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js.map new file mode 100644 index 00000000..d0343992 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/nativeGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["nativeGesture.ts"],"names":["BaseGesture","NativeGesture","constructor","handlerName","shouldActivateOnStart","value","config","disallowInterruption"],"mappings":";;AAAA,SAA4BA,WAA5B,QAA+C,WAA/C;AAMA,OAAO,MAAMC,aAAN,SAA4BD,WAA5B,CAAyE;AAG9EE,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAF+C,EAE/C;;AAGZ,SAAKC,WAAL,GAAmB,0BAAnB;AACD;;AAEDC,EAAAA,qBAAqB,CAACC,KAAD,EAAiB;AACpC,SAAKC,MAAL,CAAYF,qBAAZ,GAAoCC,KAApC;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,oBAAoB,CAACF,KAAD,EAAiB;AACnC,SAAKC,MAAL,CAAYC,oBAAZ,GAAmCF,KAAnC;AACA,WAAO,IAAP;AACD;;AAjB6E","sourcesContent":["import { BaseGestureConfig, BaseGesture } from './gesture';\nimport {\n NativeViewGestureConfig,\n NativeViewGestureHandlerPayload,\n} from '../NativeViewGestureHandler';\n\nexport class NativeGesture extends BaseGesture {\n public config: BaseGestureConfig & NativeViewGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'NativeViewGestureHandler';\n }\n\n shouldActivateOnStart(value: boolean) {\n this.config.shouldActivateOnStart = value;\n return this;\n }\n\n disallowInterruption(value: boolean) {\n this.config.disallowInterruption = value;\n return this;\n }\n}\n\nexport type NativeGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js new file mode 100644 index 00000000..afe2526a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js @@ -0,0 +1,140 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { ContinousBaseGesture } from './gesture'; + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + changeX: current.translationX, + changeY: current.translationY + }; + } else { + changePayload = { + changeX: current.translationX - previous.translationX, + changeY: current.translationY - previous.translationY + }; + } + + return { ...current, + ...changePayload + }; +} + +export class PanGesture extends ContinousBaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'PanGestureHandler'; + } + + activeOffsetY(offset) { + if (Array.isArray(offset)) { + this.config.activeOffsetYStart = offset[0]; + this.config.activeOffsetYEnd = offset[1]; + } else if (offset < 0) { + this.config.activeOffsetYStart = offset; + } else { + this.config.activeOffsetYEnd = offset; + } + + return this; + } + + activeOffsetX(offset) { + if (Array.isArray(offset)) { + this.config.activeOffsetXStart = offset[0]; + this.config.activeOffsetXEnd = offset[1]; + } else if (offset < 0) { + this.config.activeOffsetXStart = offset; + } else { + this.config.activeOffsetXEnd = offset; + } + + return this; + } + + failOffsetY(offset) { + if (Array.isArray(offset)) { + this.config.failOffsetYStart = offset[0]; + this.config.failOffsetYEnd = offset[1]; + } else if (offset < 0) { + this.config.failOffsetYStart = offset; + } else { + this.config.failOffsetYEnd = offset; + } + + return this; + } + + failOffsetX(offset) { + if (Array.isArray(offset)) { + this.config.failOffsetXStart = offset[0]; + this.config.failOffsetXEnd = offset[1]; + } else if (offset < 0) { + this.config.failOffsetXStart = offset; + } else { + this.config.failOffsetXEnd = offset; + } + + return this; + } + + minPointers(minPointers) { + this.config.minPointers = minPointers; + return this; + } + + maxPointers(maxPointers) { + this.config.maxPointers = maxPointers; + return this; + } + + minDistance(distance) { + this.config.minDist = distance; + return this; + } + + minVelocity(velocity) { + this.config.minVelocity = velocity; + return this; + } + + minVelocityX(velocity) { + this.config.minVelocityX = velocity; + return this; + } + + minVelocityY(velocity) { + this.config.minVelocityY = velocity; + return this; + } + + averageTouches(value) { + this.config.avgTouches = value; + return this; + } + + enableTrackpadTwoFingerGesture(value) { + this.config.enableTrackpadTwoFingerGesture = value; + return this; + } + + activateAfterLongPress(duration) { + this.config.activateAfterLongPress = duration; + return this; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, PanGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} +//# sourceMappingURL=panGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js.map new file mode 100644 index 00000000..8e08f992 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/panGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["panGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","previous","changePayload","undefined","changeX","translationX","changeY","translationY","PanGesture","constructor","handlerName","activeOffsetY","offset","Array","isArray","config","activeOffsetYStart","activeOffsetYEnd","activeOffsetX","activeOffsetXStart","activeOffsetXEnd","failOffsetY","failOffsetYStart","failOffsetYEnd","failOffsetX","failOffsetXStart","failOffsetXEnd","minPointers","maxPointers","minDistance","distance","minDist","minVelocity","velocity","minVelocityX","minVelocityY","averageTouches","value","avgTouches","enableTrackpadTwoFingerGesture","activateAfterLongPress","duration","onChange","callback","handlers"],"mappings":"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","sourcesContent":["import { BaseGestureConfig, ContinousBaseGesture } from './gesture';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\nimport {\n PanGestureConfig,\n PanGestureHandlerEventPayload,\n} from '../PanGestureHandler';\n\nexport type PanGestureChangeEventPayload = {\n changeX: number;\n changeY: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: PanGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n changeX: current.translationX,\n changeY: current.translationY,\n };\n } else {\n changePayload = {\n changeX: current.translationX - previous.translationX,\n changeY: current.translationY - previous.translationY,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class PanGesture extends ContinousBaseGesture<\n PanGestureHandlerEventPayload,\n PanGestureChangeEventPayload\n> {\n public config: BaseGestureConfig & PanGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'PanGestureHandler';\n }\n\n activeOffsetY(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.activeOffsetYStart = offset[0];\n this.config.activeOffsetYEnd = offset[1];\n } else if (offset < 0) {\n this.config.activeOffsetYStart = offset;\n } else {\n this.config.activeOffsetYEnd = offset;\n }\n return this;\n }\n\n activeOffsetX(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.activeOffsetXStart = offset[0];\n this.config.activeOffsetXEnd = offset[1];\n } else if (offset < 0) {\n this.config.activeOffsetXStart = offset;\n } else {\n this.config.activeOffsetXEnd = offset;\n }\n return this;\n }\n\n failOffsetY(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.failOffsetYStart = offset[0];\n this.config.failOffsetYEnd = offset[1];\n } else if (offset < 0) {\n this.config.failOffsetYStart = offset;\n } else {\n this.config.failOffsetYEnd = offset;\n }\n return this;\n }\n\n failOffsetX(offset: number | number[]) {\n if (Array.isArray(offset)) {\n this.config.failOffsetXStart = offset[0];\n this.config.failOffsetXEnd = offset[1];\n } else if (offset < 0) {\n this.config.failOffsetXStart = offset;\n } else {\n this.config.failOffsetXEnd = offset;\n }\n return this;\n }\n\n minPointers(minPointers: number) {\n this.config.minPointers = minPointers;\n return this;\n }\n\n maxPointers(maxPointers: number) {\n this.config.maxPointers = maxPointers;\n return this;\n }\n\n minDistance(distance: number) {\n this.config.minDist = distance;\n return this;\n }\n\n minVelocity(velocity: number) {\n this.config.minVelocity = velocity;\n return this;\n }\n\n minVelocityX(velocity: number) {\n this.config.minVelocityX = velocity;\n return this;\n }\n\n minVelocityY(velocity: number) {\n this.config.minVelocityY = velocity;\n return this;\n }\n\n averageTouches(value: boolean) {\n this.config.avgTouches = value;\n return this;\n }\n\n enableTrackpadTwoFingerGesture(value: boolean) {\n this.config.enableTrackpadTwoFingerGesture = value;\n return this;\n }\n\n activateAfterLongPress(duration: number) {\n this.config.activateAfterLongPress = duration;\n return this;\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n PanGestureHandlerEventPayload & PanGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, PanGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type PanGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js new file mode 100644 index 00000000..08c99152 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js @@ -0,0 +1,36 @@ +import { ContinousBaseGesture } from './gesture'; + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + scaleChange: current.scale + }; + } else { + changePayload = { + scaleChange: current.scale / previous.scale + }; + } + + return { ...current, + ...changePayload + }; +} + +export class PinchGesture extends ContinousBaseGesture { + constructor() { + super(); + this.handlerName = 'PinchGestureHandler'; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, PinchGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} +//# sourceMappingURL=pinchGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js.map new file mode 100644 index 00000000..bdaa66e8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/pinchGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["pinchGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","previous","changePayload","undefined","scaleChange","scale","PinchGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,WAArC;;AAQA,SAASC,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK;AADP,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK,KAAR,GAAgBJ,QAAQ,CAACI;AADxB,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAED,OAAO,MAAMI,YAAN,SAA2BR,oBAA3B,CAGL;AACAS,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,qBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAMN;AACA;AACA,SAAKC,QAAL,CAAcZ,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMU,QAAN,CAAeC,QAAf,CAAP;AACD;;AAjBD","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\nexport type PinchGestureChangeEventPayload = {\n scaleChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: PinchGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n scaleChange: current.scale,\n };\n } else {\n changePayload = {\n scaleChange: current.scale / previous.scale,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class PinchGesture extends ContinousBaseGesture<\n PinchGestureHandlerEventPayload,\n PinchGestureChangeEventPayload\n> {\n constructor() {\n super();\n\n this.handlerName = 'PinchGestureHandler';\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n PinchGestureHandlerEventPayload & PinchGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, PinchGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type PinchGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js new file mode 100644 index 00000000..d4455bea --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js @@ -0,0 +1,27 @@ +import { tagMessage } from '../../utils'; +let Reanimated; + +try { + Reanimated = require('react-native-reanimated'); + + if (!Reanimated.useSharedValue) { + // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not + // reset the module to undefined so we can fallback to the default implementation + Reanimated = undefined; + throw new Error('react-native-reanimated is not found'); + } + + if (!Reanimated.setGestureState) { + Reanimated.setGestureState = () => { + 'worklet'; + + console.warn(tagMessage('Please use newer version of react-native-reanimated in order to control state of the gestures.')); + }; + } // When 'react-native-reanimated' is not available we want to + // quietly continue + // eslint-disable-next-line no-empty + +} catch (e) {} + +export { Reanimated }; +//# sourceMappingURL=reanimatedWrapper.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js.map new file mode 100644 index 00000000..7db338cc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/reanimatedWrapper.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["reanimatedWrapper.ts"],"names":["tagMessage","Reanimated","require","useSharedValue","undefined","Error","setGestureState","console","warn","e"],"mappings":"AAKA,SAASA,UAAT,QAA2B,aAA3B;AAMA,IAAIC,UAAJ;;AAkBA,IAAI;AACFA,EAAAA,UAAU,GAAGC,OAAO,CAAC,yBAAD,CAApB;;AAEA,MAAI,CAACD,UAAU,CAACE,cAAhB,EAAgC;AAC9B;AACA;AACAF,IAAAA,UAAU,GAAGG,SAAb;AACA,UAAM,IAAIC,KAAJ,CAAU,sCAAV,CAAN;AACD;;AAED,MAAI,CAACJ,UAAU,CAACK,eAAhB,EAAiC;AAC/BL,IAAAA,UAAU,CAACK,eAAX,GAA6B,MAAM;AACjC;;AACAC,MAAAA,OAAO,CAACC,IAAR,CACER,UAAU,CACR,gGADQ,CADZ;AAKD,KAPD;AAQD,GAnBC,CAoBF;AACA;AACA;;AACD,CAvBD,CAuBE,OAAOS,CAAP,EAAU,CAAE;;AAEd,SAASR,UAAT","sourcesContent":["import { ComponentClass } from 'react';\nimport {\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from '../gestureHandlerCommon';\nimport { tagMessage } from '../../utils';\n\nexport interface SharedValue {\n value: T;\n}\n\nlet Reanimated: {\n default: {\n // Slightly modified definition copied from 'react-native-reanimated'\n // eslint-disable-next-line @typescript-eslint/ban-types\n createAnimatedComponent

(\n component: ComponentClass

,\n options?: unknown\n ): ComponentClass

;\n };\n useEvent: (\n callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void,\n events: string[],\n rebuild: boolean\n ) => unknown;\n useSharedValue: (value: T) => SharedValue;\n setGestureState: (handlerTag: number, newState: number) => void;\n};\n\ntry {\n Reanimated = require('react-native-reanimated');\n\n if (!Reanimated.useSharedValue) {\n // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not\n // reset the module to undefined so we can fallback to the default implementation\n Reanimated = undefined;\n throw new Error('react-native-reanimated is not found');\n }\n\n if (!Reanimated.setGestureState) {\n Reanimated.setGestureState = () => {\n 'worklet';\n console.warn(\n tagMessage(\n 'Please use newer version of react-native-reanimated in order to control state of the gestures.'\n )\n );\n };\n }\n // When 'react-native-reanimated' is not available we want to\n // quietly continue\n // eslint-disable-next-line no-empty\n} catch (e) {}\n\nexport { Reanimated };\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js new file mode 100644 index 00000000..3b642e89 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js @@ -0,0 +1,36 @@ +import { ContinousBaseGesture } from './gesture'; + +function changeEventCalculator(current, previous) { + 'worklet'; + + let changePayload; + + if (previous === undefined) { + changePayload = { + rotationChange: current.rotation + }; + } else { + changePayload = { + rotationChange: current.rotation - previous.rotation + }; + } + + return { ...current, + ...changePayload + }; +} + +export class RotationGesture extends ContinousBaseGesture { + constructor() { + super(); + this.handlerName = 'RotationGestureHandler'; + } + + onChange(callback) { + // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } + +} +//# sourceMappingURL=rotationGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js.map new file mode 100644 index 00000000..b09f1f30 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/rotationGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["rotationGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","previous","changePayload","undefined","rotationChange","rotation","RotationGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,WAArC;;AAQA,SAASC,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,cAAc,EAAEJ,OAAO,CAACK;AADV,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,cAAc,EAAEJ,OAAO,CAACK,QAAR,GAAmBJ,QAAQ,CAACI;AAD9B,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAED,OAAO,MAAMI,eAAN,SAA8BR,oBAA9B,CAGL;AACAS,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,wBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAMN;AACA;AACA,SAAKC,QAAL,CAAcZ,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMU,QAAN,CAAeC,QAAf,CAAP;AACD;;AAjBD","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\ntype RotationGestureChangeEventPayload = {\n rotationChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent,\n previous?: GestureUpdateEvent\n) {\n 'worklet';\n let changePayload: RotationGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n rotationChange: current.rotation,\n };\n } else {\n changePayload = {\n rotationChange: current.rotation - previous.rotation,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class RotationGesture extends ContinousBaseGesture<\n RotationGestureHandlerEventPayload,\n RotationGestureChangeEventPayload\n> {\n constructor() {\n super();\n\n this.handlerName = 'RotationGestureHandler';\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n RotationGestureHandlerEventPayload & RotationGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type RotationGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js new file mode 100644 index 00000000..591856a4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js @@ -0,0 +1,50 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { BaseGesture } from './gesture'; +export class TapGesture extends BaseGesture { + constructor() { + super(); + + _defineProperty(this, "config", {}); + + this.handlerName = 'TapGestureHandler'; + this.shouldCancelWhenOutside(true); + } + + minPointers(minPointers) { + this.config.minPointers = minPointers; + return this; + } + + numberOfTaps(count) { + this.config.numberOfTaps = count; + return this; + } + + maxDistance(maxDist) { + this.config.maxDist = maxDist; + return this; + } + + maxDuration(duration) { + this.config.maxDurationMs = duration; + return this; + } + + maxDelay(delay) { + this.config.maxDelayMs = delay; + return this; + } + + maxDeltaX(delta) { + this.config.maxDeltaX = delta; + return this; + } + + maxDeltaY(delta) { + this.config.maxDeltaY = delta; + return this; + } + +} +//# sourceMappingURL=tapGesture.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js.map new file mode 100644 index 00000000..1a354355 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/gestures/tapGesture.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["tapGesture.ts"],"names":["BaseGesture","TapGesture","constructor","handlerName","shouldCancelWhenOutside","minPointers","config","numberOfTaps","count","maxDistance","maxDist","maxDuration","duration","maxDurationMs","maxDelay","delay","maxDelayMs","maxDeltaX","delta","maxDeltaY"],"mappings":";;AAAA,SAA4BA,WAA5B,QAA+C,WAA/C;AAMA,OAAO,MAAMC,UAAN,SAAyBD,WAAzB,CAAoE;AAGzEE,EAAAA,WAAW,GAAG;AACZ;;AADY,oCAFwC,EAExC;;AAGZ,SAAKC,WAAL,GAAmB,mBAAnB;AACA,SAAKC,uBAAL,CAA6B,IAA7B;AACD;;AAEDC,EAAAA,WAAW,CAACA,WAAD,EAAsB;AAC/B,SAAKC,MAAL,CAAYD,WAAZ,GAA0BA,WAA1B;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,YAAY,CAACC,KAAD,EAAgB;AAC1B,SAAKF,MAAL,CAAYC,YAAZ,GAA2BC,KAA3B;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,WAAW,CAACC,OAAD,EAAkB;AAC3B,SAAKJ,MAAL,CAAYI,OAAZ,GAAsBA,OAAtB;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,WAAW,CAACC,QAAD,EAAmB;AAC5B,SAAKN,MAAL,CAAYO,aAAZ,GAA4BD,QAA5B;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,QAAQ,CAACC,KAAD,EAAgB;AACtB,SAAKT,MAAL,CAAYU,UAAZ,GAAyBD,KAAzB;AACA,WAAO,IAAP;AACD;;AAEDE,EAAAA,SAAS,CAACC,KAAD,EAAgB;AACvB,SAAKZ,MAAL,CAAYW,SAAZ,GAAwBC,KAAxB;AACA,WAAO,IAAP;AACD;;AAEDC,EAAAA,SAAS,CAACD,KAAD,EAAgB;AACvB,SAAKZ,MAAL,CAAYa,SAAZ,GAAwBD,KAAxB;AACA,WAAO,IAAP;AACD;;AA3CwE","sourcesContent":["import { BaseGestureConfig, BaseGesture } from './gesture';\nimport {\n TapGestureConfig,\n TapGestureHandlerEventPayload,\n} from '../TapGestureHandler';\n\nexport class TapGesture extends BaseGesture {\n public config: BaseGestureConfig & TapGestureConfig = {};\n\n constructor() {\n super();\n\n this.handlerName = 'TapGestureHandler';\n this.shouldCancelWhenOutside(true);\n }\n\n minPointers(minPointers: number) {\n this.config.minPointers = minPointers;\n return this;\n }\n\n numberOfTaps(count: number) {\n this.config.numberOfTaps = count;\n return this;\n }\n\n maxDistance(maxDist: number) {\n this.config.maxDist = maxDist;\n return this;\n }\n\n maxDuration(duration: number) {\n this.config.maxDurationMs = duration;\n return this;\n }\n\n maxDelay(delay: number) {\n this.config.maxDelayMs = delay;\n return this;\n }\n\n maxDeltaX(delta: number) {\n this.config.maxDeltaX = delta;\n return this;\n }\n\n maxDeltaY(delta: number) {\n this.config.maxDeltaY = delta;\n return this;\n }\n}\n\nexport type TapGestureType = InstanceType;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js new file mode 100644 index 00000000..214dc43d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js @@ -0,0 +1,44 @@ +import { isJestEnv } from '../utils'; +export const handlerIDToTag = {}; +const gestures = new Map(); +const oldHandlers = new Map(); +const testIDs = new Map(); +let handlerTag = 1; +export function getNextHandlerTag() { + return handlerTag++; +} +export function registerHandler(handlerTag, handler, testID) { + gestures.set(handlerTag, handler); + + if (isJestEnv() && testID) { + testIDs.set(testID, handlerTag); + } +} +export function registerOldGestureHandler(handlerTag, handler) { + oldHandlers.set(handlerTag, handler); +} +export function unregisterHandler(handlerTag, testID) { + gestures.delete(handlerTag); + + if (isJestEnv() && testID) { + testIDs.delete(testID); + } +} +export function findHandler(handlerTag) { + return gestures.get(handlerTag); +} +export function findOldGestureHandler(handlerTag) { + return oldHandlers.get(handlerTag); +} +export function findHandlerByTestID(testID) { + const handlerTag = testIDs.get(testID); + + if (handlerTag !== undefined) { + var _findHandler; + + return (_findHandler = findHandler(handlerTag)) !== null && _findHandler !== void 0 ? _findHandler : null; + } + + return null; +} +//# sourceMappingURL=handlersRegistry.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js.map new file mode 100644 index 00000000..398ebb41 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/handlers/handlersRegistry.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["handlersRegistry.ts"],"names":["isJestEnv","handlerIDToTag","gestures","Map","oldHandlers","testIDs","handlerTag","getNextHandlerTag","registerHandler","handler","testID","set","registerOldGestureHandler","unregisterHandler","delete","findHandler","get","findOldGestureHandler","findHandlerByTestID","undefined"],"mappings":"AAAA,SAASA,SAAT,QAA0B,UAA1B;AAIA,OAAO,MAAMC,cAAsC,GAAG,EAA/C;AACP,MAAMC,QAAQ,GAAG,IAAIC,GAAJ,EAAjB;AACA,MAAMC,WAAW,GAAG,IAAID,GAAJ,EAApB;AACA,MAAME,OAAO,GAAG,IAAIF,GAAJ,EAAhB;AAEA,IAAIG,UAAU,GAAG,CAAjB;AAEA,OAAO,SAASC,iBAAT,GAAqC;AAC1C,SAAOD,UAAU,EAAjB;AACD;AAED,OAAO,SAASE,eAAT,CACLF,UADK,EAELG,OAFK,EAGLC,MAHK,EAIL;AACAR,EAAAA,QAAQ,CAACS,GAAT,CAAaL,UAAb,EAAyBG,OAAzB;;AACA,MAAIT,SAAS,MAAMU,MAAnB,EAA2B;AACzBL,IAAAA,OAAO,CAACM,GAAR,CAAYD,MAAZ,EAAoBJ,UAApB;AACD;AACF;AAED,OAAO,SAASM,yBAAT,CACLN,UADK,EAELG,OAFK,EAGL;AACAL,EAAAA,WAAW,CAACO,GAAZ,CAAgBL,UAAhB,EAA4BG,OAA5B;AACD;AAED,OAAO,SAASI,iBAAT,CAA2BP,UAA3B,EAA+CI,MAA/C,EAAgE;AACrER,EAAAA,QAAQ,CAACY,MAAT,CAAgBR,UAAhB;;AACA,MAAIN,SAAS,MAAMU,MAAnB,EAA2B;AACzBL,IAAAA,OAAO,CAACS,MAAR,CAAeJ,MAAf;AACD;AACF;AAED,OAAO,SAASK,WAAT,CAAqBT,UAArB,EAAyC;AAC9C,SAAOJ,QAAQ,CAACc,GAAT,CAAaV,UAAb,CAAP;AACD;AAED,OAAO,SAASW,qBAAT,CAA+BX,UAA/B,EAAmD;AACxD,SAAOF,WAAW,CAACY,GAAZ,CAAgBV,UAAhB,CAAP;AACD;AAED,OAAO,SAASY,mBAAT,CAA6BR,MAA7B,EAA6C;AAClD,QAAMJ,UAAU,GAAGD,OAAO,CAACW,GAAR,CAAYN,MAAZ,CAAnB;;AACA,MAAIJ,UAAU,KAAKa,SAAnB,EAA8B;AAAA;;AAC5B,2BAAOJ,WAAW,CAACT,UAAD,CAAlB,uDAAkC,IAAlC;AACD;;AACD,SAAO,IAAP;AACD","sourcesContent":["import { isJestEnv } from '../utils';\nimport { GestureType } from './gestures/gesture';\nimport { GestureEvent, HandlerStateChangeEvent } from './gestureHandlerCommon';\n\nexport const handlerIDToTag: Record = {};\nconst gestures = new Map();\nconst oldHandlers = new Map();\nconst testIDs = new Map();\n\nlet handlerTag = 1;\n\nexport function getNextHandlerTag(): number {\n return handlerTag++;\n}\n\nexport function registerHandler(\n handlerTag: number,\n handler: GestureType,\n testID?: string\n) {\n gestures.set(handlerTag, handler);\n if (isJestEnv() && testID) {\n testIDs.set(testID, handlerTag);\n }\n}\n\nexport function registerOldGestureHandler(\n handlerTag: number,\n handler: GestureHandlerCallbacks\n) {\n oldHandlers.set(handlerTag, handler);\n}\n\nexport function unregisterHandler(handlerTag: number, testID?: string) {\n gestures.delete(handlerTag);\n if (isJestEnv() && testID) {\n testIDs.delete(testID);\n }\n}\n\nexport function findHandler(handlerTag: number) {\n return gestures.get(handlerTag);\n}\n\nexport function findOldGestureHandler(handlerTag: number) {\n return oldHandlers.get(handlerTag);\n}\n\nexport function findHandlerByTestID(testID: string) {\n const handlerTag = testIDs.get(testID);\n if (handlerTag !== undefined) {\n return findHandler(handlerTag) ?? null;\n }\n return null;\n}\n\nexport interface GestureHandlerCallbacks {\n onGestureEvent: (event: GestureEvent) => void;\n onGestureStateChange: (event: HandlerStateChangeEvent) => void;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js new file mode 100644 index 00000000..b8d675c9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js @@ -0,0 +1,24 @@ +import { initialize } from './init'; +export { Directions } from './Directions'; +export { State } from './State'; +export { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC'; +export { default as GestureHandlerRootView } from './GestureHandlerRootView'; +export { TapGestureHandler } from './handlers/TapGestureHandler'; +export { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler'; +export { LongPressGestureHandler } from './handlers/LongPressGestureHandler'; +export { PanGestureHandler } from './handlers/PanGestureHandler'; +export { PinchGestureHandler } from './handlers/PinchGestureHandler'; +export { RotationGestureHandler } from './handlers/RotationGestureHandler'; +export { FlingGestureHandler } from './handlers/FlingGestureHandler'; +export { default as createNativeWrapper } from './handlers/createNativeWrapper'; +export { GestureDetector } from './handlers/gestures/GestureDetector'; +export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects'; +export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler'; +export { RawButton, BaseButton, RectButton, BorderlessButton } from './components/GestureButtons'; +export { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback } from './components/touchables'; +export { ScrollView, Switch, TextInput, DrawerLayoutAndroid, FlatList, RefreshControl } from './components/GestureComponents'; +export { default as Swipeable } from './components/Swipeable'; +export { default as DrawerLayout } from './components/DrawerLayout'; +export { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation'; +initialize(); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js.map new file mode 100644 index 00000000..26832f5e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":["initialize","Directions","State","default","gestureHandlerRootHOC","GestureHandlerRootView","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","createNativeWrapper","GestureDetector","GestureObjects","Gesture","NativeViewGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","Switch","TextInput","DrawerLayoutAndroid","FlatList","RefreshControl","Swipeable","DrawerLayout","enableExperimentalWebImplementation"],"mappings":"AAAA,SAASA,UAAT,QAA2B,QAA3B;AAEA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,OAAO,IAAIC,qBAApB,QAAiD,yBAAjD;AACA,SAASD,OAAO,IAAIE,sBAApB,QAAkD,0BAAlD;AA+CA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,wBAAT,QAAyC,qCAAzC;AACA,SAASC,uBAAT,QAAwC,oCAAxC;AACA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAASC,sBAAT,QAAuC,mCAAvC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAAST,OAAO,IAAIU,mBAApB,QAA+C,gCAA/C;AAKA,SAASC,eAAT,QAAgC,qCAAhC;AACA,SAASC,cAAc,IAAIC,OAA3B,QAA0C,oCAA1C;AAiBA,SAASC,wBAAT,QAAyC,qCAAzC;AAOA,SACEC,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,gBAJF,QAKO,6BALP;AAMA,SACEC,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,yBALP;AAMA,SACEC,UADF,EAEEC,MAFF,EAGEC,SAHF,EAIEC,mBAJF,EAKEC,QALF,EAMEC,cANF,QAOO,gCAPP;AA+CA,SAAS5B,OAAO,IAAI6B,SAApB,QAAqC,wBAArC;AASA,SAAS7B,OAAO,IAAI8B,YAApB,QAAwC,2BAAxC;AAEA,SAASC,mCAAT,QAAoD,uCAApD;AAEAlC,UAAU","sourcesContent":["import { initialize } from './init';\n\nexport { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './GestureHandlerRootView';\nexport type {\n // event types\n GestureEvent,\n HandlerStateChangeEvent,\n // event payloads types\n GestureEventPayload,\n HandlerStateChangeEventPayload,\n // pointer events\n GestureTouchEvent,\n TouchData,\n // new api event types\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nexport type { GestureType } from './handlers/gestures/gesture';\nexport type {\n TapGestureHandlerEventPayload,\n TapGestureHandlerProps,\n} from './handlers/TapGestureHandler';\nexport type {\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureHandlerProps,\n} from './handlers/ForceTouchGestureHandler';\nexport type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture';\nexport type {\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from './handlers/LongPressGestureHandler';\nexport type {\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from './handlers/PanGestureHandler';\nexport type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture';\nexport type {\n PinchGestureHandlerEventPayload,\n PinchGestureHandlerProps,\n} from './handlers/PinchGestureHandler';\nexport type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture';\nexport type {\n RotationGestureHandlerEventPayload,\n RotationGestureHandlerProps,\n} from './handlers/RotationGestureHandler';\nexport type {\n FlingGestureHandlerEventPayload,\n FlingGestureHandlerProps,\n} from './handlers/FlingGestureHandler';\nexport { TapGestureHandler } from './handlers/TapGestureHandler';\nexport { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';\nexport { LongPressGestureHandler } from './handlers/LongPressGestureHandler';\nexport { PanGestureHandler } from './handlers/PanGestureHandler';\nexport { PinchGestureHandler } from './handlers/PinchGestureHandler';\nexport { RotationGestureHandler } from './handlers/RotationGestureHandler';\nexport { FlingGestureHandler } from './handlers/FlingGestureHandler';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { GestureDetector } from './handlers/gestures/GestureDetector';\nexport { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';\nexport type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';\nexport type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';\nexport type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';\nexport type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';\nexport type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';\nexport type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';\nexport type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nexport type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';\nexport type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';\nexport type {\n ComposedGestureType as ComposedGesture,\n RaceGestureType as RaceGesture,\n SimultaneousGestureType as SimultaneousGesture,\n ExclusiveGestureType as ExclusiveGesture,\n} from './handlers/gestures/gestureComposition';\nexport type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n RawButtonProps,\n BaseButtonProps,\n RectButtonProps,\n BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n} from './components/GestureButtons';\nexport {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n ScrollView,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n FlatList,\n RefreshControl,\n} from './components/GestureComponents';\nexport type {\n //events\n GestureHandlerGestureEvent,\n GestureHandlerStateChangeEvent,\n //event payloads\n GestureHandlerGestureEventNativeEvent,\n GestureHandlerStateChangeNativeEvent,\n NativeViewGestureHandlerGestureEvent,\n NativeViewGestureHandlerStateChangeEvent,\n TapGestureHandlerGestureEvent,\n TapGestureHandlerStateChangeEvent,\n ForceTouchGestureHandlerGestureEvent,\n ForceTouchGestureHandlerStateChangeEvent,\n LongPressGestureHandlerGestureEvent,\n LongPressGestureHandlerStateChangeEvent,\n PanGestureHandlerGestureEvent,\n PanGestureHandlerStateChangeEvent,\n PinchGestureHandlerGestureEvent,\n PinchGestureHandlerStateChangeEvent,\n RotationGestureHandlerGestureEvent,\n RotationGestureHandlerStateChangeEvent,\n FlingGestureHandlerGestureEvent,\n FlingGestureHandlerStateChangeEvent,\n // handlers props\n NativeViewGestureHandlerProperties,\n TapGestureHandlerProperties,\n LongPressGestureHandlerProperties,\n PanGestureHandlerProperties,\n PinchGestureHandlerProperties,\n RotationGestureHandlerProperties,\n FlingGestureHandlerProperties,\n ForceTouchGestureHandlerProperties,\n // buttons props\n RawButtonProperties,\n BaseButtonProperties,\n RectButtonProperties,\n BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n DrawerLayoutProps,\n DrawerPosition,\n DrawerState,\n DrawerType,\n DrawerLockMode,\n DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n\nexport { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation';\n\ninitialize();\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js new file mode 100644 index 00000000..874bb88b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js @@ -0,0 +1,16 @@ +import { startListening } from './handlers/gestures/eventReceiver'; +import RNGestureHandlerModule from './RNGestureHandlerModule'; +import { isFabric } from './utils'; +let fabricInitialized = false; +export function initialize() { + startListening(); +} // since isFabric() may give wrong results before the first render, we call this +// method during render of GestureHandlerRootView + +export function maybeInitializeFabric() { + if (isFabric() && !fabricInitialized) { + RNGestureHandlerModule.install(); + fabricInitialized = true; + } +} +//# sourceMappingURL=init.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js.map new file mode 100644 index 00000000..667b31d3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/init.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["init.ts"],"names":["startListening","RNGestureHandlerModule","isFabric","fabricInitialized","initialize","maybeInitializeFabric","install"],"mappings":"AAAA,SAASA,cAAT,QAA+B,mCAA/B;AACA,OAAOC,sBAAP,MAAmC,0BAAnC;AACA,SAASC,QAAT,QAAyB,SAAzB;AAEA,IAAIC,iBAAiB,GAAG,KAAxB;AAEA,OAAO,SAASC,UAAT,GAAsB;AAC3BJ,EAAAA,cAAc;AACf,C,CAED;AACA;;AACA,OAAO,SAASK,qBAAT,GAAiC;AACtC,MAAIH,QAAQ,MAAM,CAACC,iBAAnB,EAAsC;AACpCF,IAAAA,sBAAsB,CAACK,OAAvB;AACAH,IAAAA,iBAAiB,GAAG,IAApB;AACD;AACF","sourcesContent":["import { startListening } from './handlers/gestures/eventReceiver';\nimport RNGestureHandlerModule from './RNGestureHandlerModule';\nimport { isFabric } from './utils';\n\nlet fabricInitialized = false;\n\nexport function initialize() {\n startListening();\n}\n\n// since isFabric() may give wrong results before the first render, we call this\n// method during render of GestureHandlerRootView\nexport function maybeInitializeFabric() {\n if (isFabric() && !fabricInitialized) {\n RNGestureHandlerModule.install();\n fabricInitialized = true;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js new file mode 100644 index 00000000..63aad5eb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js @@ -0,0 +1,2 @@ +export { getByGestureTestId, fireGestureHandler } from './jestUtils'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js.map new file mode 100644 index 00000000..dfae3878 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":["getByGestureTestId","fireGestureHandler"],"mappings":"AAAA,SAASA,kBAAT,EAA6BC,kBAA7B,QAAuD,aAAvD","sourcesContent":["export { getByGestureTestId, fireGestureHandler } from './jestUtils';\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js new file mode 100644 index 00000000..5237da2c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js @@ -0,0 +1,350 @@ +import invariant from 'invariant'; +import { DeviceEventEmitter } from 'react-native'; +import { flingHandlerName } from '../handlers/FlingGestureHandler'; +import { forceTouchHandlerName } from '../handlers/ForceTouchGestureHandler'; +import { BaseGesture } from '../handlers/gestures/gesture'; +import { findHandlerByTestID } from '../handlers/handlersRegistry'; +import { longPressHandlerName } from '../handlers/LongPressGestureHandler'; +import { nativeViewHandlerName } from '../handlers/NativeViewGestureHandler'; +import { panHandlerName } from '../handlers/PanGestureHandler'; +import { pinchHandlerName } from '../handlers/PinchGestureHandler'; +import { rotationHandlerName } from '../handlers/RotationGestureHandler'; +import { tapHandlerName } from '../handlers/TapGestureHandler'; +import { State } from '../State'; +import { hasProperty, withPrevAndCurrent } from '../utils'; // load fireEvent conditionally, so RNGH may be used in setups without testing-library + +let fireEvent = (_element, _name, ..._data) => {// NOOP +}; + +try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + fireEvent = require('@testing-library/react-native').fireEvent; +} catch (_e) {// do nothing if not available +} + +const handlersDefaultEvents = { + [flingHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + numberOfPointers: 1 + }, + [forceTouchHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + force: 1, + numberOfPointers: 1 + }, + [longPressHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + duration: 100, + numberOfPointers: 1 + }, + [nativeViewHandlerName]: { + pointerInside: true, + numberOfPointers: 1 + }, + [panHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + translationX: 100, + translationY: 0, + velocityX: 3, + velocityY: 0, + numberOfPointers: 1 + }, + [pinchHandlerName]: { + focalX: 0, + focalY: 0, + scale: 2, + velocity: 1, + numberOfPointers: 2 + }, + [rotationHandlerName]: { + anchorX: 0, + anchorY: 0, + rotation: 3.14, + velocity: 2, + numberOfPointers: 2 + }, + [tapHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + numberOfPointers: 1 + } +}; + +function isGesture(componentOrGesture) { + return componentOrGesture instanceof BaseGesture; +} + +function wrapWithNativeEvent(event) { + return { + nativeEvent: event + }; +} + +function fillOldStateChanges(previousEvent, currentEvent) { + const isFirstEvent = previousEvent === null; + + if (isFirstEvent) { + return { + oldState: State.UNDETERMINED, + ...currentEvent + }; + } + + const isGestureStateEvent = previousEvent.state !== currentEvent.state; + + if (isGestureStateEvent) { + return { + oldState: previousEvent === null || previousEvent === void 0 ? void 0 : previousEvent.state, + ...currentEvent + }; + } else { + return currentEvent; + } +} + +function validateStateTransitions(previousEvent, currentEvent) { + function stringify(event) { + return JSON.stringify(event, null, 2); + } + + function errorMsgWithBothEvents(description) { + return `${description}, invalid event: ${stringify(currentEvent)}, previous event: ${stringify(previousEvent)}`; + } + + function errorMsgWithCurrentEvent(description) { + return `${description}, invalid event: ${stringify(currentEvent)}`; + } + + invariant(hasProperty(currentEvent, 'state'), errorMsgWithCurrentEvent('every event must have state')); + const isFirstEvent = previousEvent === null; + + if (isFirstEvent) { + invariant(currentEvent.state === State.BEGAN, errorMsgWithCurrentEvent('first event must have BEGAN state')); + } + + if (previousEvent !== null) { + if (previousEvent.state !== currentEvent.state) { + invariant(hasProperty(currentEvent, 'oldState'), errorMsgWithCurrentEvent('when state changes, oldState field should be present')); + invariant(currentEvent.oldState === previousEvent.state, errorMsgWithBothEvents("when state changes, oldState should be the same as previous event' state")); + } + } + + return currentEvent; +} + +function fillMissingDefaultsFor({ + handlerType, + handlerTag +}) { + return event => { + return { ...handlersDefaultEvents[handlerType], + ...event, + handlerTag + }; + }; +} + +function isDiscreteHandler(handlerType) { + return handlerType === 'TapGestureHandler' || handlerType === 'LongPressGestureHandler'; +} + +function fillMissingStatesTransitions(events, isDiscreteHandler) { + var _events2, _events$; + + const _events = [...events]; + const lastEvent = (_events2 = _events[_events.length - 1]) !== null && _events2 !== void 0 ? _events2 : null; + const firstEvent = (_events$ = _events[0]) !== null && _events$ !== void 0 ? _events$ : null; + const shouldDuplicateFirstEvent = !isDiscreteHandler && !hasState(State.BEGAN)(firstEvent); + + if (shouldDuplicateFirstEvent) { + const duplicated = { ...firstEvent, + state: State.BEGAN + }; // @ts-ignore badly typed, property may exist and we don't want to copy it + + delete duplicated.oldState; + + _events.unshift(duplicated); + } + + const shouldDuplicateLastEvent = !hasState(State.END)(lastEvent) || !hasState(State.FAILED)(lastEvent) || !hasState(State.CANCELLED)(lastEvent); + + if (shouldDuplicateLastEvent) { + const duplicated = { ...lastEvent, + state: State.END + }; // @ts-ignore badly typed, property may exist and we don't want to copy it + + delete duplicated.oldState; + + _events.push(duplicated); + } + + function isWithoutState(event) { + return event !== null && !hasProperty(event, 'state'); + } + + function hasState(state) { + return event => event !== null && event.state === state; + } + + function noEventsLeft(event) { + return event === null; + } + + function trueFn() { + return true; + } + + function fillEventsForCurrentState({ + shouldConsumeEvent = trueFn, + shouldTransitionToNextState = trueFn + }) { + function peekCurrentEvent() { + var _events$2; + + return (_events$2 = _events[0]) !== null && _events$2 !== void 0 ? _events$2 : null; + } + + function peekNextEvent() { + var _events$3; + + return (_events$3 = _events[1]) !== null && _events$3 !== void 0 ? _events$3 : null; + } + + function consumeCurrentEvent() { + _events.shift(); + } + + const currentEvent = peekCurrentEvent(); + const nextEvent = peekNextEvent(); + const currentRequiredState = REQUIRED_EVENTS[currentStateIdx]; + let eventData = {}; + const shouldUseEvent = shouldConsumeEvent(currentEvent); + + if (shouldUseEvent) { + eventData = currentEvent; + consumeCurrentEvent(); + } + + transformedEvents.push({ + state: currentRequiredState, + ...eventData + }); + + if (shouldTransitionToNextState(nextEvent)) { + currentStateIdx++; + } + } + + const REQUIRED_EVENTS = [State.BEGAN, State.ACTIVE, State.END]; + let currentStateIdx = 0; + const transformedEvents = []; + let hasAllStates; + let iterations = 0; + + do { + const nextRequiredState = REQUIRED_EVENTS[currentStateIdx]; + + if (nextRequiredState === State.BEGAN) { + fillEventsForCurrentState({ + shouldConsumeEvent: e => isWithoutState(e) || hasState(State.BEGAN)(e) + }); + } else if (nextRequiredState === State.ACTIVE) { + const shouldConsumeEvent = e => isWithoutState(e) || hasState(State.ACTIVE)(e); + + const shouldTransitionToNextState = nextEvent => noEventsLeft(nextEvent) || hasState(State.END)(nextEvent) || hasState(State.FAILED)(nextEvent) || hasState(State.CANCELLED)(nextEvent); + + fillEventsForCurrentState({ + shouldConsumeEvent, + shouldTransitionToNextState + }); + } else if (nextRequiredState === State.END) { + fillEventsForCurrentState({}); + } + + hasAllStates = currentStateIdx === REQUIRED_EVENTS.length; + invariant(iterations++ <= 500, 'exceeded max number of iterations, please report a bug in RNGH repository with your test case'); + } while (!hasAllStates); + + return transformedEvents; +} + +function getHandlerData(componentOrGesture) { + if (isGesture(componentOrGesture)) { + const gesture = componentOrGesture; + return { + emitEvent: (eventName, args) => { + DeviceEventEmitter.emit(eventName, args.nativeEvent); + }, + handlerType: gesture.handlerName, + handlerTag: gesture.handlerTag + }; + } + + const gestureHandlerComponent = componentOrGesture; + return { + emitEvent: (eventName, args) => { + fireEvent(gestureHandlerComponent, eventName, args); + }, + handlerType: gestureHandlerComponent.props.handlerType, + handlerTag: gestureHandlerComponent.props.handlerTag + }; +} + +export function fireGestureHandler(componentOrGesture, eventList = []) { + const { + emitEvent, + handlerType, + handlerTag + } = getHandlerData(componentOrGesture); + + let _ = fillMissingStatesTransitions(eventList, isDiscreteHandler(handlerType)); + + _ = _.map(fillMissingDefaultsFor({ + handlerTag, + handlerType + })); + _ = withPrevAndCurrent(_, fillOldStateChanges); + _ = withPrevAndCurrent(_, validateStateTransitions); // @ts-ignore TODO + + _ = _.map(wrapWithNativeEvent); + const events = _; + const firstEvent = events.shift(); + emitEvent('onGestureHandlerStateChange', firstEvent); + let lastSentEvent = firstEvent; + + for (const event of events) { + const hasChangedState = lastSentEvent.nativeEvent.state !== event.nativeEvent.state; + + if (hasChangedState) { + emitEvent('onGestureHandlerStateChange', event); + } else { + emitEvent('onGestureHandlerEvent', event); + } + + lastSentEvent = event; + } +} +export function getByGestureTestId(testID) { + const handler = findHandlerByTestID(testID); + + if (handler === null) { + throw new Error(`Handler with id: '${testID}' cannot be found`); + } + + return handler; +} +//# sourceMappingURL=jestUtils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js.map new file mode 100644 index 00000000..e2d6d632 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/jestUtils/jestUtils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["jestUtils.ts"],"names":["invariant","DeviceEventEmitter","flingHandlerName","forceTouchHandlerName","BaseGesture","findHandlerByTestID","longPressHandlerName","nativeViewHandlerName","panHandlerName","pinchHandlerName","rotationHandlerName","tapHandlerName","State","hasProperty","withPrevAndCurrent","fireEvent","_element","_name","_data","require","_e","handlersDefaultEvents","x","y","absoluteX","absoluteY","numberOfPointers","force","duration","pointerInside","translationX","translationY","velocityX","velocityY","focalX","focalY","scale","velocity","anchorX","anchorY","rotation","isGesture","componentOrGesture","wrapWithNativeEvent","event","nativeEvent","fillOldStateChanges","previousEvent","currentEvent","isFirstEvent","oldState","UNDETERMINED","isGestureStateEvent","state","validateStateTransitions","stringify","JSON","errorMsgWithBothEvents","description","errorMsgWithCurrentEvent","BEGAN","fillMissingDefaultsFor","handlerType","handlerTag","isDiscreteHandler","fillMissingStatesTransitions","events","_events","lastEvent","length","firstEvent","shouldDuplicateFirstEvent","hasState","duplicated","unshift","shouldDuplicateLastEvent","END","FAILED","CANCELLED","push","isWithoutState","noEventsLeft","trueFn","fillEventsForCurrentState","shouldConsumeEvent","shouldTransitionToNextState","peekCurrentEvent","peekNextEvent","consumeCurrentEvent","shift","nextEvent","currentRequiredState","REQUIRED_EVENTS","currentStateIdx","eventData","shouldUseEvent","transformedEvents","ACTIVE","hasAllStates","iterations","nextRequiredState","e","getHandlerData","gesture","emitEvent","eventName","args","emit","handlerName","gestureHandlerComponent","props","fireGestureHandler","eventList","_","map","lastSentEvent","hasChangedState","getByGestureTestId","testID","handler","Error"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport { DeviceEventEmitter } from 'react-native';\nimport { ReactTestInstance } from 'react-test-renderer';\nimport {\n FlingGestureHandler,\n FlingGestureHandlerEventPayload,\n flingHandlerName,\n} from '../handlers/FlingGestureHandler';\nimport {\n ForceTouchGestureHandler,\n ForceTouchGestureHandlerEventPayload,\n forceTouchHandlerName,\n} from '../handlers/ForceTouchGestureHandler';\nimport {\n BaseGestureHandlerProps,\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { FlingGesture } from '../handlers/gestures/flingGesture';\nimport { ForceTouchGesture } from '../handlers/gestures/forceTouchGesture';\nimport { BaseGesture, GestureType } from '../handlers/gestures/gesture';\nimport { LongPressGesture } from '../handlers/gestures/longPressGesture';\nimport { NativeGesture } from '../handlers/gestures/nativeGesture';\nimport { PanGesture } from '../handlers/gestures/panGesture';\nimport { PinchGesture } from '../handlers/gestures/pinchGesture';\nimport { RotationGesture } from '../handlers/gestures/rotationGesture';\nimport { TapGesture } from '../handlers/gestures/tapGesture';\nimport { findHandlerByTestID } from '../handlers/handlersRegistry';\nimport {\n LongPressGestureHandler,\n LongPressGestureHandlerEventPayload,\n longPressHandlerName,\n} from '../handlers/LongPressGestureHandler';\nimport {\n NativeViewGestureHandler,\n NativeViewGestureHandlerPayload,\n nativeViewHandlerName,\n} from '../handlers/NativeViewGestureHandler';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n panHandlerName,\n} from '../handlers/PanGestureHandler';\nimport {\n PinchGestureHandler,\n PinchGestureHandlerEventPayload,\n pinchHandlerName,\n} from '../handlers/PinchGestureHandler';\nimport {\n RotationGestureHandler,\n RotationGestureHandlerEventPayload,\n rotationHandlerName,\n} from '../handlers/RotationGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n tapHandlerName,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\nimport { hasProperty, withPrevAndCurrent } from '../utils';\n\n// load fireEvent conditionally, so RNGH may be used in setups without testing-library\nlet fireEvent = (\n _element: ReactTestInstance,\n _name: string,\n ..._data: any[]\n) => {\n // NOOP\n};\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n fireEvent = require('@testing-library/react-native').fireEvent;\n} catch (_e) {\n // do nothing if not available\n}\n\ntype GestureHandlerTestEvent<\n TEventPayload extends Record = Record\n> = (\n | GestureEvent\n | HandlerStateChangeEvent\n)['nativeEvent'];\n\ntype HandlerNames = keyof DefaultEventsMapping;\n\ntype WithNumberOfPointers = {\n [P in keyof T]: T[P] & { numberOfPointers: number };\n};\ntype DefaultEventsMapping = WithNumberOfPointers<{\n [flingHandlerName]: FlingGestureHandlerEventPayload;\n [forceTouchHandlerName]: ForceTouchGestureHandlerEventPayload;\n [longPressHandlerName]: LongPressGestureHandlerEventPayload;\n [nativeViewHandlerName]: NativeViewGestureHandlerPayload;\n [panHandlerName]: PanGestureHandlerEventPayload;\n [pinchHandlerName]: PinchGestureHandlerEventPayload;\n [rotationHandlerName]: RotationGestureHandlerEventPayload;\n [tapHandlerName]: TapGestureHandlerEventPayload;\n}>;\n\nconst handlersDefaultEvents: DefaultEventsMapping = {\n [flingHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n numberOfPointers: 1,\n },\n [forceTouchHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n force: 1,\n numberOfPointers: 1,\n },\n [longPressHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n duration: 100,\n numberOfPointers: 1,\n },\n [nativeViewHandlerName]: {\n pointerInside: true,\n numberOfPointers: 1,\n },\n [panHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n translationX: 100,\n translationY: 0,\n velocityX: 3,\n velocityY: 0,\n numberOfPointers: 1,\n },\n [pinchHandlerName]: {\n focalX: 0,\n focalY: 0,\n scale: 2,\n velocity: 1,\n numberOfPointers: 2,\n },\n [rotationHandlerName]: {\n anchorX: 0,\n anchorY: 0,\n rotation: 3.14,\n velocity: 2,\n numberOfPointers: 2,\n },\n [tapHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n numberOfPointers: 1,\n },\n};\n\nfunction isGesture(\n componentOrGesture: ReactTestInstance | GestureType\n): componentOrGesture is GestureType {\n return componentOrGesture instanceof BaseGesture;\n}\n\ninterface WrappedGestureHandlerTestEvent {\n nativeEvent: GestureHandlerTestEvent;\n}\nfunction wrapWithNativeEvent(\n event: GestureHandlerTestEvent\n): WrappedGestureHandlerTestEvent {\n return { nativeEvent: event };\n}\n\nfunction fillOldStateChanges(\n previousEvent: GestureHandlerTestEvent | null,\n currentEvent: Omit\n): GestureHandlerTestEvent {\n const isFirstEvent = previousEvent === null;\n if (isFirstEvent) {\n return {\n oldState: State.UNDETERMINED,\n ...currentEvent,\n } as GestureHandlerTestEvent;\n }\n\n const isGestureStateEvent = previousEvent.state !== currentEvent.state;\n if (isGestureStateEvent) {\n return {\n oldState: previousEvent?.state,\n ...currentEvent,\n } as GestureHandlerTestEvent;\n } else {\n return currentEvent as GestureHandlerTestEvent;\n }\n}\n\ntype EventWithStates = Partial<\n Pick\n>;\nfunction validateStateTransitions(\n previousEvent: EventWithStates | null,\n currentEvent: EventWithStates\n) {\n function stringify(event: Record | null) {\n return JSON.stringify(event, null, 2);\n }\n function errorMsgWithBothEvents(description: string) {\n return `${description}, invalid event: ${stringify(\n currentEvent\n )}, previous event: ${stringify(previousEvent)}`;\n }\n\n function errorMsgWithCurrentEvent(description: string) {\n return `${description}, invalid event: ${stringify(currentEvent)}`;\n }\n\n invariant(\n hasProperty(currentEvent, 'state'),\n errorMsgWithCurrentEvent('every event must have state')\n );\n\n const isFirstEvent = previousEvent === null;\n if (isFirstEvent) {\n invariant(\n currentEvent.state === State.BEGAN,\n errorMsgWithCurrentEvent('first event must have BEGAN state')\n );\n }\n\n if (previousEvent !== null) {\n if (previousEvent.state !== currentEvent.state) {\n invariant(\n hasProperty(currentEvent, 'oldState'),\n errorMsgWithCurrentEvent(\n 'when state changes, oldState field should be present'\n )\n );\n invariant(\n currentEvent.oldState === previousEvent.state,\n errorMsgWithBothEvents(\n \"when state changes, oldState should be the same as previous event' state\"\n )\n );\n }\n }\n\n return currentEvent;\n}\n\ntype EventWithoutStates = Omit;\ninterface HandlerInfo {\n handlerType: HandlerNames;\n handlerTag: number;\n}\nfunction fillMissingDefaultsFor({\n handlerType,\n handlerTag,\n}: HandlerInfo): (\n event: Partial\n) => EventWithoutStates {\n return (event) => {\n return {\n ...handlersDefaultEvents[handlerType],\n ...event,\n handlerTag,\n };\n };\n}\n\nfunction isDiscreteHandler(handlerType: HandlerNames) {\n return (\n handlerType === 'TapGestureHandler' ||\n handlerType === 'LongPressGestureHandler'\n );\n}\n\nfunction fillMissingStatesTransitions(\n events: EventWithoutStates[],\n isDiscreteHandler: boolean\n): EventWithoutStates[] {\n type Event = EventWithoutStates | null;\n const _events = [...events];\n const lastEvent = _events[_events.length - 1] ?? null;\n const firstEvent = _events[0] ?? null;\n\n const shouldDuplicateFirstEvent =\n !isDiscreteHandler && !hasState(State.BEGAN)(firstEvent);\n if (shouldDuplicateFirstEvent) {\n const duplicated = { ...firstEvent, state: State.BEGAN };\n // @ts-ignore badly typed, property may exist and we don't want to copy it\n delete duplicated.oldState;\n _events.unshift(duplicated);\n }\n\n const shouldDuplicateLastEvent =\n !hasState(State.END)(lastEvent) ||\n !hasState(State.FAILED)(lastEvent) ||\n !hasState(State.CANCELLED)(lastEvent);\n\n if (shouldDuplicateLastEvent) {\n const duplicated = { ...lastEvent, state: State.END };\n // @ts-ignore badly typed, property may exist and we don't want to copy it\n delete duplicated.oldState;\n _events.push(duplicated);\n }\n\n function isWithoutState(event: Event) {\n return event !== null && !hasProperty(event, 'state');\n }\n function hasState(state: State) {\n return (event: Event) => event !== null && event.state === state;\n }\n function noEventsLeft(event: Event) {\n return event === null;\n }\n\n function trueFn() {\n return true;\n }\n interface Args {\n shouldConsumeEvent?: (event: Event) => boolean;\n shouldTransitionToNextState?: (nextEvent: Event) => boolean;\n }\n function fillEventsForCurrentState({\n shouldConsumeEvent = trueFn,\n shouldTransitionToNextState = trueFn,\n }: Args) {\n function peekCurrentEvent(): Event {\n return _events[0] ?? null;\n }\n function peekNextEvent(): Event {\n return _events[1] ?? null;\n }\n function consumeCurrentEvent() {\n _events.shift();\n }\n const currentEvent = peekCurrentEvent();\n const nextEvent = peekNextEvent();\n const currentRequiredState = REQUIRED_EVENTS[currentStateIdx];\n\n let eventData = {};\n const shouldUseEvent = shouldConsumeEvent(currentEvent);\n if (shouldUseEvent) {\n eventData = currentEvent!;\n consumeCurrentEvent();\n }\n transformedEvents.push({ state: currentRequiredState, ...eventData });\n if (shouldTransitionToNextState(nextEvent)) {\n currentStateIdx++;\n }\n }\n\n const REQUIRED_EVENTS = [State.BEGAN, State.ACTIVE, State.END];\n\n let currentStateIdx = 0;\n const transformedEvents: EventWithoutStates[] = [];\n let hasAllStates;\n let iterations = 0;\n do {\n const nextRequiredState = REQUIRED_EVENTS[currentStateIdx];\n if (nextRequiredState === State.BEGAN) {\n fillEventsForCurrentState({\n shouldConsumeEvent: (e: Event) =>\n isWithoutState(e) || hasState(State.BEGAN)(e),\n });\n } else if (nextRequiredState === State.ACTIVE) {\n const shouldConsumeEvent = (e: Event) =>\n isWithoutState(e) || hasState(State.ACTIVE)(e);\n const shouldTransitionToNextState = (nextEvent: Event) =>\n noEventsLeft(nextEvent) ||\n hasState(State.END)(nextEvent) ||\n hasState(State.FAILED)(nextEvent) ||\n hasState(State.CANCELLED)(nextEvent);\n\n fillEventsForCurrentState({\n shouldConsumeEvent,\n shouldTransitionToNextState,\n });\n } else if (nextRequiredState === State.END) {\n fillEventsForCurrentState({});\n }\n hasAllStates = currentStateIdx === REQUIRED_EVENTS.length;\n\n invariant(\n iterations++ <= 500,\n 'exceeded max number of iterations, please report a bug in RNGH repository with your test case'\n );\n } while (!hasAllStates);\n\n return transformedEvents;\n}\n\ntype EventEmitter = (\n eventName: string,\n args: { nativeEvent: GestureHandlerTestEvent }\n) => void;\ninterface HandlerData {\n emitEvent: EventEmitter;\n handlerType: HandlerNames;\n handlerTag: number;\n}\nfunction getHandlerData(\n componentOrGesture: ReactTestInstance | GestureType\n): HandlerData {\n if (isGesture(componentOrGesture)) {\n const gesture = componentOrGesture;\n return {\n emitEvent: (eventName, args) => {\n DeviceEventEmitter.emit(eventName, args.nativeEvent);\n },\n handlerType: gesture.handlerName as HandlerNames,\n handlerTag: gesture.handlerTag,\n };\n }\n const gestureHandlerComponent = componentOrGesture;\n return {\n emitEvent: (eventName, args) => {\n fireEvent(gestureHandlerComponent, eventName, args);\n },\n handlerType: gestureHandlerComponent.props.handlerType as HandlerNames,\n handlerTag: gestureHandlerComponent.props.handlerTag as number,\n };\n}\ntype AllGestures =\n | TapGesture\n | PanGesture\n | LongPressGesture\n | RotationGesture\n | PinchGesture\n | FlingGesture\n | ForceTouchGesture\n | NativeGesture;\n\ntype AllHandlers =\n | TapGestureHandler\n | PanGestureHandler\n | LongPressGestureHandler\n | RotationGestureHandler\n | PinchGestureHandler\n | FlingGestureHandler\n | ForceTouchGestureHandler\n | NativeViewGestureHandler;\n\n// prettier-ignore\ntype ClassComponentConstructor

= new (props: P) => React.Component;\n\ntype ExtractPayloadFromProps = T extends BaseGestureHandlerProps<\n infer TPayload\n>\n ? TPayload\n : never;\n\ntype ExtractConfig = T extends BaseGesture\n ? TGesturePayload\n : T extends ClassComponentConstructor\n ? ExtractPayloadFromProps\n : Record;\n\nexport function fireGestureHandler(\n componentOrGesture: ReactTestInstance | GestureType,\n eventList: Partial>>[] = []\n): void {\n const { emitEvent, handlerType, handlerTag } =\n getHandlerData(componentOrGesture);\n\n let _ = fillMissingStatesTransitions(\n eventList,\n isDiscreteHandler(handlerType)\n );\n _ = _.map(fillMissingDefaultsFor({ handlerTag, handlerType }));\n _ = withPrevAndCurrent(_, fillOldStateChanges);\n _ = withPrevAndCurrent(_, validateStateTransitions);\n // @ts-ignore TODO\n _ = _.map(wrapWithNativeEvent);\n\n const events = _ as unknown as WrappedGestureHandlerTestEvent[];\n\n const firstEvent = events.shift()!;\n\n emitEvent('onGestureHandlerStateChange', firstEvent);\n let lastSentEvent = firstEvent;\n for (const event of events) {\n const hasChangedState =\n lastSentEvent.nativeEvent.state !== event.nativeEvent.state;\n\n if (hasChangedState) {\n emitEvent('onGestureHandlerStateChange', event);\n } else {\n emitEvent('onGestureHandlerEvent', event);\n }\n lastSentEvent = event;\n }\n}\n\nexport function getByGestureTestId(testID: string) {\n const handler = findHandlerByTestID(testID);\n if (handler === null) {\n throw new Error(`Handler with id: '${testID}' cannot be found`);\n }\n return handler;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js new file mode 100644 index 00000000..0e141273 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js @@ -0,0 +1,56 @@ +import { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, ScrollView, FlatList, Switch, TextInput, DrawerLayoutAndroid, View } from 'react-native'; +import { State } from './State'; +import { Directions } from './Directions'; + +const NOOP = () => {// do nothing +}; + +const PanGestureHandler = View; +const attachGestureHandler = NOOP; +const createGestureHandler = NOOP; +const dropGestureHandler = NOOP; +const updateGestureHandler = NOOP; +const flushOperations = NOOP; +const NativeViewGestureHandler = View; +const TapGestureHandler = View; +const ForceTouchGestureHandler = View; +const LongPressGestureHandler = View; +const PinchGestureHandler = View; +const RotationGestureHandler = View; +const FlingGestureHandler = View; +const RawButton = TouchableNativeFeedback; +const BaseButton = TouchableNativeFeedback; +const RectButton = TouchableNativeFeedback; +const BorderlessButton = TouchableNativeFeedback; +export default { + TouchableHighlight, + TouchableNativeFeedback, + TouchableOpacity, + TouchableWithoutFeedback, + ScrollView, + FlatList, + Switch, + TextInput, + DrawerLayoutAndroid, + NativeViewGestureHandler, + TapGestureHandler, + ForceTouchGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + RawButton, + BaseButton, + RectButton, + BorderlessButton, + PanGestureHandler, + attachGestureHandler, + createGestureHandler, + dropGestureHandler, + updateGestureHandler, + flushOperations, + // probably can be removed + Directions, + State +}; +//# sourceMappingURL=mocks.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js.map new file mode 100644 index 00000000..f387c69f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/mocks.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["mocks.ts"],"names":["TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","FlatList","Switch","TextInput","DrawerLayoutAndroid","View","State","Directions","NOOP","PanGestureHandler","attachGestureHandler","createGestureHandler","dropGestureHandler","updateGestureHandler","flushOperations","NativeViewGestureHandler","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton"],"mappings":"AAAA,SACEA,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,EAKEC,UALF,EAMEC,QANF,EAOEC,MAPF,EAQEC,SARF,EASEC,mBATF,EAUEC,IAVF,QAWO,cAXP;AAYA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,UAAT,QAA2B,cAA3B;;AAEA,MAAMC,IAAI,GAAG,MAAM,CACjB;AACD,CAFD;;AAGA,MAAMC,iBAAiB,GAAGJ,IAA1B;AACA,MAAMK,oBAAoB,GAAGF,IAA7B;AACA,MAAMG,oBAAoB,GAAGH,IAA7B;AACA,MAAMI,kBAAkB,GAAGJ,IAA3B;AACA,MAAMK,oBAAoB,GAAGL,IAA7B;AACA,MAAMM,eAAe,GAAGN,IAAxB;AACA,MAAMO,wBAAwB,GAAGV,IAAjC;AACA,MAAMW,iBAAiB,GAAGX,IAA1B;AACA,MAAMY,wBAAwB,GAAGZ,IAAjC;AACA,MAAMa,uBAAuB,GAAGb,IAAhC;AACA,MAAMc,mBAAmB,GAAGd,IAA5B;AACA,MAAMe,sBAAsB,GAAGf,IAA/B;AACA,MAAMgB,mBAAmB,GAAGhB,IAA5B;AACA,MAAMiB,SAAS,GAAGzB,uBAAlB;AACA,MAAM0B,UAAU,GAAG1B,uBAAnB;AACA,MAAM2B,UAAU,GAAG3B,uBAAnB;AACA,MAAM4B,gBAAgB,GAAG5B,uBAAzB;AAEA,eAAe;AACbD,EAAAA,kBADa;AAEbC,EAAAA,uBAFa;AAGbC,EAAAA,gBAHa;AAIbC,EAAAA,wBAJa;AAKbC,EAAAA,UALa;AAMbC,EAAAA,QANa;AAObC,EAAAA,MAPa;AAQbC,EAAAA,SARa;AASbC,EAAAA,mBATa;AAUbW,EAAAA,wBAVa;AAWbC,EAAAA,iBAXa;AAYbC,EAAAA,wBAZa;AAabC,EAAAA,uBAba;AAcbC,EAAAA,mBAda;AAebC,EAAAA,sBAfa;AAgBbC,EAAAA,mBAhBa;AAiBbC,EAAAA,SAjBa;AAkBbC,EAAAA,UAlBa;AAmBbC,EAAAA,UAnBa;AAoBbC,EAAAA,gBApBa;AAqBbhB,EAAAA,iBArBa;AAsBbC,EAAAA,oBAtBa;AAuBbC,EAAAA,oBAvBa;AAwBbC,EAAAA,kBAxBa;AAyBbC,EAAAA,oBAzBa;AA0BbC,EAAAA,eA1Ba;AA2Bb;AACAP,EAAAA,UA5Ba;AA6BbD,EAAAA;AA7Ba,CAAf","sourcesContent":["import {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n ScrollView,\n FlatList,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n View,\n} from 'react-native';\nimport { State } from './State';\nimport { Directions } from './Directions';\n\nconst NOOP = () => {\n // do nothing\n};\nconst PanGestureHandler = View;\nconst attachGestureHandler = NOOP;\nconst createGestureHandler = NOOP;\nconst dropGestureHandler = NOOP;\nconst updateGestureHandler = NOOP;\nconst flushOperations = NOOP;\nconst NativeViewGestureHandler = View;\nconst TapGestureHandler = View;\nconst ForceTouchGestureHandler = View;\nconst LongPressGestureHandler = View;\nconst PinchGestureHandler = View;\nconst RotationGestureHandler = View;\nconst FlingGestureHandler = View;\nconst RawButton = TouchableNativeFeedback;\nconst BaseButton = TouchableNativeFeedback;\nconst RectButton = TouchableNativeFeedback;\nconst BorderlessButton = TouchableNativeFeedback;\n\nexport default {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n ScrollView,\n FlatList,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n NativeViewGestureHandler,\n TapGestureHandler,\n ForceTouchGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n PanGestureHandler,\n attachGestureHandler,\n createGestureHandler,\n dropGestureHandler,\n updateGestureHandler,\n flushOperations,\n // probably can be removed\n Directions,\n State,\n} as const;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js new file mode 100644 index 00000000..28039a80 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js @@ -0,0 +1,2 @@ + +//# sourceMappingURL=typeUtils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js.map new file mode 100644 index 00000000..9ffd4b22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/typeUtils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js new file mode 100644 index 00000000..b17d22fe --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js @@ -0,0 +1,54 @@ +import pack from 'react-native/package.json'; +const [majorStr, minorStr] = pack.version.split('.'); +export const REACT_NATIVE_VERSION = { + major: parseInt(majorStr, 10), + minor: parseInt(minorStr, 10) +}; +export function toArray(object) { + if (!Array.isArray(object)) { + return [object]; + } + + return object; +} +export function withPrevAndCurrent(array, mapFn) { + const previousArr = [null]; + const currentArr = [...array]; + const transformedArr = []; + currentArr.forEach((current, i) => { + const previous = previousArr[i]; + const transformed = mapFn(previous, current); + previousArr.push(transformed); + transformedArr.push(transformed); + }); + return transformedArr; +} // eslint-disable-next-line @typescript-eslint/ban-types + +export function hasProperty(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} +export function isJestEnv() { + // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects. + return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID; +} +export function tagMessage(msg) { + return `[react-native-gesture-handler] ${msg}`; +} // helper method to check whether Fabric is enabled, however global.nativeFabricUIManager +// may not be initialized before the first render + +export function isFabric() { + var _global; + + // @ts-expect-error nativeFabricUIManager is not yet included in the RN types + return !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager); +} +export function shouldUseCodegenNativeComponent() { + // use codegenNativeComponent starting with RN 0.68 + return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0; +} +export function isRemoteDebuggingEnabled() { + // react-native-reanimated checks if in remote debugging in the same way + // @ts-ignore global is available but node types are not included + return !global.nativeCallSyncHook || global.__REMOTEDEV__; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js.map new file mode 100644 index 00000000..aa7221a2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.ts"],"names":["pack","majorStr","minorStr","version","split","REACT_NATIVE_VERSION","major","parseInt","minor","toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager","shouldUseCodegenNativeComponent","isRemoteDebuggingEnabled","nativeCallSyncHook","__REMOTEDEV__"],"mappings":"AAAA,OAAOA,IAAP,MAAiB,2BAAjB;AAEA,MAAM,CAACC,QAAD,EAAWC,QAAX,IAAuBF,IAAI,CAACG,OAAL,CAAaC,KAAb,CAAmB,GAAnB,CAA7B;AACA,OAAO,MAAMC,oBAAoB,GAAG;AAClCC,EAAAA,KAAK,EAAEC,QAAQ,CAACN,QAAD,EAAW,EAAX,CADmB;AAElCO,EAAAA,KAAK,EAAED,QAAQ,CAACL,QAAD,EAAW,EAAX;AAFmB,CAA7B;AAKP,OAAO,SAASO,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;AAMD,OAAO,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;AACA,OAAO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;AAED,OAAO,SAASK,SAAT,GAA8B;AACnC;AACA,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;AAED,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD,C,CAED;AACA;;AACA,OAAO,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD;AAED,OAAO,SAASC,+BAAT,GAAoD;AACzD;AACA,SAAOnC,oBAAoB,CAACG,KAArB,IAA8B,EAA9B,IAAoCH,oBAAoB,CAACC,KAArB,GAA6B,CAAxE;AACD;AAED,OAAO,SAASmC,wBAAT,GAA6C;AAClD;AACA;AACA,SAAO,CAAET,MAAD,CAAgBU,kBAAjB,IAAwCV,MAAD,CAAgBW,aAA9D;AACD","sourcesContent":["import pack from 'react-native/package.json';\n\nconst [majorStr, minorStr] = pack.version.split('.');\nexport const REACT_NATIVE_VERSION = {\n major: parseInt(majorStr, 10),\n minor: parseInt(minorStr, 10),\n};\n\nexport function toArray(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent(\n array: T[],\n mapFn: withPrevAndCurrentMapFn\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects.\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\n// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager\n// may not be initialized before the first render\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n\nexport function shouldUseCodegenNativeComponent(): boolean {\n // use codegenNativeComponent starting with RN 0.68\n return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0;\n}\n\nexport function isRemoteDebuggingEnabled(): boolean {\n // react-native-reanimated checks if in remote debugging in the same way\n // @ts-ignore global is available but node types are not included\n return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js new file mode 100644 index 00000000..91bd390c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js @@ -0,0 +1,8 @@ +export const DEFAULT_TOUCH_SLOP = 15; +export const Direction = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8 +}; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js.map new file mode 100644 index 00000000..8b351ee7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/constants.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["constants.ts"],"names":["DEFAULT_TOUCH_SLOP","Direction","RIGHT","LEFT","UP","DOWN"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,GAAG,EAA3B;AAEP,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,IAAI,EAAE,CAFiB;AAGvBC,EAAAA,EAAE,EAAE,CAHmB;AAIvBC,EAAAA,IAAI,EAAE;AAJiB,CAAlB","sourcesContent":["export const DEFAULT_TOUCH_SLOP = 15;\n\nexport const Direction = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js new file mode 100644 index 00000000..c60b34ae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js @@ -0,0 +1,155 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { EventTypes } from '../interfaces'; +export default class RotationGestureDetector { + constructor(callbacks) { + _defineProperty(this, "onRotationBegin", void 0); + + _defineProperty(this, "onRotation", void 0); + + _defineProperty(this, "onRotationEnd", void 0); + + _defineProperty(this, "currentTime", 0); + + _defineProperty(this, "previousTime", 0); + + _defineProperty(this, "previousAngle", 0); + + _defineProperty(this, "rotation", 0); + + _defineProperty(this, "anchorX", 0); + + _defineProperty(this, "anchorY", 0); + + _defineProperty(this, "isInProgress", false); + + _defineProperty(this, "keyPointers", [NaN, NaN]); + + this.onRotationBegin = callbacks.onRotationBegin; + this.onRotation = callbacks.onRotation; + this.onRotationEnd = callbacks.onRotationEnd; + } + + updateCurrent(event, tracker) { + this.previousTime = this.currentTime; + this.currentTime = event.time; + const [firstPointerID, secondPointerID] = this.keyPointers; + const firstPointerX = tracker.getLastX(firstPointerID); + const firstPointerY = tracker.getLastY(firstPointerID); + const secondPointerX = tracker.getLastX(secondPointerID); + const secondPointerY = tracker.getLastY(secondPointerID); + const vectorX = secondPointerX - firstPointerX; + const vectorY = secondPointerY - firstPointerY; + this.anchorX = (firstPointerX + secondPointerX) / 2; + this.anchorY = (firstPointerY + secondPointerY) / 2; //Angle diff should be positive when rotating in clockwise direction + + const angle = -Math.atan2(vectorY, vectorX); + this.rotation = Number.isNaN(this.previousAngle) ? 0 : this.previousAngle - angle; + this.previousAngle = angle; + + if (this.rotation > Math.PI) { + this.rotation -= Math.PI; + } else if (this.rotation < -Math.PI) { + this.rotation += Math.PI; + } + + if (this.rotation > Math.PI / 2) { + this.rotation -= Math.PI; + } else if (this.rotation < -Math.PI / 2) { + this.rotation += Math.PI; + } + } + + finish() { + if (!this.isInProgress) { + return; + } + + this.isInProgress = false; + this.keyPointers = [NaN, NaN]; + this.onRotationEnd(this); + } + + setKeyPointers(tracker) { + if (this.keyPointers[0] && this.keyPointers[1]) { + return; + } + + const pointerIDs = tracker.getData().keys(); + this.keyPointers[0] = pointerIDs.next().value; + this.keyPointers[1] = pointerIDs.next().value; + } + + onTouchEvent(event, tracker) { + switch (event.eventType) { + case EventTypes.DOWN: + this.isInProgress = false; + break; + + case EventTypes.ADDITIONAL_POINTER_DOWN: + if (this.isInProgress) { + break; + } + + this.isInProgress = true; + this.previousTime = event.time; + this.previousAngle = NaN; + this.setKeyPointers(tracker); + this.updateCurrent(event, tracker); + this.onRotationBegin(this); + break; + + case EventTypes.MOVE: + if (!this.isInProgress) { + break; + } + + this.updateCurrent(event, tracker); + this.onRotation(this); + break; + + case EventTypes.ADDITIONAL_POINTER_UP: + if (!this.isInProgress) { + break; + } + + if (this.keyPointers.indexOf(event.pointerId) >= 0) { + this.finish(); + } + + break; + + case EventTypes.UP: + if (this.isInProgress) { + this.finish(); + } + + break; + } + + return true; + } + + getTimeDelta() { + return this.currentTime + this.previousTime; + } + + getAnchorX() { + return this.anchorX; + } + + getAnchorY() { + return this.anchorY; + } + + getRotation() { + return this.rotation; + } + + reset() { + this.keyPointers = [NaN, NaN]; + this.isInProgress = false; + } + +} +//# sourceMappingURL=RotationGestureDetector.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js.map new file mode 100644 index 00000000..d6f6352d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/RotationGestureDetector.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureDetector.ts"],"names":["EventTypes","RotationGestureDetector","constructor","callbacks","NaN","onRotationBegin","onRotation","onRotationEnd","updateCurrent","event","tracker","previousTime","currentTime","time","firstPointerID","secondPointerID","keyPointers","firstPointerX","getLastX","firstPointerY","getLastY","secondPointerX","secondPointerY","vectorX","vectorY","anchorX","anchorY","angle","Math","atan2","rotation","Number","isNaN","previousAngle","PI","finish","isInProgress","setKeyPointers","pointerIDs","getData","keys","next","value","onTouchEvent","eventType","DOWN","ADDITIONAL_POINTER_DOWN","MOVE","ADDITIONAL_POINTER_UP","indexOf","pointerId","UP","getTimeDelta","getAnchorX","getAnchorY","getRotation","reset"],"mappings":"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","sourcesContent":["import { AdaptedEvent, EventTypes } from '../interfaces';\nimport PointerTracker from '../tools/PointerTracker';\n\nexport interface RotationGestureListener {\n onRotationBegin: (detector: RotationGestureDetector) => boolean;\n onRotation: (detector: RotationGestureDetector) => boolean;\n onRotationEnd: (detector: RotationGestureDetector) => void;\n}\n\nexport default class RotationGestureDetector\n implements RotationGestureListener\n{\n onRotationBegin: (detector: RotationGestureDetector) => boolean;\n onRotation: (detector: RotationGestureDetector) => boolean;\n onRotationEnd: (detector: RotationGestureDetector) => void;\n\n private currentTime = 0;\n private previousTime = 0;\n\n private previousAngle = 0;\n private rotation = 0;\n\n private anchorX = 0;\n private anchorY = 0;\n\n private isInProgress = false;\n\n private keyPointers: number[] = [NaN, NaN];\n\n constructor(callbacks: RotationGestureListener) {\n this.onRotationBegin = callbacks.onRotationBegin;\n this.onRotation = callbacks.onRotation;\n this.onRotationEnd = callbacks.onRotationEnd;\n }\n\n private updateCurrent(event: AdaptedEvent, tracker: PointerTracker): void {\n this.previousTime = this.currentTime;\n this.currentTime = event.time;\n\n const [firstPointerID, secondPointerID] = this.keyPointers;\n\n const firstPointerX: number = tracker.getLastX(firstPointerID);\n const firstPointerY: number = tracker.getLastY(firstPointerID);\n const secondPointerX: number = tracker.getLastX(secondPointerID);\n const secondPointerY: number = tracker.getLastY(secondPointerID);\n\n const vectorX: number = secondPointerX - firstPointerX;\n const vectorY: number = secondPointerY - firstPointerY;\n\n this.anchorX = (firstPointerX + secondPointerX) / 2;\n this.anchorY = (firstPointerY + secondPointerY) / 2;\n\n //Angle diff should be positive when rotating in clockwise direction\n const angle: number = -Math.atan2(vectorY, vectorX);\n\n this.rotation = Number.isNaN(this.previousAngle)\n ? 0\n : this.previousAngle - angle;\n\n this.previousAngle = angle;\n\n if (this.rotation > Math.PI) {\n this.rotation -= Math.PI;\n } else if (this.rotation < -Math.PI) {\n this.rotation += Math.PI;\n }\n\n if (this.rotation > Math.PI / 2) {\n this.rotation -= Math.PI;\n } else if (this.rotation < -Math.PI / 2) {\n this.rotation += Math.PI;\n }\n }\n\n private finish(): void {\n if (!this.isInProgress) {\n return;\n }\n\n this.isInProgress = false;\n this.keyPointers = [NaN, NaN];\n this.onRotationEnd(this);\n }\n\n private setKeyPointers(tracker: PointerTracker): void {\n if (this.keyPointers[0] && this.keyPointers[1]) {\n return;\n }\n\n const pointerIDs: IterableIterator = tracker.getData().keys();\n\n this.keyPointers[0] = pointerIDs.next().value as number;\n this.keyPointers[1] = pointerIDs.next().value as number;\n }\n\n public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {\n switch (event.eventType) {\n case EventTypes.DOWN:\n this.isInProgress = false;\n break;\n\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n if (this.isInProgress) {\n break;\n }\n this.isInProgress = true;\n\n this.previousTime = event.time;\n this.previousAngle = NaN;\n\n this.setKeyPointers(tracker);\n\n this.updateCurrent(event, tracker);\n this.onRotationBegin(this);\n break;\n\n case EventTypes.MOVE:\n if (!this.isInProgress) {\n break;\n }\n\n this.updateCurrent(event, tracker);\n this.onRotation(this);\n\n break;\n\n case EventTypes.ADDITIONAL_POINTER_UP:\n if (!this.isInProgress) {\n break;\n }\n\n if (this.keyPointers.indexOf(event.pointerId) >= 0) {\n this.finish();\n }\n\n break;\n\n case EventTypes.UP:\n if (this.isInProgress) {\n this.finish();\n }\n break;\n }\n\n return true;\n }\n\n public getTimeDelta(): number {\n return this.currentTime + this.previousTime;\n }\n\n public getAnchorX(): number {\n return this.anchorX;\n }\n\n public getAnchorY(): number {\n return this.anchorY;\n }\n\n public getRotation(): number {\n return this.rotation;\n }\n\n public reset(): void {\n this.keyPointers = [NaN, NaN];\n this.isInProgress = false;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js new file mode 100644 index 00000000..57dbf0ce --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js @@ -0,0 +1,145 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import { EventTypes } from '../interfaces'; +export default class ScaleGestureDetector { + constructor(callbacks) { + _defineProperty(this, "onScaleBegin", void 0); + + _defineProperty(this, "onScale", void 0); + + _defineProperty(this, "onScaleEnd", void 0); + + _defineProperty(this, "focusX", void 0); + + _defineProperty(this, "focusY", void 0); + + _defineProperty(this, "currentSpan", void 0); + + _defineProperty(this, "prevSpan", void 0); + + _defineProperty(this, "initialSpan", void 0); + + _defineProperty(this, "currentTime", void 0); + + _defineProperty(this, "prevTime", void 0); + + _defineProperty(this, "inProgress", false); + + _defineProperty(this, "spanSlop", void 0); + + _defineProperty(this, "minSpan", void 0); + + this.onScaleBegin = callbacks.onScaleBegin; + this.onScale = callbacks.onScale; + this.onScaleEnd = callbacks.onScaleEnd; + this.spanSlop = DEFAULT_TOUCH_SLOP * 2; + this.minSpan = 0; + } + + onTouchEvent(event, tracker) { + this.currentTime = event.time; + const action = event.eventType; + const numOfPointers = tracker.getTrackedPointersCount(); + const streamComplete = action === EventTypes.UP || action === EventTypes.ADDITIONAL_POINTER_UP || action === EventTypes.CANCEL; + + if (action === EventTypes.DOWN || streamComplete) { + if (this.inProgress) { + this.onScaleEnd(this); + this.inProgress = false; + this.initialSpan = 0; + } + + if (streamComplete) { + return true; + } + } + + const configChanged = action === EventTypes.DOWN || action === EventTypes.ADDITIONAL_POINTER_UP || action === EventTypes.ADDITIONAL_POINTER_DOWN; + const pointerUp = action === EventTypes.ADDITIONAL_POINTER_UP; + const ignoredPointer = pointerUp ? event.pointerId : undefined; //Determine focal point + + const div = pointerUp ? numOfPointers - 1 : numOfPointers; + const sumX = tracker.getSumX(ignoredPointer); + const sumY = tracker.getSumY(ignoredPointer); + const focusX = sumX / div; + const focusY = sumY / div; //Determine average deviation from focal point + + let devSumX = 0; + let devSumY = 0; + tracker.getData().forEach((value, key) => { + if (key === ignoredPointer) { + return; + } + + devSumX += Math.abs(value.lastX - focusX); + devSumY += Math.abs(value.lastY - focusY); + }); + const devX = devSumX / div; + const devY = devSumY / div; + const spanX = devX * 2; + const spanY = devY * 2; + const span = Math.hypot(spanX, spanY); //Begin/end events + + const wasInProgress = this.inProgress; + this.focusX = focusX; + this.focusY = focusY; + + if (this.inProgress && (span < this.minSpan || configChanged)) { + this.onScaleEnd(this); + this.inProgress = false; + this.initialSpan = span; + } + + if (configChanged) { + this.initialSpan = this.prevSpan = this.currentSpan = span; + } + + if (!this.inProgress && span >= this.minSpan && (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop)) { + this.prevSpan = this.currentSpan = span; + this.prevTime = this.currentTime; + this.inProgress = this.onScaleBegin(this); + } //Handle motion + + + if (action !== EventTypes.MOVE) { + return true; + } + + this.currentSpan = span; + + if (this.inProgress && !this.onScale(this)) { + return true; + } + + this.prevSpan = this.currentSpan; + this.prevTime = this.currentTime; + return true; + } + + getCurrentSpan() { + return this.currentSpan; + } + + getFocusX() { + return this.focusX; + } + + getFocusY() { + return this.focusY; + } + + getTimeDelta() { + return this.currentTime - this.prevTime; + } + + getScaleFactor(numOfPointers) { + if (numOfPointers < 2) { + return 1; + } + + return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1; + } + +} +//# sourceMappingURL=ScaleGestureDetector.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js.map new file mode 100644 index 00000000..55d4e6aa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/detectors/ScaleGestureDetector.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ScaleGestureDetector.ts"],"names":["DEFAULT_TOUCH_SLOP","EventTypes","ScaleGestureDetector","constructor","callbacks","onScaleBegin","onScale","onScaleEnd","spanSlop","minSpan","onTouchEvent","event","tracker","currentTime","time","action","eventType","numOfPointers","getTrackedPointersCount","streamComplete","UP","ADDITIONAL_POINTER_UP","CANCEL","DOWN","inProgress","initialSpan","configChanged","ADDITIONAL_POINTER_DOWN","pointerUp","ignoredPointer","pointerId","undefined","div","sumX","getSumX","sumY","getSumY","focusX","focusY","devSumX","devSumY","getData","forEach","value","key","Math","abs","lastX","lastY","devX","devY","spanX","spanY","span","hypot","wasInProgress","prevSpan","currentSpan","prevTime","MOVE","getCurrentSpan","getFocusX","getFocusY","getTimeDelta","getScaleFactor"],"mappings":"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","sourcesContent":["import { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, EventTypes } from '../interfaces';\n\nimport PointerTracker from '../tools/PointerTracker';\n\nexport interface ScaleGestureListener {\n onScaleBegin: (detector: ScaleGestureDetector) => boolean;\n onScale: (detector: ScaleGestureDetector) => boolean;\n onScaleEnd: (detector: ScaleGestureDetector) => void;\n}\n\nexport default class ScaleGestureDetector implements ScaleGestureListener {\n public onScaleBegin: (detector: ScaleGestureDetector) => boolean;\n public onScale: (detector: ScaleGestureDetector) => boolean;\n public onScaleEnd: (detector: ScaleGestureDetector) => void;\n\n private focusX!: number;\n private focusY!: number;\n\n private currentSpan!: number;\n private prevSpan!: number;\n private initialSpan!: number;\n\n private currentTime!: number;\n private prevTime!: number;\n\n private inProgress = false;\n\n private spanSlop: number;\n private minSpan: number;\n\n public constructor(callbacks: ScaleGestureListener) {\n this.onScaleBegin = callbacks.onScaleBegin;\n this.onScale = callbacks.onScale;\n this.onScaleEnd = callbacks.onScaleEnd;\n\n this.spanSlop = DEFAULT_TOUCH_SLOP * 2;\n this.minSpan = 0;\n }\n\n public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {\n this.currentTime = event.time;\n\n const action: EventTypes = event.eventType;\n const numOfPointers = tracker.getTrackedPointersCount();\n\n const streamComplete: boolean =\n action === EventTypes.UP ||\n action === EventTypes.ADDITIONAL_POINTER_UP ||\n action === EventTypes.CANCEL;\n\n if (action === EventTypes.DOWN || streamComplete) {\n if (this.inProgress) {\n this.onScaleEnd(this);\n this.inProgress = false;\n this.initialSpan = 0;\n }\n\n if (streamComplete) {\n return true;\n }\n }\n\n const configChanged: boolean =\n action === EventTypes.DOWN ||\n action === EventTypes.ADDITIONAL_POINTER_UP ||\n action === EventTypes.ADDITIONAL_POINTER_DOWN;\n\n const pointerUp = action === EventTypes.ADDITIONAL_POINTER_UP;\n\n const ignoredPointer: number | undefined = pointerUp\n ? event.pointerId\n : undefined;\n\n //Determine focal point\n\n const div: number = pointerUp ? numOfPointers - 1 : numOfPointers;\n\n const sumX = tracker.getSumX(ignoredPointer);\n const sumY = tracker.getSumY(ignoredPointer);\n\n const focusX = sumX / div;\n const focusY = sumY / div;\n\n //Determine average deviation from focal point\n\n let devSumX = 0;\n let devSumY = 0;\n\n tracker.getData().forEach((value, key) => {\n if (key === ignoredPointer) {\n return;\n }\n\n devSumX += Math.abs(value.lastX - focusX);\n devSumY += Math.abs(value.lastY - focusY);\n });\n\n const devX: number = devSumX / div;\n const devY: number = devSumY / div;\n\n const spanX: number = devX * 2;\n const spanY: number = devY * 2;\n\n const span = Math.hypot(spanX, spanY);\n\n //Begin/end events\n const wasInProgress: boolean = this.inProgress;\n this.focusX = focusX;\n this.focusY = focusY;\n\n if (this.inProgress && (span < this.minSpan || configChanged)) {\n this.onScaleEnd(this);\n this.inProgress = false;\n this.initialSpan = span;\n }\n\n if (configChanged) {\n this.initialSpan = this.prevSpan = this.currentSpan = span;\n }\n\n if (\n !this.inProgress &&\n span >= this.minSpan &&\n (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop)\n ) {\n this.prevSpan = this.currentSpan = span;\n this.prevTime = this.currentTime;\n this.inProgress = this.onScaleBegin(this);\n }\n\n //Handle motion\n if (action !== EventTypes.MOVE) {\n return true;\n }\n\n this.currentSpan = span;\n\n if (this.inProgress && !this.onScale(this)) {\n return true;\n }\n\n this.prevSpan = this.currentSpan;\n this.prevTime = this.currentTime;\n\n return true;\n }\n\n public getCurrentSpan(): number {\n return this.currentSpan;\n }\n\n public getFocusX(): number {\n return this.focusX;\n }\n\n public getFocusY(): number {\n return this.focusY;\n }\n\n public getTimeDelta(): number {\n return this.currentTime - this.prevTime;\n }\n\n public getScaleFactor(numOfPointers: number): number {\n if (numOfPointers < 2) {\n return 1;\n }\n\n return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js new file mode 100644 index 00000000..708a8e31 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js @@ -0,0 +1,167 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import { Direction } from '../constants'; +import GestureHandler from './GestureHandler'; +const DEFAULT_MAX_DURATION_MS = 800; +const DEFAULT_MIN_ACCEPTABLE_DELTA = 160; +const DEFAULT_DIRECTION = Direction.RIGHT; +const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1; +export default class FlingGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "numberOfPointersRequired", DEFAULT_NUMBER_OF_TOUCHES_REQUIRED); + + _defineProperty(this, "direction", DEFAULT_DIRECTION); + + _defineProperty(this, "maxDurationMs", DEFAULT_MAX_DURATION_MS); + + _defineProperty(this, "minAcceptableDelta", DEFAULT_MIN_ACCEPTABLE_DELTA); + + _defineProperty(this, "delayTimeout", void 0); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "maxNumberOfPointersSimultaneously", 0); + + _defineProperty(this, "keyPointer", NaN); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.direction) { + this.direction = this.config.direction; + } + + if (this.config.numberOfPointers) { + this.numberOfPointersRequired = this.config.numberOfPointers; + } + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY() + }; + } + + startFling() { + this.startX = this.tracker.getLastX(this.keyPointer); + this.startY = this.tracker.getLastY(this.keyPointer); + this.begin(); + this.maxNumberOfPointersSimultaneously = 1; + this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs); + } + + tryEndFling() { + if (this.maxNumberOfPointersSimultaneously === this.numberOfPointersRequired && (this.direction & Direction.RIGHT && this.tracker.getLastX(this.keyPointer) - this.startX > this.minAcceptableDelta || this.direction & Direction.LEFT && this.startX - this.tracker.getLastX(this.keyPointer) > this.minAcceptableDelta || this.direction & Direction.UP && this.startY - this.tracker.getLastY(this.keyPointer) > this.minAcceptableDelta || this.direction & Direction.DOWN && this.tracker.getLastY(this.keyPointer) - this.startY > this.minAcceptableDelta)) { + clearTimeout(this.delayTimeout); + this.activate(); + return true; + } + + return false; + } + + endFling() { + if (!this.tryEndFling()) { + this.fail(); + } + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + this.keyPointer = event.pointerId; + super.onPointerDown(event); + this.newPointerAction(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.newPointerAction(); + } + + newPointerAction() { + if (this.currentState === State.UNDETERMINED) { + this.startFling(); + } + + if (this.currentState !== State.BEGAN) { + return; + } + + this.tryEndFling(); + + if (this.tracker.getTrackedPointersCount() > this.maxNumberOfPointersSimultaneously) { + this.maxNumberOfPointersSimultaneously = this.tracker.getTrackedPointersCount(); + } + } + + onPointerMove(event) { + this.tracker.track(event); + + if (this.currentState !== State.BEGAN) { + return; + } + + this.tryEndFling(); + super.onPointerMove(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.onUp(event); + this.keyPointer = NaN; + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.onUp(event); + } + + onUp(event) { + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState !== State.BEGAN) { + return; + } + + this.endFling(); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + + activate(force) { + super.activate(force); + this.end(); + } + + resetConfig() { + super.resetConfig(); + this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED; + this.direction = DEFAULT_DIRECTION; + } + +} +//# sourceMappingURL=FlingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js.map new file mode 100644 index 00000000..f2d041ab --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/FlingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","startFling","startX","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","onPointerCancel","reset","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js new file mode 100644 index 00000000..88530859 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js @@ -0,0 +1,796 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/* eslint-disable @typescript-eslint/no-empty-function */ +import { findNodeHandle } from 'react-native'; +import { State } from '../../State'; +import { PointerType, TouchEventType, EventTypes } from '../interfaces'; +import GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator'; +import InteractionManager from '../tools/InteractionManager'; +import PointerEventManager from '../tools/PointerEventManager'; +import PointerTracker from '../tools/PointerTracker'; +import TouchEventManager from '../tools/TouchEventManager'; +import { isPointerInBounds } from '../utils'; +export default class GestureHandler { + // Orchestrator properties + constructor() { + _defineProperty(this, "lastSentState", null); + + _defineProperty(this, "currentState", State.UNDETERMINED); + + _defineProperty(this, "shouldCancellWhenOutside", false); + + _defineProperty(this, "hasCustomActivationCriteria", void 0); + + _defineProperty(this, "enabled", false); + + _defineProperty(this, "ref", void 0); + + _defineProperty(this, "propsRef", void 0); + + _defineProperty(this, "handlerTag", void 0); + + _defineProperty(this, "config", { + enabled: false + }); + + _defineProperty(this, "view", void 0); + + _defineProperty(this, "eventManagers", []); + + _defineProperty(this, "tracker", new PointerTracker()); + + _defineProperty(this, "activationIndex", 0); + + _defineProperty(this, "awaiting", false); + + _defineProperty(this, "active", false); + + _defineProperty(this, "shouldResetProgress", false); + + _defineProperty(this, "pointerType", PointerType.NONE); + + _defineProperty(this, "sendEvent", (newState, oldState) => { + const { + onGestureHandlerEvent, + onGestureHandlerStateChange + } = this.propsRef.current; + const resultEvent = this.transformEventData(newState, oldState); // In the new API oldState field has to be undefined, unless we send event state changed + // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back + // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once + // However, this may cause trouble in the future (but for now we don't know that) + + if (this.lastSentState !== newState) { + this.lastSentState = newState; + invokeNullableMethod(onGestureHandlerStateChange, resultEvent); + } + + if (this.currentState === State.ACTIVE) { + resultEvent.nativeEvent.oldState = undefined; + invokeNullableMethod(onGestureHandlerEvent, resultEvent); + } + }); + + this.hasCustomActivationCriteria = false; + } // + // Initializing handler + // + + + init(ref, propsRef) { + this.propsRef = propsRef; + this.ref = ref; + this.currentState = State.UNDETERMINED; + this.setView(); + this.addEventManager(new PointerEventManager(this.view)); + this.addEventManager(new TouchEventManager(this.view)); + } + + setView() { + if (!this.ref) { + throw new Error(`Cannot find HTML Element for handler ${this.handlerTag}`); + } + + this.view = findNodeHandle(this.ref); + this.view.style['touchAction'] = 'none'; //@ts-ignore This one disables default events on Safari + + this.view.style['WebkitTouchCallout'] = 'none'; + + if (!this.config.userSelect) { + this.view.style['webkitUserSelect'] = 'none'; + this.view.style['userSelect'] = 'none'; + } else { + this.view.style['webkitUserSelect'] = this.config.userSelect; + this.view.style['userSelect'] = this.config.userSelect; + } + } + + addEventManager(manager) { + manager.setOnPointerDown(this.onPointerDown.bind(this)); + manager.setOnPointerAdd(this.onPointerAdd.bind(this)); + manager.setOnPointerUp(this.onPointerUp.bind(this)); + manager.setOnPointerRemove(this.onPointerRemove.bind(this)); + manager.setOnPointerMove(this.onPointerMove.bind(this)); + manager.setOnPointerEnter(this.onPointerEnter.bind(this)); + manager.setOnPointerOut(this.onPointerOut.bind(this)); + manager.setOnPointerCancel(this.onPointerCancel.bind(this)); + manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this)); + manager.setListeners(); + this.eventManagers.push(manager); + } // + // Resetting handler + // + + + onCancel() {} + + onReset() {} + + resetProgress() {} + + reset() { + this.tracker.resetTracker(); + this.onReset(); + this.resetProgress(); + this.eventManagers.forEach(manager => manager.resetManager()); + this.currentState = State.UNDETERMINED; + } // + // State logic + // + + + moveToState(newState, sendIfDisabled) { + if (this.currentState === newState) { + return; + } + + const oldState = this.currentState; + this.currentState = newState; + + if (this.tracker.getTrackedPointersCount() > 0 && this.config.needsPointerData && this.isFinished()) { + this.cancelTouches(); + } + + GestureHandlerOrchestrator.getInstance().onHandlerStateChange(this, newState, oldState, sendIfDisabled); + this.onStateChange(newState, oldState); + } + + onStateChange(_newState, _oldState) {} + + begin() { + if (!this.checkHitSlop()) { + return; + } + + if (this.currentState === State.UNDETERMINED) { + this.moveToState(State.BEGAN); + } + } + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event + */ + + + fail(sendIfDisabled) { + if (this.currentState === State.ACTIVE || this.currentState === State.BEGAN) { + this.moveToState(State.FAILED, sendIfDisabled); + this.view.style.cursor = 'auto'; + } + + this.resetProgress(); + } + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event + */ + + + cancel(sendIfDisabled) { + if (this.currentState === State.ACTIVE || this.currentState === State.UNDETERMINED || this.currentState === State.BEGAN) { + this.onCancel(); + this.moveToState(State.CANCELLED, sendIfDisabled); + this.view.style.cursor = 'auto'; + } + } + + activate(_force = false) { + if (this.currentState === State.UNDETERMINED || this.currentState === State.BEGAN) { + this.moveToState(State.ACTIVE); + this.view.style.cursor = 'grab'; + } + } + + end() { + if (this.currentState === State.BEGAN || this.currentState === State.ACTIVE) { + this.moveToState(State.END); + this.view.style.cursor = 'auto'; + } + + this.resetProgress(); + } // + // Methods for orchestrator + // + + + isAwaiting() { + return this.awaiting; + } + + setAwaiting(value) { + this.awaiting = value; + } + + isActive() { + return this.active; + } + + setActive(value) { + this.active = value; + } + + getShouldResetProgress() { + return this.shouldResetProgress; + } + + setShouldResetProgress(value) { + this.shouldResetProgress = value; + } + + getActivationIndex() { + return this.activationIndex; + } + + setActivationIndex(value) { + this.activationIndex = value; + } + + shouldWaitForHandlerFailure(handler) { + if (handler === this) { + return false; + } + + return InteractionManager.getInstance().shouldWaitForHandlerFailure(this, handler); + } + + shouldRequireToWaitForFailure(handler) { + if (handler === this) { + return false; + } + + return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(this, handler); + } + + shouldRecognizeSimultaneously(handler) { + if (handler === this) { + return true; + } + + return InteractionManager.getInstance().shouldRecognizeSimultaneously(this, handler); + } + + shouldBeCancelledByOther(handler) { + if (handler === this) { + return false; + } + + return InteractionManager.getInstance().shouldHandlerBeCancelledBy(this, handler); + } // + // Event actions + // + + + onPointerDown(event) { + GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this); + this.pointerType = event.pointerType; + + if (this.pointerType === PointerType.TOUCH) { + GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this); + } + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } // Adding another pointer to existing ones + + + onPointerAdd(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerUp(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } // Removing pointer, when there is more than one pointers + + + onPointerRemove(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerMove(event) { + this.tryToSendMoveEvent(false); + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerOut(event) { + if (this.shouldCancellWhenOutside) { + switch (this.currentState) { + case State.ACTIVE: + this.cancel(); + break; + + case State.BEGAN: + this.fail(); + break; + } + + return; + } + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerEnter(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerCancel(event) { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + onPointerOutOfBounds(event) { + this.tryToSendMoveEvent(true); + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + + tryToSendMoveEvent(out) { + if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) { + this.sendEvent(this.currentState, this.currentState); + } + } + + sendTouchEvent(event) { + if (!this.enabled) { + return; + } + + const { + onGestureHandlerEvent + } = this.propsRef.current; + const touchEvent = this.transformTouchEvent(event); + + if (touchEvent) { + invokeNullableMethod(onGestureHandlerEvent, touchEvent); + } + } // + // Events Sending + // + + + transformEventData(newState, oldState) { + return { + nativeEvent: { + numberOfPointers: this.tracker.getTrackedPointersCount(), + state: newState, + pointerInside: isPointerInBounds(this.view, { + x: this.tracker.getLastAvgX(), + y: this.tracker.getLastAvgY() + }), + ...this.transformNativeEvent(), + handlerTag: this.handlerTag, + target: this.ref, + oldState: newState !== oldState ? oldState : undefined + }, + timeStamp: Date.now() + }; + } + + transformTouchEvent(event) { + var _event$touchEventType; + + const rect = this.view.getBoundingClientRect(); + const all = []; + const changed = []; + const trackerData = this.tracker.getData(); // This if handles edge case where all pointers have been cancelled + // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled + // The problem is, that handler will receive another pointercancel event from the rest of the pointers + // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset + + if (trackerData.size === 0 || !trackerData.has(event.pointerId)) { + return; + } + + trackerData.forEach((element, key) => { + const id = this.tracker.getMappedTouchEventId(key); + all.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + }); // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed. + // However, if the event is cancel, we want to cancel all pointers to avoid crashes + + if (event.eventType !== EventTypes.CANCEL) { + changed.push({ + id: this.tracker.getMappedTouchEventId(event.pointerId), + x: event.x - rect.left, + y: event.y - rect.top, + absoluteX: event.x, + absoluteY: event.y + }); + } else { + trackerData.forEach((element, key) => { + const id = this.tracker.getMappedTouchEventId(key); + changed.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + }); + } + + let eventType = TouchEventType.UNDETERMINED; + + switch (event.eventType) { + case EventTypes.DOWN: + case EventTypes.ADDITIONAL_POINTER_DOWN: + eventType = TouchEventType.DOWN; + break; + + case EventTypes.UP: + case EventTypes.ADDITIONAL_POINTER_UP: + eventType = TouchEventType.UP; + break; + + case EventTypes.MOVE: + eventType = TouchEventType.MOVE; + break; + + case EventTypes.CANCEL: + eventType = TouchEventType.CANCELLED; + break; + } // Here, when we receive up event, we want to decrease number of touches + // That's because we want handler to send information that there's one pointer less + // However, we still want this pointer to be present in allTouches array, so that its data can be accessed + + + let numberOfTouches = all.length; + + if (event.eventType === EventTypes.UP || event.eventType === EventTypes.ADDITIONAL_POINTER_UP) { + --numberOfTouches; + } + + return { + nativeEvent: { + handlerTag: this.handlerTag, + state: this.currentState, + eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType, + changedTouches: changed, + allTouches: all, + numberOfTouches: numberOfTouches + }, + timeStamp: Date.now() + }; + } + + cancelTouches() { + const rect = this.view.getBoundingClientRect(); + const all = []; + const changed = []; + const trackerData = this.tracker.getData(); + + if (trackerData.size === 0) { + return; + } + + trackerData.forEach((element, key) => { + const id = this.tracker.getMappedTouchEventId(key); + all.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + changed.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY + }); + }); + const cancelEvent = { + nativeEvent: { + handlerTag: this.handlerTag, + state: this.currentState, + eventType: TouchEventType.CANCELLED, + changedTouches: changed, + allTouches: all, + numberOfTouches: all.length + }, + timeStamp: Date.now() + }; + const { + onGestureHandlerEvent + } = this.propsRef.current; + invokeNullableMethod(onGestureHandlerEvent, cancelEvent); + } + + transformNativeEvent() { + return {}; + } // + // Handling config + // + + + updateGestureConfig({ + enabled = true, + ...props + }) { + this.config = { + enabled: enabled, + ...props + }; + this.enabled = enabled; + + if (this.config.shouldCancelWhenOutside !== undefined) { + this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside); + } + + this.validateHitSlops(); + + if (this.enabled) { + return; + } + + switch (this.currentState) { + case State.ACTIVE: + this.fail(true); + break; + + case State.UNDETERMINED: + GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(this); + break; + + default: + this.cancel(true); + break; + } + } + + checkCustomActivationCriteria(criterias) { + for (const key in this.config) { + if (criterias.indexOf(key) >= 0) { + this.hasCustomActivationCriteria = true; + } + } + } + + validateHitSlops() { + if (!this.config.hitSlop) { + return; + } + + if (this.config.hitSlop.left !== undefined && this.config.hitSlop.right !== undefined && this.config.hitSlop.width !== undefined) { + throw new Error('HitSlop Error: Cannot define left, right and width at the same time'); + } + + if (this.config.hitSlop.width !== undefined && this.config.hitSlop.left === undefined && this.config.hitSlop.right === undefined) { + throw new Error('HitSlop Error: When width is defined, either left or right has to be defined'); + } + + if (this.config.hitSlop.height !== undefined && this.config.hitSlop.top !== undefined && this.config.hitSlop.bottom !== undefined) { + throw new Error('HitSlop Error: Cannot define top, bottom and height at the same time'); + } + + if (this.config.hitSlop.height !== undefined && this.config.hitSlop.top === undefined && this.config.hitSlop.bottom === undefined) { + throw new Error('HitSlop Error: When height is defined, either top or bottom has to be defined'); + } + } + + checkHitSlop() { + if (!this.config.hitSlop) { + return true; + } + + const width = this.view.getBoundingClientRect().width; + const height = this.view.getBoundingClientRect().height; + let left = 0; + let top = 0; + let right = width; + let bottom = height; + + if (this.config.hitSlop.horizontal !== undefined) { + left -= this.config.hitSlop.horizontal; + right += this.config.hitSlop.horizontal; + } + + if (this.config.hitSlop.vertical !== undefined) { + top -= this.config.hitSlop.vertical; + bottom += this.config.hitSlop.vertical; + } + + if (this.config.hitSlop.left !== undefined) { + left = -this.config.hitSlop.left; + } + + if (this.config.hitSlop.right !== undefined) { + right = width + this.config.hitSlop.right; + } + + if (this.config.hitSlop.top !== undefined) { + top = -this.config.hitSlop.top; + } + + if (this.config.hitSlop.bottom !== undefined) { + bottom = width + this.config.hitSlop.bottom; + } + + if (this.config.hitSlop.width !== undefined) { + if (this.config.hitSlop.left !== undefined) { + right = left + this.config.hitSlop.width; + } else if (this.config.hitSlop.right !== undefined) { + left = right - this.config.hitSlop.width; + } + } + + if (this.config.hitSlop.height !== undefined) { + if (this.config.hitSlop.top !== undefined) { + bottom = top + this.config.hitSlop.height; + } else if (this.config.hitSlop.bottom !== undefined) { + top = bottom - this.config.hitSlop.height; + } + } + + const rect = this.view.getBoundingClientRect(); + const offsetX = this.tracker.getLastX() - rect.left; + const offsetY = this.tracker.getLastY() - rect.top; + + if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) { + return true; + } + + return false; + } + + isPointerInBounds({ + x, + y + }) { + const rect = this.view.getBoundingClientRect(); + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + } + + resetConfig() {} // + // Getters and setters + // + + + getTag() { + return this.handlerTag; + } + + setTag(tag) { + this.handlerTag = tag; + } + + getConfig() { + return this.config; + } + + getShouldEnableGestureOnSetup() { + throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup'); + } + + getView() { + return this.view; + } + + getEventManagers() { + return this.eventManagers; + } + + getTracker() { + return this.tracker; + } + + getTrackedPointersID() { + return this.tracker.getTrackedPointersID(); + } + + getState() { + return this.currentState; + } + + isEnabled() { + return this.enabled; + } + + isFinished() { + return this.currentState === State.END || this.currentState === State.FAILED || this.currentState === State.CANCELLED; + } + + setShouldCancelWhenOutside(shouldCancel) { + this.shouldCancellWhenOutside = shouldCancel; + } + + getShouldCancelWhenOutside() { + return this.shouldCancellWhenOutside; + } + + getPointerType() { + return this.pointerType; + } + +} + +function invokeNullableMethod(method, event) { + if (!method) { + return; + } + + if (typeof method === 'function') { + method(event); + return; + } + + if ('__getHandler' in method && typeof method.__getHandler === 'function') { + const handler = method.__getHandler(); + + invokeNullableMethod(handler, event); + return; + } + + if (!('__nodeConfig' in method)) { + return; + } + + const { + argMapping + } = method.__nodeConfig; + + if (!Array.isArray(argMapping)) { + return; + } + + for (const [index, [key, value]] of argMapping.entries()) { + if (!(key in event.nativeEvent)) { + continue; + } // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + + + const nativeValue = event.nativeEvent[key]; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + + if (value !== null && value !== void 0 && value.setValue) { + //Reanimated API + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + value.setValue(nativeValue); + } else { + //RN Animated API + method.__nodeConfig.argMapping[index] = [key, nativeValue]; + } + } + + return; +} +//# sourceMappingURL=GestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js.map new file mode 100644 index 00000000..3486a515 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/GestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandler.ts"],"names":["findNodeHandle","State","PointerType","TouchEventType","EventTypes","GestureHandlerOrchestrator","InteractionManager","PointerEventManager","PointerTracker","TouchEventManager","isPointerInBounds","GestureHandler","constructor","UNDETERMINED","enabled","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","view","Error","handlerTag","style","config","userSelect","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","CANCEL","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = findNodeHandle(this.ref) as unknown as HTMLElement;\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js new file mode 100644 index 00000000..ec4e20d5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js @@ -0,0 +1,138 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import GestureHandler from './GestureHandler'; +const DEFAULT_MIN_DURATION_MS = 500; +const DEFAULT_MAX_DIST_DP = 10; +const SCALING_FACTOR = 10; +export default class LongPressGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "minDurationMs", DEFAULT_MIN_DURATION_MS); + + _defineProperty(this, "defaultMaxDistSq", DEFAULT_MAX_DIST_DP * SCALING_FACTOR); + + _defineProperty(this, "maxDistSq", this.defaultMaxDistSq); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "startTime", 0); + + _defineProperty(this, "previousTime", 0); + + _defineProperty(this, "activationTimeout", void 0); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + + this.view.oncontextmenu = () => false; + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + duration: Date.now() - this.startTime + }; + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.minDurationMs !== undefined) { + this.minDurationMs = this.config.minDurationMs; + } + + if (this.config.maxDist !== undefined) { + this.maxDistSq = this.config.maxDist * this.config.maxDist; + } + } + + resetConfig() { + super.resetConfig(); + this.minDurationMs = DEFAULT_MIN_DURATION_MS; + this.maxDistSq = this.defaultMaxDistSq; + } + + onStateChange(_newState, _oldState) { + clearTimeout(this.activationTimeout); + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.tryBegin(event); + this.tryActivate(); + this.checkDistanceFail(event); + } + + onPointerMove(event) { + super.onPointerMove(event); + this.tracker.track(event); + this.checkDistanceFail(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + tryBegin(event) { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.previousTime = Date.now(); + this.startTime = this.previousTime; + this.begin(); + this.startX = event.x; + this.startY = event.y; + } + + tryActivate() { + if (this.minDurationMs > 0) { + this.activationTimeout = setTimeout(() => { + this.activate(); + }, this.minDurationMs); + } else if (this.minDurationMs === 0) { + this.activate(); + } + } + + checkDistanceFail(event) { + const dx = event.x - this.startX; + const dy = event.y - this.startY; + const distSq = dx * dx + dy * dy; + + if (distSq <= this.maxDistSq) { + return; + } + + if (this.currentState === State.ACTIVE) { + this.cancel(); + } else { + this.fail(); + } + } + +} +//# sourceMappingURL=LongPressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js.map new file mode 100644 index 00000000..141c697e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/LongPressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["State","GestureHandler","DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","defaultMaxDistSq","init","ref","propsRef","view","oncontextmenu","transformNativeEvent","rect","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","duration","Date","now","startTime","updateGestureConfig","enabled","props","config","minDurationMs","undefined","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","startY","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject) {\n super.init(ref, propsRef);\n\n this.view.oncontextmenu = () => false;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js new file mode 100644 index 00000000..0774bfe8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js @@ -0,0 +1,54 @@ +import GestureHandler from './GestureHandler'; +export default class ManualGestureHandler extends GestureHandler { + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.begin(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + } + + onPointerMove(event) { + this.tracker.track(event); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + this.tracker.track(event); + super.onPointerOutOfBounds(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + +} +//# sourceMappingURL=ManualGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js.map new file mode 100644 index 00000000..acadf8ef --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/ManualGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ManualGestureHandler.ts"],"names":["GestureHandler","ManualGestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","onPointerDown","event","tracker","addToTracker","begin","onPointerAdd","onPointerMove","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerCancel","reset"],"mappings":"AACA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA,eAAe,MAAMC,oBAAN,SAAmCD,cAAnC,CAAkD;AACxDE,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACA,SAAKG,KAAL;AACD;;AAESC,EAAAA,YAAY,CAACJ,KAAD,EAA4B;AAChD,SAAKC,OAAL,CAAaC,YAAb,CAA0BF,KAA1B;AACA,UAAMI,YAAN,CAAmBJ,KAAnB;AACD;;AAESK,EAAAA,aAAa,CAACL,KAAD,EAA4B;AACjD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMK,aAAN,CAAoBL,KAApB;AACD;;AAESO,EAAAA,oBAAoB,CAACP,KAAD,EAA4B;AACxD,SAAKC,OAAL,CAAaK,KAAb,CAAmBN,KAAnB;AACA,UAAMO,oBAAN,CAA2BP,KAA3B;AACD;;AAESQ,EAAAA,WAAW,CAACR,KAAD,EAA4B;AAC/C,UAAMQ,WAAN,CAAkBR,KAAlB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESC,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKC,OAAL,CAAaQ,iBAAb,CAA+BT,KAAK,CAACU,SAArC;AACD;;AAESE,EAAAA,eAAe,CAACZ,KAAD,EAA4B;AACnD,UAAMY,eAAN,CAAsBZ,KAAtB;AACA,SAAKa,KAAL;AACD;;AA3C8D","sourcesContent":["import { AdaptedEvent, Config } from '../interfaces';\nimport GestureHandler from './GestureHandler';\n\nexport default class ManualGestureHandler extends GestureHandler {\n public init(ref: number, propsRef: React.RefObject) {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.begin();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tracker.track(event);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js new file mode 100644 index 00000000..45190d4e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js @@ -0,0 +1,156 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import GestureHandler from './GestureHandler'; +export default class NativeViewGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "buttonRole", void 0); + + _defineProperty(this, "shouldActivateOnStart", false); + + _defineProperty(this, "disallowInterruption", false); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "minDistSq", DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + this.setShouldCancelWhenOutside(true); + this.view.style['touchAction'] = 'auto'; //@ts-ignore Turns on defualt touch behavior on Safari + + this.view.style['WebkitTouchCallout'] = 'auto'; + + if (this.view.hasAttribute('role')) { + this.buttonRole = true; + } else { + this.buttonRole = false; + } + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.shouldActivateOnStart !== undefined) { + this.shouldActivateOnStart = this.config.shouldActivateOnStart; + } + + if (this.config.disallowInterruption !== undefined) { + this.disallowInterruption = this.config.disallowInterruption; + } + } + + resetConfig() { + super.resetConfig(); + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.newPointerAction(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.newPointerAction(); + } + + newPointerAction() { + this.startX = this.tracker.getLastAvgX(); + this.startY = this.tracker.getLastAvgY(); + + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.begin(); + + if (this.buttonRole) { + this.activate(); + } + } + + onPointerMove(event) { + this.tracker.track(event); + const dx = this.startX - this.tracker.getLastAvgX(); + const dy = this.startY - this.tracker.getLastAvgY(); + const distSq = dx * dx + dy * dy; + + if (!this.buttonRole && distSq >= this.minDistSq && this.currentState === State.BEGAN) { + this.activate(); + } + } + + onPointerOut() { + this.cancel(); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.onUp(event); + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.onUp(event); + } + + onUp(event) { + this.tracker.removeFromTracker(event.pointerId); + + if (this.tracker.getTrackedPointersCount() === 0) { + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.cancel(); + this.reset(); + } + + shouldRecognizeSimultaneously(handler) { + if (super.shouldRecognizeSimultaneously(handler)) { + return true; + } + + if (handler instanceof NativeViewGestureHandler && handler.getState() === State.ACTIVE && handler.disallowsInterruption()) { + return false; + } + + const canBeInterrupted = !this.disallowInterruption; + + if (this.currentState === State.ACTIVE && handler.getState() === State.ACTIVE && canBeInterrupted) { + return false; + } + + return this.currentState === State.ACTIVE && canBeInterrupted && handler.getTag() > 0; + } + + shouldBeCancelledByOther(_handler) { + return !this.disallowInterruption; + } + + disallowsInterruption() { + return this.disallowInterruption; + } + +} +//# sourceMappingURL=NativeViewGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js.map new file mode 100644 index 00000000..3733c63c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/NativeViewGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","NativeViewGestureHandler","init","ref","propsRef","setShouldCancelWhenOutside","view","style","hasAttribute","buttonRole","updateGestureConfig","enabled","props","config","shouldActivateOnStart","undefined","disallowInterruption","resetConfig","onPointerDown","event","tracker","addToTracker","newPointerAction","onPointerAdd","startX","getLastAvgX","startY","getLastAvgY","currentState","UNDETERMINED","begin","activate","onPointerMove","track","dx","dy","distSq","minDistSq","BEGAN","onPointerOut","cancel","onPointerUp","onUp","onPointerRemove","removeFromTracker","pointerId","getTrackedPointersCount","ACTIVE","end","fail","onPointerCancel","reset","shouldRecognizeSimultaneously","handler","getState","disallowsInterruption","canBeInterrupted","getTag","shouldBeCancelledByOther","_handler"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nexport default class NativeViewGestureHandler extends GestureHandler {\n private buttonRole!: boolean;\n\n //TODO: Implement logic for activation on start\n //@ts-ignore Logic yet to be implemented\n private shouldActivateOnStart = false;\n private disallowInterruption = false;\n\n private startX = 0;\n private startY = 0;\n private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(true);\n\n this.view.style['touchAction'] = 'auto';\n\n //@ts-ignore Turns on defualt touch behavior on Safari\n this.view.style['WebkitTouchCallout'] = 'auto';\n\n if (this.view.hasAttribute('role')) {\n this.buttonRole = true;\n } else {\n this.buttonRole = false;\n }\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.shouldActivateOnStart !== undefined) {\n this.shouldActivateOnStart = this.config.shouldActivateOnStart;\n }\n if (this.config.disallowInterruption !== undefined) {\n this.disallowInterruption = this.config.disallowInterruption;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n if (this.buttonRole) {\n this.activate();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n const dx = this.startX - this.tracker.getLastAvgX();\n const dy = this.startY - this.tracker.getLastAvgY();\n const distSq = dx * dx + dy * dy;\n\n if (\n !this.buttonRole &&\n distSq >= this.minDistSq &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n }\n\n protected onPointerOut(): void {\n this.cancel();\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.tracker.getTrackedPointersCount() === 0) {\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.cancel();\n this.reset();\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (super.shouldRecognizeSimultaneously(handler)) {\n return true;\n }\n\n if (\n handler instanceof NativeViewGestureHandler &&\n handler.getState() === State.ACTIVE &&\n handler.disallowsInterruption()\n ) {\n return false;\n }\n\n const canBeInterrupted = !this.disallowInterruption;\n\n if (\n this.currentState === State.ACTIVE &&\n handler.getState() === State.ACTIVE &&\n canBeInterrupted\n ) {\n return false;\n }\n\n return (\n this.currentState === State.ACTIVE &&\n canBeInterrupted &&\n handler.getTag() > 0\n );\n }\n\n public shouldBeCancelledByOther(_handler: GestureHandler): boolean {\n return !this.disallowInterruption;\n }\n\n public disallowsInterruption(): boolean {\n return this.disallowInterruption;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js new file mode 100644 index 00000000..5ebbf4fe --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js @@ -0,0 +1,445 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { PixelRatio } from 'react-native'; +import { State } from '../../State'; +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import GestureHandler from './GestureHandler'; +const DEFAULT_MIN_POINTERS = 1; +const DEFAULT_MAX_POINTERS = 10; +const DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP; +export default class PanGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "customActivationProperties", ['activeOffsetXStart', 'activeOffsetXEnd', 'failOffsetXStart', 'failOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd', 'failOffsetYStart', 'failOffsetYEnd', 'minVelocityX', 'minVelocityY']); + + _defineProperty(this, "velocityX", 0); + + _defineProperty(this, "velocityY", 0); + + _defineProperty(this, "minDistSq", DEFAULT_MIN_DIST_SQ); + + _defineProperty(this, "activeOffsetXStart", -Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "activeOffsetXEnd", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetXStart", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetXEnd", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "activeOffsetYStart", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "activeOffsetYEnd", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetYStart", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "failOffsetYEnd", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minVelocityX", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minVelocityY", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minVelocitySq", Number.MAX_SAFE_INTEGER); + + _defineProperty(this, "minPointers", DEFAULT_MIN_POINTERS); + + _defineProperty(this, "maxPointers", DEFAULT_MAX_POINTERS); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "offsetX", 0); + + _defineProperty(this, "offsetY", 0); + + _defineProperty(this, "lastX", 0); + + _defineProperty(this, "lastY", 0); + + _defineProperty(this, "activateAfterLongPress", 0); + + _defineProperty(this, "activationTimeout", 0); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + this.resetConfig(); + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + this.checkCustomActivationCriteria(this.customActivationProperties); + + if (this.config.minDist !== undefined) { + this.minDistSq = this.config.minDist * this.config.minDist; + } else if (this.hasCustomActivationCriteria) { + this.minDistSq = Number.MAX_SAFE_INTEGER; + } + + if (this.config.minPointers !== undefined) { + this.minPointers = this.config.minPointers; + } + + if (this.config.maxPointers !== undefined) { + this.maxPointers = this.config.maxPointers; + } + + if (this.config.minVelocity !== undefined) { + this.minVelocityX = this.config.minVelocity; + this.minVelocityY = this.config.minVelocity; + } + + if (this.config.minVelocityX !== undefined) { + this.minVelocityX = this.config.minVelocityX; + } + + if (this.config.minVelocityY !== undefined) { + this.minVelocityY = this.config.minVelocityY; + } + + if (this.config.activateAfterLongPress !== undefined) { + this.activateAfterLongPress = this.config.activateAfterLongPress; + } + + if (this.config.activeOffsetXStart !== undefined) { + this.activeOffsetXStart = this.config.activeOffsetXStart; + + if (this.config.activeOffsetXEnd === undefined) { + this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetXEnd !== undefined) { + this.activeOffsetXEnd = this.config.activeOffsetXEnd; + + if (this.config.activeOffsetXStart === undefined) { + this.activeOffsetXStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.failOffsetXStart !== undefined) { + this.failOffsetXStart = this.config.failOffsetXStart; + + if (this.config.failOffsetXEnd === undefined) { + this.failOffsetXEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.failOffsetXEnd !== undefined) { + this.failOffsetXEnd = this.config.failOffsetXEnd; + + if (this.config.failOffsetXStart === undefined) { + this.failOffsetXStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetYStart !== undefined) { + this.activeOffsetYStart = this.config.activeOffsetYStart; + + if (this.config.activeOffsetYEnd === undefined) { + this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetYEnd !== undefined) { + this.activeOffsetYEnd = this.config.activeOffsetYEnd; + + if (this.config.activeOffsetYStart === undefined) { + this.activeOffsetYStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.failOffsetYStart !== undefined) { + this.failOffsetYStart = this.config.failOffsetYStart; + + if (this.config.failOffsetYEnd === undefined) { + this.failOffsetYEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.failOffsetYEnd !== undefined) { + this.failOffsetYEnd = this.config.failOffsetYEnd; + + if (this.config.failOffsetYStart === undefined) { + this.failOffsetYStart = Number.MIN_SAFE_INTEGER; + } + } + } + + resetConfig() { + super.resetConfig(); + this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER; + this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER; + this.failOffsetXStart = Number.MIN_SAFE_INTEGER; + this.failOffsetXEnd = Number.MAX_SAFE_INTEGER; + this.activeOffsetYStart = Number.MAX_SAFE_INTEGER; + this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER; + this.failOffsetYStart = Number.MIN_SAFE_INTEGER; + this.failOffsetYEnd = Number.MAX_SAFE_INTEGER; + this.minVelocityX = Number.MAX_SAFE_INTEGER; + this.minVelocityY = Number.MAX_SAFE_INTEGER; + this.minVelocitySq = Number.MAX_SAFE_INTEGER; + this.minDistSq = DEFAULT_MIN_DIST_SQ; + this.minPointers = DEFAULT_MIN_POINTERS; + this.maxPointers = DEFAULT_MAX_POINTERS; + this.activateAfterLongPress = 0; + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + const ratio = PixelRatio.get(); + const translationX = this.getTranslationX(); + const translationY = this.getTranslationY(); + return { + translationX: isNaN(translationX) ? 0 : translationX, + translationY: isNaN(translationY) ? 0 : translationY, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + velocityX: this.velocityX * ratio * 10, + velocityY: this.velocityY * ratio * 10, + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top + }; + } + + getTranslationX() { + return this.lastX - this.startX + this.offsetX; + } + + getTranslationY() { + return this.lastY - this.startY + this.offsetY; + } + + clearActivationTimeout() { + clearTimeout(this.activationTimeout); + } //EventsHandling + + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.tryBegin(event); + this.checkBegan(); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(event); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.lastX; + this.startY = this.lastY; + + if (this.tracker.getTrackedPointersCount() > this.maxPointers) { + if (this.currentState === State.ACTIVE) { + this.cancel(); + } else { + this.fail(); + } + } else { + this.checkBegan(); + } + } + + onPointerUp(event) { + super.onPointerUp(event); + + if (this.currentState === State.ACTIVE) { + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + } + + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.resetProgress(); + this.fail(); + } + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.lastX; + this.startY = this.lastY; + + if (!(this.currentState === State.ACTIVE && this.tracker.getTrackedPointersCount() < this.minPointers)) { + this.checkBegan(); + } + } + + onPointerMove(event) { + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + this.checkBegan(); + super.onPointerMove(event); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + + onPointerOutOfBounds(event) { + if (this.getShouldCancelWhenOutside()) { + return; + } + + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + this.checkBegan(); + + if (this.currentState === State.ACTIVE) { + super.onPointerOutOfBounds(event); + } + } + + shouldActivate() { + const dx = this.getTranslationX(); + + if (this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER && dx < this.activeOffsetXStart) { + return true; + } + + if (this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER && dx > this.activeOffsetXEnd) { + return true; + } + + const dy = this.getTranslationY(); + + if (this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER && dy < this.activeOffsetYStart) { + return true; + } + + if (this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER && dy > this.activeOffsetYEnd) { + return true; + } + + const distanceSq = dx * dx + dy * dy; + + if (this.minDistSq !== Number.MAX_SAFE_INTEGER && distanceSq >= this.minDistSq) { + return true; + } + + const vx = this.velocityX; + + if (this.minVelocityX !== Number.MAX_SAFE_INTEGER && (this.minVelocityX < 0 && vx <= this.minVelocityX || this.minVelocityX >= 0 && this.minVelocityX <= vx)) { + return true; + } + + const vy = this.velocityY; + + if (this.minVelocityY !== Number.MAX_SAFE_INTEGER && (this.minVelocityY < 0 && vy <= this.minVelocityY || this.minVelocityY >= 0 && this.minVelocityY <= vy)) { + return true; + } + + const velocitySq = vx * vx + vy * vy; + return this.minVelocitySq !== Number.MAX_SAFE_INTEGER && velocitySq >= this.minVelocitySq; + } + + shouldFail() { + const dx = this.getTranslationX(); + const dy = this.getTranslationY(); + const distanceSq = dx * dx + dy * dy; + + if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) { + this.clearActivationTimeout(); + return true; + } + + if (this.failOffsetXStart !== Number.MIN_SAFE_INTEGER && dx < this.failOffsetXStart) { + return true; + } + + if (this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER && dx > this.failOffsetXEnd) { + return true; + } + + if (this.failOffsetYStart !== Number.MIN_SAFE_INTEGER && dy < this.failOffsetYStart) { + return true; + } + + return this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER && dy > this.failOffsetYEnd; + } + + tryBegin(event) { + if (this.currentState === State.UNDETERMINED && this.tracker.getTrackedPointersCount() >= this.minPointers) { + this.resetProgress(); + this.offsetX = 0; + this.offsetY = 0; + this.velocityX = 0; + this.velocityY = 0; + this.begin(); + + if (this.activateAfterLongPress > 0) { + this.activationTimeout = setTimeout(() => { + this.activate(); + }, this.activateAfterLongPress); + } + } else { + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + } + } + + checkBegan() { + if (this.currentState === State.BEGAN) { + if (this.shouldFail()) { + this.fail(); + } else if (this.shouldActivate()) { + this.activate(); + } + } + } + + activate(force = false) { + if (this.currentState !== State.ACTIVE) { + this.resetProgress(); + } + + super.activate(force); + } + + onCancel() { + this.clearActivationTimeout(); + } + + onReset() { + this.clearActivationTimeout(); + } + + resetProgress() { + if (this.currentState === State.ACTIVE) { + return; + } + + this.startX = this.lastX; + this.startY = this.lastY; + } + +} +//# sourceMappingURL=PanGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js.map new file mode 100644 index 00000000..b69f7ba2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PanGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PanGestureHandler.ts"],"names":["PixelRatio","State","DEFAULT_TOUCH_SLOP","GestureHandler","DEFAULT_MIN_POINTERS","DEFAULT_MAX_POINTERS","DEFAULT_MIN_DIST_SQ","PanGestureHandler","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","resetConfig","checkCustomActivationCriteria","customActivationProperties","config","minDist","undefined","minDistSq","hasCustomActivationCriteria","minPointers","maxPointers","minVelocity","minVelocityX","minVelocityY","activateAfterLongPress","activeOffsetXStart","activeOffsetXEnd","failOffsetXStart","failOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","failOffsetYStart","failOffsetYEnd","minVelocitySq","transformNativeEvent","rect","view","getBoundingClientRect","ratio","get","translationX","getTranslationX","translationY","getTranslationY","isNaN","absoluteX","tracker","getLastAvgX","absoluteY","getLastAvgY","velocityX","velocityY","x","left","y","top","lastX","startX","offsetX","lastY","startY","offsetY","clearActivationTimeout","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","checkBegan","onPointerAdd","getTrackedPointersCount","currentState","ACTIVE","cancel","fail","onPointerUp","removeFromTracker","pointerId","end","resetProgress","onPointerRemove","onPointerMove","track","getVelocityX","getVelocityY","onPointerCancel","reset","onPointerOutOfBounds","getShouldCancelWhenOutside","shouldActivate","dx","dy","distanceSq","vx","vy","velocitySq","shouldFail","UNDETERMINED","begin","setTimeout","activate","BEGAN","force","onCancel","onReset"],"mappings":"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","sourcesContent":["import { PixelRatio } from 'react-native';\nimport { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_POINTERS = 1;\nconst DEFAULT_MAX_POINTERS = 10;\nconst DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP;\n\nexport default class PanGestureHandler extends GestureHandler {\n private readonly customActivationProperties: string[] = [\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'failOffsetXStart',\n 'failOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n 'failOffsetYStart',\n 'failOffsetYEnd',\n 'minVelocityX',\n 'minVelocityY',\n ];\n\n public velocityX = 0;\n public velocityY = 0;\n\n private minDistSq = DEFAULT_MIN_DIST_SQ;\n\n private activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n private activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetXStart = Number.MIN_SAFE_INTEGER;\n private failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n private activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n private activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n private failOffsetYStart = Number.MIN_SAFE_INTEGER;\n private failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n private minVelocityX = Number.MAX_SAFE_INTEGER;\n private minVelocityY = Number.MAX_SAFE_INTEGER;\n private minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n private minPointers = DEFAULT_MIN_POINTERS;\n private maxPointers = DEFAULT_MAX_POINTERS;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private activateAfterLongPress = 0;\n private activationTimeout = 0;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.resetConfig();\n\n super.updateGestureConfig({ enabled: enabled, ...props });\n this.checkCustomActivationCriteria(this.customActivationProperties);\n\n if (this.config.minDist !== undefined) {\n this.minDistSq = this.config.minDist * this.config.minDist;\n } else if (this.hasCustomActivationCriteria) {\n this.minDistSq = Number.MAX_SAFE_INTEGER;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minPointers = this.config.minPointers;\n }\n\n if (this.config.maxPointers !== undefined) {\n this.maxPointers = this.config.maxPointers;\n }\n\n if (this.config.minVelocity !== undefined) {\n this.minVelocityX = this.config.minVelocity;\n this.minVelocityY = this.config.minVelocity;\n }\n\n if (this.config.minVelocityX !== undefined) {\n this.minVelocityX = this.config.minVelocityX;\n }\n\n if (this.config.minVelocityY !== undefined) {\n this.minVelocityY = this.config.minVelocityY;\n }\n\n if (this.config.activateAfterLongPress !== undefined) {\n this.activateAfterLongPress = this.config.activateAfterLongPress;\n }\n\n if (this.config.activeOffsetXStart !== undefined) {\n this.activeOffsetXStart = this.config.activeOffsetXStart;\n\n if (this.config.activeOffsetXEnd === undefined) {\n this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetXEnd !== undefined) {\n this.activeOffsetXEnd = this.config.activeOffsetXEnd;\n\n if (this.config.activeOffsetXStart === undefined) {\n this.activeOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXStart !== undefined) {\n this.failOffsetXStart = this.config.failOffsetXStart;\n\n if (this.config.failOffsetXEnd === undefined) {\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetXEnd !== undefined) {\n this.failOffsetXEnd = this.config.failOffsetXEnd;\n\n if (this.config.failOffsetXStart === undefined) {\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYStart !== undefined) {\n this.activeOffsetYStart = this.config.activeOffsetYStart;\n\n if (this.config.activeOffsetYEnd === undefined) {\n this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.activeOffsetYEnd !== undefined) {\n this.activeOffsetYEnd = this.config.activeOffsetYEnd;\n\n if (this.config.activeOffsetYStart === undefined) {\n this.activeOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYStart !== undefined) {\n this.failOffsetYStart = this.config.failOffsetYStart;\n\n if (this.config.failOffsetYEnd === undefined) {\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n }\n }\n\n if (this.config.failOffsetYEnd !== undefined) {\n this.failOffsetYEnd = this.config.failOffsetYEnd;\n\n if (this.config.failOffsetYStart === undefined) {\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n }\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER;\n this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetXStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetXEnd = Number.MAX_SAFE_INTEGER;\n\n this.activeOffsetYStart = Number.MAX_SAFE_INTEGER;\n this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER;\n this.failOffsetYStart = Number.MIN_SAFE_INTEGER;\n this.failOffsetYEnd = Number.MAX_SAFE_INTEGER;\n\n this.minVelocityX = Number.MAX_SAFE_INTEGER;\n this.minVelocityY = Number.MAX_SAFE_INTEGER;\n this.minVelocitySq = Number.MAX_SAFE_INTEGER;\n\n this.minDistSq = DEFAULT_MIN_DIST_SQ;\n\n this.minPointers = DEFAULT_MIN_POINTERS;\n this.maxPointers = DEFAULT_MAX_POINTERS;\n\n this.activateAfterLongPress = 0;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n const ratio = PixelRatio.get();\n\n const translationX: number = this.getTranslationX();\n const translationY: number = this.getTranslationY();\n\n return {\n translationX: isNaN(translationX) ? 0 : translationX,\n translationY: isNaN(translationY) ? 0 : translationY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n velocityX: this.velocityX * ratio * 10,\n velocityY: this.velocityY * ratio * 10,\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n };\n }\n\n private getTranslationX(): number {\n return this.lastX - this.startX + this.offsetX;\n }\n private getTranslationY(): number {\n return this.lastY - this.startY + this.offsetY;\n }\n\n private clearActivationTimeout(): void {\n clearTimeout(this.activationTimeout);\n }\n\n //EventsHandling\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tryBegin(event);\n this.checkBegan();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (this.tracker.getTrackedPointersCount() > this.maxPointers) {\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n } else {\n this.checkBegan();\n }\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n\n if (this.currentState === State.ACTIVE) {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.resetProgress();\n this.fail();\n }\n }\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n if (\n !(\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < this.minPointers\n )\n ) {\n this.checkBegan();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n super.onPointerMove(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.getShouldCancelWhenOutside()) {\n return;\n }\n\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n\n this.checkBegan();\n\n if (this.currentState === State.ACTIVE) {\n super.onPointerOutOfBounds(event);\n }\n }\n\n private shouldActivate(): boolean {\n const dx: number = this.getTranslationX();\n\n if (\n this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER &&\n dx < this.activeOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER &&\n dx > this.activeOffsetXEnd\n ) {\n return true;\n }\n\n const dy: number = this.getTranslationY();\n\n if (\n this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER &&\n dy < this.activeOffsetYStart\n ) {\n return true;\n }\n\n if (\n this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER &&\n dy > this.activeOffsetYEnd\n ) {\n return true;\n }\n\n const distanceSq: number = dx * dx + dy * dy;\n\n if (\n this.minDistSq !== Number.MAX_SAFE_INTEGER &&\n distanceSq >= this.minDistSq\n ) {\n return true;\n }\n\n const vx: number = this.velocityX;\n\n if (\n this.minVelocityX !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityX < 0 && vx <= this.minVelocityX) ||\n (this.minVelocityX >= 0 && this.minVelocityX <= vx))\n ) {\n return true;\n }\n\n const vy: number = this.velocityY;\n if (\n this.minVelocityY !== Number.MAX_SAFE_INTEGER &&\n ((this.minVelocityY < 0 && vy <= this.minVelocityY) ||\n (this.minVelocityY >= 0 && this.minVelocityY <= vy))\n ) {\n return true;\n }\n\n const velocitySq: number = vx * vx + vy * vy;\n\n return (\n this.minVelocitySq !== Number.MAX_SAFE_INTEGER &&\n velocitySq >= this.minVelocitySq\n );\n }\n\n private shouldFail(): boolean {\n const dx: number = this.getTranslationX();\n const dy: number = this.getTranslationY();\n const distanceSq = dx * dx + dy * dy;\n\n if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) {\n this.clearActivationTimeout();\n return true;\n }\n\n if (\n this.failOffsetXStart !== Number.MIN_SAFE_INTEGER &&\n dx < this.failOffsetXStart\n ) {\n return true;\n }\n\n if (\n this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER &&\n dx > this.failOffsetXEnd\n ) {\n return true;\n }\n\n if (\n this.failOffsetYStart !== Number.MIN_SAFE_INTEGER &&\n dy < this.failOffsetYStart\n ) {\n return true;\n }\n\n return (\n this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER &&\n dy > this.failOffsetYEnd\n );\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (\n this.currentState === State.UNDETERMINED &&\n this.tracker.getTrackedPointersCount() >= this.minPointers\n ) {\n this.resetProgress();\n this.offsetX = 0;\n this.offsetY = 0;\n this.velocityX = 0;\n this.velocityY = 0;\n\n this.begin();\n\n if (this.activateAfterLongPress > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.activateAfterLongPress);\n }\n } else {\n this.velocityX = this.tracker.getVelocityX(event.pointerId);\n this.velocityY = this.tracker.getVelocityY(event.pointerId);\n }\n }\n\n private checkBegan(): void {\n if (this.currentState === State.BEGAN) {\n if (this.shouldFail()) {\n this.fail();\n } else if (this.shouldActivate()) {\n this.activate();\n }\n }\n }\n\n public activate(force = false): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onCancel(): void {\n this.clearActivationTimeout();\n }\n\n protected onReset(): void {\n this.clearActivationTimeout();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js new file mode 100644 index 00000000..ade0d469 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js @@ -0,0 +1,164 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import GestureHandler from './GestureHandler'; +import ScaleGestureDetector from '../detectors/ScaleGestureDetector'; +export default class PinchGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "scale", 1); + + _defineProperty(this, "velocity", 0); + + _defineProperty(this, "startingSpan", 0); + + _defineProperty(this, "spanSlop", DEFAULT_TOUCH_SLOP); + + _defineProperty(this, "scaleDetectorListener", { + onScaleBegin: detector => { + this.startingSpan = detector.getCurrentSpan(); + return true; + }, + onScale: detector => { + const prevScaleFactor = this.scale; + this.scale *= detector.getScaleFactor(this.tracker.getTrackedPointersCount()); + const delta = detector.getTimeDelta(); + + if (delta > 0) { + this.velocity = (this.scale - prevScaleFactor) / delta; + } + + if (Math.abs(this.startingSpan - detector.getCurrentSpan()) >= this.spanSlop && this.currentState === State.BEGAN) { + this.activate(); + } + + return true; + }, + onScaleEnd: _detector => {} + }); + + _defineProperty(this, "scaleGestureDetector", new ScaleGestureDetector(this.scaleDetectorListener)); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + this.setShouldCancelWhenOutside(false); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + } + + transformNativeEvent() { + return { + focalX: this.scaleGestureDetector.getFocusX(), + focalY: this.scaleGestureDetector.getFocusY(), + velocity: this.velocity, + scale: this.scale + }; + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState !== State.ACTIVE) { + return; + } + + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === State.ACTIVE && this.tracker.getTrackedPointersCount() < 2) { + this.end(); + } + } + + onPointerMove(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + this.tracker.track(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + this.tracker.track(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerOutOfBounds(event); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.reset(); + } + + tryBegin() { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.resetProgress(); + this.begin(); + } + + activate(force) { + if (this.currentState !== State.ACTIVE) { + this.resetProgress(); + } + + super.activate(force); + } + + onReset() { + this.resetProgress(); + } + + resetProgress() { + if (this.currentState === State.ACTIVE) { + return; + } + + this.velocity = 0; + this.scale = 1; + } + +} +//# sourceMappingURL=PinchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js.map new file mode 100644 index 00000000..953c4a11 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/PinchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PinchGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","ScaleGestureDetector","PinchGestureHandler","onScaleBegin","detector","startingSpan","getCurrentSpan","onScale","prevScaleFactor","scale","getScaleFactor","tracker","getTrackedPointersCount","delta","getTimeDelta","velocity","Math","abs","spanSlop","currentState","BEGAN","activate","onScaleEnd","_detector","scaleDetectorListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","focalX","scaleGestureDetector","getFocusX","focalY","getFocusY","onPointerDown","event","addToTracker","onPointerAdd","tryBegin","onTouchEvent","onPointerUp","removeFromTracker","pointerId","ACTIVE","end","fail","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","reset","UNDETERMINED","resetProgress","begin","force","onReset"],"mappings":";;AAAA,SAASA,KAAT,QAAsB,aAAtB;AACA,SAASC,kBAAT,QAAmC,cAAnC;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,OAAOC,oBAAP,MAEO,mCAFP;AAIA,eAAe,MAAMC,mBAAN,SAAkCF,cAAlC,CAAiD;AAAA;AAAA;;AAAA,mCAC9C,CAD8C;;AAAA,sCAE3C,CAF2C;;AAAA,0CAIvC,CAJuC;;AAAA,sCAK3CD,kBAL2C;;AAAA,mDAOR;AACpDI,MAAAA,YAAY,EAAGC,QAAD,IAA6C;AACzD,aAAKC,YAAL,GAAoBD,QAAQ,CAACE,cAAT,EAApB;AACA,eAAO,IAAP;AACD,OAJmD;AAKpDC,MAAAA,OAAO,EAAGH,QAAD,IAA6C;AACpD,cAAMI,eAAuB,GAAG,KAAKC,KAArC;AACA,aAAKA,KAAL,IAAcL,QAAQ,CAACM,cAAT,CACZ,KAAKC,OAAL,CAAaC,uBAAb,EADY,CAAd;AAIA,cAAMC,KAAK,GAAGT,QAAQ,CAACU,YAAT,EAAd;;AACA,YAAID,KAAK,GAAG,CAAZ,EAAe;AACb,eAAKE,QAAL,GAAgB,CAAC,KAAKN,KAAL,GAAaD,eAAd,IAAiCK,KAAjD;AACD;;AAED,YACEG,IAAI,CAACC,GAAL,CAAS,KAAKZ,YAAL,GAAoBD,QAAQ,CAACE,cAAT,EAA7B,KACE,KAAKY,QADP,IAEA,KAAKC,YAAL,KAAsBrB,KAAK,CAACsB,KAH9B,EAIE;AACA,eAAKC,QAAL;AACD;;AACD,eAAO,IAAP;AACD,OAxBmD;AAyBpDC,MAAAA,UAAU,EACRC,SADU,IAGD,CAAE;AA5BuC,KAPQ;;AAAA,kDAsCT,IAAItB,oBAAJ,CACnD,KAAKuB,qBAD8C,CAtCS;AAAA;;AA0CvDC,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAkD;AAC3D,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AAEA,SAAKC,0BAAL,CAAgC,KAAhC;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AACD;;AAESC,EAAAA,oBAAoB,GAAG;AAC/B,WAAO;AACLC,MAAAA,MAAM,EAAE,KAAKC,oBAAL,CAA0BC,SAA1B,EADH;AAELC,MAAAA,MAAM,EAAE,KAAKF,oBAAL,CAA0BG,SAA1B,EAFH;AAGLtB,MAAAA,QAAQ,EAAE,KAAKA,QAHV;AAILN,MAAAA,KAAK,EAAE,KAAKA;AAJP,KAAP;AAMD;;AAES6B,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAK5B,OAAL,CAAa6B,YAAb,CAA0BD,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AACD;;AAESE,EAAAA,YAAY,CAACF,KAAD,EAA4B;AAChD,SAAK5B,OAAL,CAAa6B,YAAb,CAA0BD,KAA1B;AACA,UAAME,YAAN,CAAmBF,KAAnB;AACA,SAAKG,QAAL;AACA,SAAKR,oBAAL,CAA0BS,YAA1B,CAAuCJ,KAAvC,EAA8C,KAAK5B,OAAnD;AACD;;AAESiC,EAAAA,WAAW,CAACL,KAAD,EAA4B;AAC/C,UAAMK,WAAN,CAAkBL,KAAlB;AACA,SAAK5B,OAAL,CAAakC,iBAAb,CAA+BN,KAAK,CAACO,SAArC;;AACA,QAAI,KAAK3B,YAAL,KAAsBrB,KAAK,CAACiD,MAAhC,EAAwC;AACtC;AACD;;AACD,SAAKb,oBAAL,CAA0BS,YAA1B,CAAuCJ,KAAvC,EAA8C,KAAK5B,OAAnD;;AAEA,QAAI,KAAKQ,YAAL,KAAsBrB,KAAK,CAACiD,MAAhC,EAAwC;AACtC,WAAKC,GAAL;AACD,KAFD,MAEO;AACL,WAAKC,IAAL;AACD;AACF;;AAESC,EAAAA,eAAe,CAACX,KAAD,EAA4B;AACnD,UAAMW,eAAN,CAAsBX,KAAtB;AACA,SAAKL,oBAAL,CAA0BS,YAA1B,CAAuCJ,KAAvC,EAA8C,KAAK5B,OAAnD;AACA,SAAKA,OAAL,CAAakC,iBAAb,CAA+BN,KAAK,CAACO,SAArC;;AAEA,QACE,KAAK3B,YAAL,KAAsBrB,KAAK,CAACiD,MAA5B,IACA,KAAKpC,OAAL,CAAaC,uBAAb,KAAyC,CAF3C,EAGE;AACA,WAAKoC,GAAL;AACD;AACF;;AAESG,EAAAA,aAAa,CAACZ,KAAD,EAA4B;AACjD,QAAI,KAAK5B,OAAL,CAAaC,uBAAb,KAAyC,CAA7C,EAAgD;AAC9C;AACD;;AACD,SAAKD,OAAL,CAAayC,KAAb,CAAmBb,KAAnB;AAEA,SAAKL,oBAAL,CAA0BS,YAA1B,CAAuCJ,KAAvC,EAA8C,KAAK5B,OAAnD;AACA,UAAMwC,aAAN,CAAoBZ,KAApB;AACD;;AACSc,EAAAA,oBAAoB,CAACd,KAAD,EAA4B;AACxD,QAAI,KAAK5B,OAAL,CAAaC,uBAAb,KAAyC,CAA7C,EAAgD;AAC9C;AACD;;AACD,SAAKD,OAAL,CAAayC,KAAb,CAAmBb,KAAnB;AAEA,SAAKL,oBAAL,CAA0BS,YAA1B,CAAuCJ,KAAvC,EAA8C,KAAK5B,OAAnD;AACA,UAAM0C,oBAAN,CAA2Bd,KAA3B;AACD;;AAESe,EAAAA,eAAe,CAACf,KAAD,EAA4B;AACnD,UAAMe,eAAN,CAAsBf,KAAtB;AACA,SAAKgB,KAAL;AACD;;AAEOb,EAAAA,QAAQ,GAAS;AACvB,QAAI,KAAKvB,YAAL,KAAsBrB,KAAK,CAAC0D,YAAhC,EAA8C;AAC5C;AACD;;AAED,SAAKC,aAAL;AACA,SAAKC,KAAL;AACD;;AAEMrC,EAAAA,QAAQ,CAACsC,KAAD,EAAwB;AACrC,QAAI,KAAKxC,YAAL,KAAsBrB,KAAK,CAACiD,MAAhC,EAAwC;AACtC,WAAKU,aAAL;AACD;;AAED,UAAMpC,QAAN,CAAesC,KAAf;AACD;;AAESC,EAAAA,OAAO,GAAS;AACxB,SAAKH,aAAL;AACD;;AAESA,EAAAA,aAAa,GAAS;AAC9B,QAAI,KAAKtC,YAAL,KAAsBrB,KAAK,CAACiD,MAAhC,EAAwC;AACtC;AACD;;AACD,SAAKhC,QAAL,GAAgB,CAAhB;AACA,SAAKN,KAAL,GAAa,CAAb;AACD;;AAxJ6D","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport ScaleGestureDetector, {\n ScaleGestureListener,\n} from '../detectors/ScaleGestureDetector';\n\nexport default class PinchGestureHandler extends GestureHandler {\n private scale = 1;\n private velocity = 0;\n\n private startingSpan = 0;\n private spanSlop = DEFAULT_TOUCH_SLOP;\n\n private scaleDetectorListener: ScaleGestureListener = {\n onScaleBegin: (detector: ScaleGestureDetector): boolean => {\n this.startingSpan = detector.getCurrentSpan();\n return true;\n },\n onScale: (detector: ScaleGestureDetector): boolean => {\n const prevScaleFactor: number = this.scale;\n this.scale *= detector.getScaleFactor(\n this.tracker.getTrackedPointersCount()\n );\n\n const delta = detector.getTimeDelta();\n if (delta > 0) {\n this.velocity = (this.scale - prevScaleFactor) / delta;\n }\n\n if (\n Math.abs(this.startingSpan - detector.getCurrentSpan()) >=\n this.spanSlop &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n return true;\n },\n onScaleEnd: (\n _detector: ScaleGestureDetector\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ): void => {},\n };\n\n private scaleGestureDetector: ScaleGestureDetector = new ScaleGestureDetector(\n this.scaleDetectorListener\n );\n\n public init(ref: number, propsRef: React.RefObject) {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected transformNativeEvent() {\n return {\n focalX: this.scaleGestureDetector.getFocusX(),\n focalY: this.scaleGestureDetector.getFocusY(),\n velocity: this.velocity,\n scale: this.scale,\n };\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin();\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < 2\n ) {\n this.end();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n super.onPointerMove(event);\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n\n private tryBegin(): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.resetProgress();\n this.begin();\n }\n\n public activate(force?: boolean): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onReset(): void {\n this.resetProgress();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n this.velocity = 0;\n this.scale = 1;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js new file mode 100644 index 00000000..f41a4f84 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js @@ -0,0 +1,177 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import GestureHandler from './GestureHandler'; +import RotationGestureDetector from '../detectors/RotationGestureDetector'; +const ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36; +export default class RotationGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "rotation", 0); + + _defineProperty(this, "velocity", 0); + + _defineProperty(this, "cachedAnchorX", 0); + + _defineProperty(this, "cachedAnchorY", 0); + + _defineProperty(this, "rotationGestureListener", { + onRotationBegin: _detector => true, + onRotation: detector => { + const previousRotation = this.rotation; + this.rotation += detector.getRotation(); + const delta = detector.getTimeDelta(); + + if (delta > 0) { + this.velocity = (this.rotation - previousRotation) / delta; + } + + if (Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD && this.currentState === State.BEGAN) { + this.activate(); + } + + return true; + }, + onRotationEnd: _detector => { + this.end(); + } + }); + + _defineProperty(this, "rotationGestureDetector", new RotationGestureDetector(this.rotationGestureListener)); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + this.setShouldCancelWhenOutside(false); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + } + + transformNativeEvent() { + return { + rotation: this.rotation ? this.rotation : 0, + anchorX: this.getAnchorX(), + anchorY: this.getAnchorY(), + velocity: this.velocity ? this.velocity : 0 + }; + } + + getAnchorX() { + const anchorX = this.rotationGestureDetector.getAnchorX(); + return anchorX ? anchorX : this.cachedAnchorX; + } + + getAnchorY() { + const anchorY = this.rotationGestureDetector.getAnchorY(); + return anchorY ? anchorY : this.cachedAnchorY; + } + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + } + + onPointerAdd(event) { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + } + + onPointerMove(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + if (this.getAnchorX()) { + this.cachedAnchorX = this.getAnchorX(); + } + + if (this.getAnchorY()) { + this.cachedAnchorY = this.getAnchorY(); + } + + this.tracker.track(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + if (this.getAnchorX()) { + this.cachedAnchorX = this.getAnchorX(); + } + + if (this.getAnchorY()) { + this.cachedAnchorY = this.getAnchorY(); + } + + this.tracker.track(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerOutOfBounds(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + + if (this.currentState !== State.ACTIVE) { + return; + } + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + this.tracker.removeFromTracker(event.pointerId); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.end(); + this.reset(); + } + + tryBegin() { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.begin(); + } + + activate(_force) { + super.activate(); + } + + onReset() { + if (this.currentState === State.ACTIVE) { + return; + } + + this.rotation = 0; + this.velocity = 0; + this.rotationGestureDetector.reset(); + } + +} +//# sourceMappingURL=RotationGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js.map new file mode 100644 index 00000000..88db35d4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/RotationGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureHandler.ts"],"names":["State","GestureHandler","RotationGestureDetector","ROTATION_RECOGNITION_THRESHOLD","Math","PI","RotationGestureHandler","onRotationBegin","_detector","onRotation","detector","previousRotation","rotation","getRotation","delta","getTimeDelta","velocity","abs","currentState","BEGAN","activate","onRotationEnd","end","rotationGestureListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","anchorX","getAnchorX","anchorY","getAnchorY","rotationGestureDetector","cachedAnchorX","cachedAnchorY","onPointerDown","event","tracker","addToTracker","onPointerAdd","tryBegin","onTouchEvent","onPointerMove","getTrackedPointersCount","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","ACTIVE","fail","onPointerRemove","onPointerCancel","reset","UNDETERMINED","begin","_force","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport RotationGestureDetector, {\n RotationGestureListener,\n} from '../detectors/RotationGestureDetector';\n\nconst ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36;\n\nexport default class RotationGestureHandler extends GestureHandler {\n private rotation = 0;\n private velocity = 0;\n\n private cachedAnchorX = 0;\n private cachedAnchorY = 0;\n\n private rotationGestureListener: RotationGestureListener = {\n onRotationBegin: (_detector: RotationGestureDetector): boolean => true,\n onRotation: (detector: RotationGestureDetector): boolean => {\n const previousRotation: number = this.rotation;\n this.rotation += detector.getRotation();\n\n const delta = detector.getTimeDelta();\n\n if (delta > 0) {\n this.velocity = (this.rotation - previousRotation) / delta;\n }\n\n if (\n Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n\n return true;\n },\n onRotationEnd: (_detector: RotationGestureDetector): void => {\n this.end();\n },\n };\n\n private rotationGestureDetector: RotationGestureDetector =\n new RotationGestureDetector(this.rotationGestureListener);\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected transformNativeEvent() {\n return {\n rotation: this.rotation ? this.rotation : 0,\n anchorX: this.getAnchorX(),\n anchorY: this.getAnchorY(),\n velocity: this.velocity ? this.velocity : 0,\n };\n }\n\n public getAnchorX(): number {\n const anchorX = this.rotationGestureDetector.getAnchorX();\n\n return anchorX ? anchorX : this.cachedAnchorX;\n }\n\n public getAnchorY(): number {\n const anchorY = this.rotationGestureDetector.getAnchorY();\n\n return anchorY ? anchorY : this.cachedAnchorY;\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n\n this.tryBegin();\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.end();\n\n this.reset();\n }\n\n protected tryBegin(): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n }\n\n public activate(_force?: boolean): void {\n super.activate();\n }\n\n protected onReset(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.rotation = 0;\n this.velocity = 0;\n this.rotationGestureDetector.reset();\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js new file mode 100644 index 00000000..4e789d22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js @@ -0,0 +1,281 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import { EventTypes } from '../interfaces'; +import GestureHandler from './GestureHandler'; +const DEFAULT_MAX_DURATION_MS = 500; +const DEFAULT_MAX_DELAY_MS = 500; +const DEFAULT_NUMBER_OF_TAPS = 1; +const DEFAULT_MIN_NUMBER_OF_POINTERS = 1; +export default class TapGestureHandler extends GestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "maxDeltaX", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "maxDeltaY", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "maxDistSq", Number.MIN_SAFE_INTEGER); + + _defineProperty(this, "maxDurationMs", DEFAULT_MAX_DURATION_MS); + + _defineProperty(this, "maxDelayMs", DEFAULT_MAX_DELAY_MS); + + _defineProperty(this, "numberOfTaps", DEFAULT_NUMBER_OF_TAPS); + + _defineProperty(this, "minNumberOfPointers", DEFAULT_MIN_NUMBER_OF_POINTERS); + + _defineProperty(this, "currentMaxNumberOfPointers", 1); + + _defineProperty(this, "startX", 0); + + _defineProperty(this, "startY", 0); + + _defineProperty(this, "offsetX", 0); + + _defineProperty(this, "offsetY", 0); + + _defineProperty(this, "lastX", 0); + + _defineProperty(this, "lastY", 0); + + _defineProperty(this, "waitTimeout", void 0); + + _defineProperty(this, "delayTimeout", void 0); + + _defineProperty(this, "tapsSoFar", 0); + } + + init(ref, propsRef) { + super.init(ref, propsRef); + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + super.updateGestureConfig({ + enabled: enabled, + ...props + }); + + if (this.config.numberOfTaps !== undefined) { + this.numberOfTaps = this.config.numberOfTaps; + } + + if (this.config.maxDurationMs !== undefined) { + this.maxDurationMs = this.config.maxDurationMs; + } + + if (this.config.maxDelayMs !== undefined) { + this.maxDelayMs = this.config.maxDelayMs; + } + + if (this.config.maxDeltaX !== undefined) { + this.maxDeltaX = this.config.maxDeltaX; + } + + if (this.config.maxDeltaY !== undefined) { + this.maxDeltaY = this.config.maxDeltaY; + } + + if (this.config.maxDist !== undefined) { + this.maxDistSq = this.config.maxDist * this.config.maxDist; + } + + if (this.config.minPointers !== undefined) { + this.minNumberOfPointers = this.config.minPointers; + } + } + + resetConfig() { + super.resetConfig(); + this.maxDeltaX = Number.MIN_SAFE_INTEGER; + this.maxDeltaY = Number.MIN_SAFE_INTEGER; + this.maxDistSq = Number.MIN_SAFE_INTEGER; + this.maxDurationMs = DEFAULT_MAX_DURATION_MS; + this.maxDelayMs = DEFAULT_MAX_DELAY_MS; + this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS; + this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS; + } + + transformNativeEvent() { + const rect = this.view.getBoundingClientRect(); + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY() + }; + } + + clearTimeouts() { + clearTimeout(this.waitTimeout); + clearTimeout(this.delayTimeout); + } + + startTap() { + this.clearTimeouts(); + this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs); + } + + endTap() { + this.clearTimeouts(); + + if (++this.tapsSoFar === this.numberOfTaps && this.currentMaxNumberOfPointers >= this.minNumberOfPointers) { + this.activate(); + } else { + this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs); + } + } //Handling Events + + + onPointerDown(event) { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.trySettingPosition(event); + this.startX = event.x; + this.startY = event.y; + this.lastX = event.x; + this.lastY = event.y; + this.updateState(event); + } + + onPointerAdd(event) { + super.onPointerAdd(event); + this.tracker.addToTracker(event); + this.trySettingPosition(event); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.tracker.getLastAvgX(); + this.startY = this.tracker.getLastAvgY(); + this.updateState(event); + } + + onPointerUp(event) { + super.onPointerUp(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.tracker.removeFromTracker(event.pointerId); + this.updateState(event); + } + + onPointerRemove(event) { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY = this.startY; + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.startX = this.lastX; + this.startY = this.lastY; + this.updateState(event); + } + + onPointerMove(event) { + this.trySettingPosition(event); + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.updateState(event); + super.onPointerMove(event); + } + + onPointerOutOfBounds(event) { + this.trySettingPosition(event); + this.tracker.track(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.updateState(event); + super.onPointerOutOfBounds(event); + } + + onPointerCancel(event) { + super.onPointerCancel(event); + this.tracker.resetTracker(); + this.fail(); + } + + updateState(event) { + if (this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()) { + this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount(); + } + + if (this.shouldFail()) { + this.fail(); + return; + } + + switch (this.currentState) { + case State.UNDETERMINED: + if (event.eventType === EventTypes.DOWN) { + this.begin(); + } + + this.startTap(); + break; + + case State.BEGAN: + if (event.eventType === EventTypes.UP) { + this.endTap(); + } + + if (event.eventType === EventTypes.DOWN) { + this.startTap(); + } + + break; + + default: + break; + } + } + + trySettingPosition(event) { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.offsetX = 0; + this.offsetY = 0; + this.startX = event.x; + this.startY = event.y; + } + + shouldFail() { + const dx = this.lastX - this.startX + this.offsetX; + + if (this.maxDeltaX !== Number.MIN_SAFE_INTEGER && Math.abs(dx) > this.maxDeltaX) { + return true; + } + + const dy = this.lastY - this.startY + this.offsetY; + + if (this.maxDeltaY !== Number.MIN_SAFE_INTEGER && Math.abs(dy) > this.maxDeltaY) { + return true; + } + + const distSq = dy * dy + dx * dx; + return this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq; + } + + activate() { + super.activate(); + this.end(); + } + + onCancel() { + this.resetProgress(); + this.clearTimeouts(); + } + + resetProgress() { + this.clearTimeouts(); + this.tapsSoFar = 0; + this.currentMaxNumberOfPointers = 0; + } + +} +//# sourceMappingURL=TapGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js.map new file mode 100644 index 00000000..50e0ab12 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/handlers/TapGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TapGestureHandler.ts"],"names":["State","EventTypes","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDist","maxDistSq","minPointers","minNumberOfPointers","resetConfig","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","event","addToTracker","trySettingPosition","startX","startY","lastX","lastY","updateState","onPointerAdd","offsetX","offsetY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","resetTracker","getTrackedPointersCount","shouldFail","currentState","UNDETERMINED","eventType","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 500;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\n\n public init(ref: number, propsRef: React.RefObject): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private endTap(): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.trySettingPosition(event);\n\n this.startX = event.x;\n this.startY = event.y;\n\n this.lastX = event.x;\n this.lastY = event.y;\n\n this.updateState(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n super.onPointerAdd(event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n\n this.updateState(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.updateState(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.tracker.resetTracker();\n this.fail();\n }\n\n private updateState(event: AdaptedEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const distSq = dy * dy + dx * dx;\n\n return (\n this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq\n );\n }\n\n public activate(): void {\n super.activate();\n\n this.end();\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js new file mode 100644 index 00000000..3e517a89 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js @@ -0,0 +1,45 @@ +export let MouseButtons; + +(function (MouseButtons) { + MouseButtons[MouseButtons["NONE"] = 0] = "NONE"; + MouseButtons[MouseButtons["LEFT"] = 1] = "LEFT"; + MouseButtons[MouseButtons["RIGHT"] = 2] = "RIGHT"; + MouseButtons[MouseButtons["LEFT_RIGHT"] = 3] = "LEFT_RIGHT"; + MouseButtons[MouseButtons["SCROLL"] = 4] = "SCROLL"; + MouseButtons[MouseButtons["SCROLL_LEFT"] = 5] = "SCROLL_LEFT"; + MouseButtons[MouseButtons["SCROLL_RIGHT"] = 6] = "SCROLL_RIGHT"; + MouseButtons[MouseButtons["SCROLL_LEFT_RIGHT"] = 7] = "SCROLL_LEFT_RIGHT"; +})(MouseButtons || (MouseButtons = {})); + +export let EventTypes; + +(function (EventTypes) { + EventTypes[EventTypes["DOWN"] = 0] = "DOWN"; + EventTypes[EventTypes["ADDITIONAL_POINTER_DOWN"] = 1] = "ADDITIONAL_POINTER_DOWN"; + EventTypes[EventTypes["UP"] = 2] = "UP"; + EventTypes[EventTypes["ADDITIONAL_POINTER_UP"] = 3] = "ADDITIONAL_POINTER_UP"; + EventTypes[EventTypes["MOVE"] = 4] = "MOVE"; + EventTypes[EventTypes["ENTER"] = 5] = "ENTER"; + EventTypes[EventTypes["OUT"] = 6] = "OUT"; + EventTypes[EventTypes["CANCEL"] = 7] = "CANCEL"; +})(EventTypes || (EventTypes = {})); + +export let TouchEventType; + +(function (TouchEventType) { + TouchEventType[TouchEventType["UNDETERMINED"] = 0] = "UNDETERMINED"; + TouchEventType[TouchEventType["DOWN"] = 1] = "DOWN"; + TouchEventType[TouchEventType["MOVE"] = 2] = "MOVE"; + TouchEventType[TouchEventType["UP"] = 3] = "UP"; + TouchEventType[TouchEventType["CANCELLED"] = 4] = "CANCELLED"; +})(TouchEventType || (TouchEventType = {})); + +export let PointerType; + +(function (PointerType) { + PointerType["NONE"] = "none"; + PointerType["MOUSE"] = "mouse"; + PointerType["TOUCH"] = "touch"; + PointerType["PEN"] = "pen"; +})(PointerType || (PointerType = {})); +//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js.map new file mode 100644 index 00000000..dbf9d1d7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes","TouchEventType","PointerType"],"mappings":"AAgIA,WAAYA,YAAZ;;WAAYA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;GAAAA,Y,KAAAA,Y;;AAWZ,WAAYC,UAAZ;;WAAYA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAWZ,WAAYC,cAAZ;;WAAYA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,KAAAA,c;;AAQZ,WAAYC,WAAZ;;WAAYA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,KAAAA,W","sourcesContent":["import { UserSelect } from '../handlers/gestureHandlerCommon';\nimport { Directions } from '../Directions';\nimport { State } from '../State';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | UserSelect\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record {\n enabled?: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n hitSlop?: HitSlop;\n shouldCancelWhenOutside?: boolean;\n userSelect?: UserSelect;\n\n activateAfterLongPress?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n}\n\nexport interface PointerData {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n}\n\ntype TouchNativeArgs = number | State | TouchEventType | PointerData[];\n\ninterface NativeTouchEvent extends Record {\n handlerTag: number;\n state: State;\n eventType: TouchEventType;\n changedTouches: PointerData[];\n allTouches: PointerData[];\n numberOfTouches: number;\n}\n\nexport interface ResultEvent extends Record {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface ResultTouchEvent\n extends Record {\n nativeEvent: NativeTouchEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface AdaptedEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: PointerType;\n buttons: number;\n time: number;\n allTouches?: TouchList;\n changedTouches?: TouchList;\n touchEventType?: TouchEventType;\n}\n\nexport enum MouseButtons {\n NONE,\n LEFT,\n RIGHT,\n LEFT_RIGHT,\n SCROLL,\n SCROLL_LEFT,\n SCROLL_RIGHT,\n SCROLL_LEFT_RIGHT,\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n OUT,\n CANCEL,\n}\n\nexport enum TouchEventType {\n UNDETERMINED,\n DOWN,\n MOVE,\n UP,\n CANCELLED,\n}\n\nexport enum PointerType {\n NONE = 'none',\n MOUSE = 'mouse',\n TOUCH = 'touch',\n PEN = 'pen',\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js new file mode 100644 index 00000000..79bdd27d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js @@ -0,0 +1,104 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/* eslint-disable @typescript-eslint/no-empty-function */ +export default class EventManager { + constructor(view) { + _defineProperty(this, "view", void 0); + + _defineProperty(this, "pointersInBounds", []); + + _defineProperty(this, "activePointersCounter", void 0); + + this.view = view; + this.activePointersCounter = 0; + } + + onPointerDown(_event) {} + + onPointerAdd(_event) {} + + onPointerUp(_event) {} + + onPointerRemove(_event) {} + + onPointerMove(_event) {} + + onPointerOut(_event) {} + + onPointerEnter(_event) {} + + onPointerCancel(_event) {// When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled + // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0 + // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter + // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled + } + + onPointerOutOfBounds(_event) {} + + setOnPointerDown(callback) { + this.onPointerDown = callback; + } + + setOnPointerAdd(callback) { + this.onPointerAdd = callback; + } + + setOnPointerUp(callback) { + this.onPointerUp = callback; + } + + setOnPointerRemove(callback) { + this.onPointerRemove = callback; + } + + setOnPointerMove(callback) { + this.onPointerMove = callback; + } + + setOnPointerOut(callback) { + this.onPointerOut = callback; + } + + setOnPointerEnter(callback) { + this.onPointerEnter = callback; + } + + setOnPointerCancel(callback) { + this.onPointerCancel = callback; + } + + setOnPointerOutOfBounds(callback) { + this.onPointerOutOfBounds = callback; + } + + markAsInBounds(pointerId) { + if (this.pointersInBounds.indexOf(pointerId) >= 0) { + return; + } + + this.pointersInBounds.push(pointerId); + } + + markAsOutOfBounds(pointerId) { + const index = this.pointersInBounds.indexOf(pointerId); + + if (index < 0) { + return; + } + + this.pointersInBounds.splice(index, 1); + } + + resetManager() { + // Reseting activePointersCounter is necessary to make gestures such as pinch work properly + // There are gestures that end when there is still one active pointer (like pinch/rotation) + // When these gestures end, they are reset, but they still receive events from pointer that is active + // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive + // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one + // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED + this.activePointersCounter = 0; + this.pointersInBounds = []; + } + +} +//# sourceMappingURL=EventManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js.map new file mode 100644 index 00000000..a7698c75 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/EventManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["EventManager.ts"],"names":["EventManager","constructor","view","activePointersCounter","onPointerDown","_event","onPointerAdd","onPointerUp","onPointerRemove","onPointerMove","onPointerOut","onPointerEnter","onPointerCancel","onPointerOutOfBounds","setOnPointerDown","callback","setOnPointerAdd","setOnPointerUp","setOnPointerRemove","setOnPointerMove","setOnPointerOut","setOnPointerEnter","setOnPointerCancel","setOnPointerOutOfBounds","markAsInBounds","pointerId","pointersInBounds","indexOf","push","markAsOutOfBounds","index","splice","resetManager"],"mappings":";;AAAA;AAGA,eAAe,MAAeA,YAAf,CAA4B;AAKzCC,EAAAA,WAAW,CAACC,IAAD,EAAoB;AAAA;;AAAA,8CAHQ,EAGR;;AAAA;;AAC7B,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAKC,qBAAL,GAA6B,CAA7B;AACD;;AAUSC,EAAAA,aAAa,CAACC,MAAD,EAA6B,CAAE;;AAC5CC,EAAAA,YAAY,CAACD,MAAD,EAA6B,CAAE;;AAC3CE,EAAAA,WAAW,CAACF,MAAD,EAA6B,CAAE;;AAC1CG,EAAAA,eAAe,CAACH,MAAD,EAA6B,CAAE;;AAC9CI,EAAAA,aAAa,CAACJ,MAAD,EAA6B,CAAE;;AAC5CK,EAAAA,YAAY,CAACL,MAAD,EAA6B,CAAE;;AAC3CM,EAAAA,cAAc,CAACN,MAAD,EAA6B,CAAE;;AAC7CO,EAAAA,eAAe,CAACP,MAAD,EAA6B,CACpD;AACA;AACA;AACA;AACD;;AACSQ,EAAAA,oBAAoB,CAACR,MAAD,EAA6B,CAAE;;AAEtDS,EAAAA,gBAAgB,CAACC,QAAD,EAAgD;AACrE,SAAKX,aAAL,GAAqBW,QAArB;AACD;;AACMC,EAAAA,eAAe,CAACD,QAAD,EAAgD;AACpE,SAAKT,YAAL,GAAoBS,QAApB;AACD;;AACME,EAAAA,cAAc,CAACF,QAAD,EAAgD;AACnE,SAAKR,WAAL,GAAmBQ,QAAnB;AACD;;AACMG,EAAAA,kBAAkB,CAACH,QAAD,EAAgD;AACvE,SAAKP,eAAL,GAAuBO,QAAvB;AACD;;AACMI,EAAAA,gBAAgB,CAACJ,QAAD,EAAgD;AACrE,SAAKN,aAAL,GAAqBM,QAArB;AACD;;AACMK,EAAAA,eAAe,CAACL,QAAD,EAAgD;AACpE,SAAKL,YAAL,GAAoBK,QAApB;AACD;;AACMM,EAAAA,iBAAiB,CAACN,QAAD,EAAgD;AACtE,SAAKJ,cAAL,GAAsBI,QAAtB;AACD;;AACMO,EAAAA,kBAAkB,CAACP,QAAD,EAAgD;AACvE,SAAKH,eAAL,GAAuBG,QAAvB;AACD;;AACMQ,EAAAA,uBAAuB,CAC5BR,QAD4B,EAEtB;AACN,SAAKF,oBAAL,GAA4BE,QAA5B;AACD;;AAESS,EAAAA,cAAc,CAACC,SAAD,EAA0B;AAChD,QAAI,KAAKC,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,KAA4C,CAAhD,EAAmD;AACjD;AACD;;AAED,SAAKC,gBAAL,CAAsBE,IAAtB,CAA2BH,SAA3B;AACD;;AAESI,EAAAA,iBAAiB,CAACJ,SAAD,EAA0B;AACnD,UAAMK,KAAa,GAAG,KAAKJ,gBAAL,CAAsBC,OAAtB,CAA8BF,SAA9B,CAAtB;;AAEA,QAAIK,KAAK,GAAG,CAAZ,EAAe;AACb;AACD;;AAED,SAAKJ,gBAAL,CAAsBK,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AAEME,EAAAA,YAAY,GAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AAEA,SAAK7B,qBAAL,GAA6B,CAA7B;AACA,SAAKuB,gBAAL,GAAwB,EAAxB;AACD;;AA3FwC","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';\n\nexport default abstract class EventManager {\n protected readonly view: HTMLElement;\n protected pointersInBounds: number[] = [];\n protected activePointersCounter: number;\n\n constructor(view: HTMLElement) {\n this.view = view;\n this.activePointersCounter = 0;\n }\n\n public abstract setListeners(): void;\n protected abstract mapEvent(\n event: Event,\n eventType: EventTypes,\n index?: number,\n touchEventType?: TouchEventType\n ): AdaptedEvent;\n\n protected onPointerDown(_event: AdaptedEvent): void {}\n protected onPointerAdd(_event: AdaptedEvent): void {}\n protected onPointerUp(_event: AdaptedEvent): void {}\n protected onPointerRemove(_event: AdaptedEvent): void {}\n protected onPointerMove(_event: AdaptedEvent): void {}\n protected onPointerOut(_event: AdaptedEvent): void {}\n protected onPointerEnter(_event: AdaptedEvent): void {}\n protected onPointerCancel(_event: AdaptedEvent): void {\n // When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled\n // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0\n // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter\n // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled\n }\n protected onPointerOutOfBounds(_event: AdaptedEvent): void {}\n\n public setOnPointerDown(callback: (event: AdaptedEvent) => void): void {\n this.onPointerDown = callback;\n }\n public setOnPointerAdd(callback: (event: AdaptedEvent) => void): void {\n this.onPointerAdd = callback;\n }\n public setOnPointerUp(callback: (event: AdaptedEvent) => void): void {\n this.onPointerUp = callback;\n }\n public setOnPointerRemove(callback: (event: AdaptedEvent) => void): void {\n this.onPointerRemove = callback;\n }\n public setOnPointerMove(callback: (event: AdaptedEvent) => void): void {\n this.onPointerMove = callback;\n }\n public setOnPointerOut(callback: (event: AdaptedEvent) => void): void {\n this.onPointerOut = callback;\n }\n public setOnPointerEnter(callback: (event: AdaptedEvent) => void): void {\n this.onPointerEnter = callback;\n }\n public setOnPointerCancel(callback: (event: AdaptedEvent) => void): void {\n this.onPointerCancel = callback;\n }\n public setOnPointerOutOfBounds(\n callback: (event: AdaptedEvent) => void\n ): void {\n this.onPointerOutOfBounds = callback;\n }\n\n protected markAsInBounds(pointerId: number): void {\n if (this.pointersInBounds.indexOf(pointerId) >= 0) {\n return;\n }\n\n this.pointersInBounds.push(pointerId);\n }\n\n protected markAsOutOfBounds(pointerId: number): void {\n const index: number = this.pointersInBounds.indexOf(pointerId);\n\n if (index < 0) {\n return;\n }\n\n this.pointersInBounds.splice(index, 1);\n }\n\n public resetManager(): void {\n // Reseting activePointersCounter is necessary to make gestures such as pinch work properly\n // There are gestures that end when there is still one active pointer (like pinch/rotation)\n // When these gestures end, they are reset, but they still receive events from pointer that is active\n // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive\n // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one\n // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED\n\n this.activePointersCounter = 0;\n this.pointersInBounds = [];\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js new file mode 100644 index 00000000..90bca00c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js @@ -0,0 +1,347 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { State } from '../../State'; +import { PointerType } from '../interfaces'; +import PointerTracker from './PointerTracker'; +import { isPointerInBounds } from '../utils'; +export default class GestureHandlerOrchestrator { + // Private beacuse of Singleton + // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + constructor() { + _defineProperty(this, "gestureHandlers", []); + + _defineProperty(this, "awaitingHandlers", []); + + _defineProperty(this, "handlersToCancel", []); + + _defineProperty(this, "handlingChangeSemaphore", 0); + + _defineProperty(this, "activationIndex", 0); + } + + scheduleFinishedHandlersCleanup() { + if (this.handlingChangeSemaphore === 0) { + this.cleanupFinishedHandlers(); + } + } + + cleanHandler(handler) { + handler.reset(); + handler.setActive(false); + handler.setAwaiting(false); + handler.setActivationIndex(Number.MAX_VALUE); + } + + removeHandlerFromOrchestrator(handler) { + this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1); + this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1); + this.handlersToCancel.splice(this.handlersToCancel.indexOf(handler), 1); + } + + cleanupFinishedHandlers() { + for (let i = this.gestureHandlers.length - 1; i >= 0; --i) { + const handler = this.gestureHandlers[i]; + + if (!handler) { + continue; + } + + if (this.isFinished(handler.getState()) && !handler.isAwaiting()) { + this.gestureHandlers.splice(i, 1); + this.cleanHandler(handler); + } + } + } + + hasOtherHandlerToWaitFor(handler) { + let hasToWait = false; + this.gestureHandlers.forEach(otherHandler => { + if (otherHandler && !this.isFinished(otherHandler.getState()) && this.shouldHandlerWaitForOther(handler, otherHandler)) { + hasToWait = true; + return; + } + }); + return hasToWait; + } + + tryActivate(handler) { + if (this.hasOtherHandlerToWaitFor(handler)) { + this.addAwaitingHandler(handler); + } else if (handler.getState() !== State.CANCELLED && handler.getState() !== State.FAILED) { + if (this.shouldActivate(handler)) { + this.makeActive(handler); + } else { + switch (handler.getState()) { + case State.ACTIVE: + handler.fail(); + break; + + case State.BEGAN: + handler.cancel(); + } + } + } + } + + shouldActivate(handler) { + for (const otherHandler of this.gestureHandlers) { + if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) { + return false; + } + } + + return true; + } + + cleanupAwaitingHandlers(handler) { + for (let i = 0; i < this.awaitingHandlers.length; ++i) { + if (!this.awaitingHandlers[i].isAwaiting() && this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)) { + this.cleanHandler(this.awaitingHandlers[i]); + this.awaitingHandlers.splice(i, 1); + } + } + } + + onHandlerStateChange(handler, newState, oldState, sendIfDisabled) { + if (!handler.isEnabled() && !sendIfDisabled) { + return; + } + + this.handlingChangeSemaphore += 1; + + if (this.isFinished(newState)) { + this.awaitingHandlers.forEach(otherHandler => { + if (this.shouldHandlerWaitForOther(otherHandler, handler)) { + if (newState === State.END) { + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.cancel(); + + if (otherHandler.getState() === State.END) { + // Handle edge case, where discrete gestures end immediately after activation thus + // their state is set to END and when the gesture they are waiting for activates they + // should be cancelled, however `cancel` was never sent as gestures were already in the END state. + // Send synthetic BEGAN -> CANCELLED to properly handle JS logic + otherHandler.sendEvent(State.CANCELLED, State.BEGAN); + } + + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.setAwaiting(false); + } else { + this.tryActivate(otherHandler); + } + } + }); + } + + if (newState === State.ACTIVE) { + this.tryActivate(handler); + } else if (oldState === State.ACTIVE || oldState === State.END) { + if (handler.isActive()) { + handler.sendEvent(newState, oldState); + } else if (oldState === State.ACTIVE && (newState === State.CANCELLED || newState === State.FAILED)) { + handler.sendEvent(newState, State.BEGAN); + } + } else if (oldState !== State.UNDETERMINED || newState !== State.CANCELLED) { + handler.sendEvent(newState, oldState); + } + + this.handlingChangeSemaphore -= 1; + this.scheduleFinishedHandlersCleanup(); + + if (this.awaitingHandlers.indexOf(handler) < 0) { + this.cleanupAwaitingHandlers(handler); + } + } + + makeActive(handler) { + const currentState = handler.getState(); + handler.setActive(true); + handler.setShouldResetProgress(true); + handler.setActivationIndex(this.activationIndex++); + this.gestureHandlers.forEach(otherHandler => { + // Order of arguments is correct - we check whether current handler should cancel existing handlers + if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) { + this.handlersToCancel.push(otherHandler); + } + }); + + for (let i = this.handlersToCancel.length - 1; i >= 0; --i) { + var _this$handlersToCance; + + (_this$handlersToCance = this.handlersToCancel[i]) === null || _this$handlersToCance === void 0 ? void 0 : _this$handlersToCance.cancel(); + } + + this.awaitingHandlers.forEach(otherHandler => { + if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) { + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.cancel(); + otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.setAwaiting(true); + } + }); + handler.sendEvent(State.ACTIVE, State.BEGAN); + + if (currentState !== State.ACTIVE) { + handler.sendEvent(State.END, State.ACTIVE); + + if (currentState !== State.END) { + handler.sendEvent(State.UNDETERMINED, State.END); + } + } + + if (handler.isAwaiting()) { + handler.setAwaiting(false); + + for (let i = 0; i < this.awaitingHandlers.length; ++i) { + if (this.awaitingHandlers[i] === handler) { + this.awaitingHandlers.splice(i, 1); + } + } + } + + this.handlersToCancel = []; + } + + addAwaitingHandler(handler) { + let alreadyExists = false; + this.awaitingHandlers.forEach(otherHandler => { + if (otherHandler === handler) { + alreadyExists = true; + return; + } + }); + + if (alreadyExists) { + return; + } + + this.awaitingHandlers.push(handler); + handler.setAwaiting(true); + handler.setActivationIndex(this.activationIndex++); + } + + recordHandlerIfNotPresent(handler) { + let alreadyExists = false; + this.gestureHandlers.forEach(otherHandler => { + if (otherHandler === handler) { + alreadyExists = true; + return; + } + }); + + if (alreadyExists) { + return; + } + + this.gestureHandlers.push(handler); + handler.setActive(false); + handler.setAwaiting(false); + handler.setActivationIndex(Number.MAX_SAFE_INTEGER); + } + + shouldHandlerWaitForOther(handler, otherHandler) { + return handler !== otherHandler && (handler.shouldWaitForHandlerFailure(otherHandler) || otherHandler.shouldRequireToWaitForFailure(handler)); + } + + canRunSimultaneously(gh1, gh2) { + return gh1 === gh2 || gh1.shouldRecognizeSimultaneously(gh2) || gh2.shouldRecognizeSimultaneously(gh1); + } + + shouldHandlerBeCancelledBy(handler, otherHandler) { + if (this.canRunSimultaneously(handler, otherHandler)) { + return false; + } + + if (handler !== otherHandler && (handler.isAwaiting() || handler.getState() === State.ACTIVE)) { + // For now it always returns false + return handler.shouldBeCancelledByOther(otherHandler); + } + + const handlerPointers = handler.getTrackedPointersID(); + const otherPointers = otherHandler.getTrackedPointersID(); + + if (!PointerTracker.shareCommonPointers(handlerPointers, otherPointers) && handler.getView() !== otherHandler.getView()) { + return this.checkOverlap(handler, otherHandler); + } + + return true; + } + + checkOverlap(handler, otherHandler) { + // If handlers don't have common pointers, default return value is false. + // However, if at least on pointer overlaps with both handlers, we return true + // This solves issue in overlapping parents example + // TODO: Find better way to handle that issue, for example by activation order and handler cancelling + const handlerPointers = handler.getTrackedPointersID(); + const otherPointers = otherHandler.getTrackedPointersID(); + let overlap = false; + handlerPointers.forEach(pointer => { + const handlerX = handler.getTracker().getLastX(pointer); + const handlerY = handler.getTracker().getLastY(pointer); + + if (isPointerInBounds(handler.getView(), { + x: handlerX, + y: handlerY + }) && isPointerInBounds(otherHandler.getView(), { + x: handlerX, + y: handlerY + })) { + overlap = true; + } + }); + otherPointers.forEach(pointer => { + const otherX = otherHandler.getTracker().getLastX(pointer); + const otherY = otherHandler.getTracker().getLastY(pointer); + + if (isPointerInBounds(handler.getView(), { + x: otherX, + y: otherY + }) && isPointerInBounds(otherHandler.getView(), { + x: otherX, + y: otherY + })) { + overlap = true; + } + }); + return overlap; + } + + isFinished(state) { + return state === State.END || state === State.FAILED || state === State.CANCELLED; + } // This function is called when handler receives touchdown event + // If handler is using mouse or pen as a pointer and any handler receives touch event, + // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others) + // This became a problem because handler was left at active state without any signal to end or fail + // To handle this, when new touch event is received, we loop through active handlers and check which type of + // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them + + + cancelMouseAndPenGestures(currentHandler) { + this.gestureHandlers.forEach(handler => { + if (handler.getPointerType() !== PointerType.MOUSE && handler.getPointerType() !== PointerType.PEN) { + return; + } + + if (handler !== currentHandler) { + handler.cancel(); + } else { + // Handler that received touch event should have its pointer tracker reset + // This allows handler to smoothly change from mouse/pen to touch + // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time + // so it is required to click two times to get handler to work + // + // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method. + // There may be possibility to use that fact to make handler respond properly to first mouse click + handler.getTracker().resetTracker(); + } + }); + } + + static getInstance() { + if (!GestureHandlerOrchestrator.instance) { + GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator(); + } + + return GestureHandlerOrchestrator.instance; + } + +} + +_defineProperty(GestureHandlerOrchestrator, "instance", void 0); +//# sourceMappingURL=GestureHandlerOrchestrator.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js.map new file mode 100644 index 00000000..3a7902e1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/GestureHandlerOrchestrator.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandlerOrchestrator.ts"],"names":["State","PointerType","PointerTracker","isPointerInBounds","GestureHandlerOrchestrator","constructor","scheduleFinishedHandlersCleanup","handlingChangeSemaphore","cleanupFinishedHandlers","cleanHandler","handler","reset","setActive","setAwaiting","setActivationIndex","Number","MAX_VALUE","removeHandlerFromOrchestrator","gestureHandlers","splice","indexOf","awaitingHandlers","handlersToCancel","i","length","isFinished","getState","isAwaiting","hasOtherHandlerToWaitFor","hasToWait","forEach","otherHandler","shouldHandlerWaitForOther","tryActivate","addAwaitingHandler","CANCELLED","FAILED","shouldActivate","makeActive","ACTIVE","fail","BEGAN","cancel","shouldHandlerBeCancelledBy","cleanupAwaitingHandlers","onHandlerStateChange","newState","oldState","sendIfDisabled","isEnabled","END","sendEvent","isActive","UNDETERMINED","currentState","setShouldResetProgress","activationIndex","push","alreadyExists","recordHandlerIfNotPresent","MAX_SAFE_INTEGER","shouldWaitForHandlerFailure","shouldRequireToWaitForFailure","canRunSimultaneously","gh1","gh2","shouldRecognizeSimultaneously","shouldBeCancelledByOther","handlerPointers","getTrackedPointersID","otherPointers","shareCommonPointers","getView","checkOverlap","overlap","pointer","handlerX","getTracker","getLastX","handlerY","getLastY","x","y","otherX","otherY","state","cancelMouseAndPenGestures","currentHandler","getPointerType","MOUSE","PEN","resetTracker","getInstance","instance"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { PointerType } from '../interfaces';\n\nimport GestureHandler from '../handlers/GestureHandler';\nimport PointerTracker from './PointerTracker';\nimport { isPointerInBounds } from '../utils';\n\nexport default class GestureHandlerOrchestrator {\n private static instance: GestureHandlerOrchestrator;\n\n private gestureHandlers: GestureHandler[] = [];\n private awaitingHandlers: GestureHandler[] = [];\n private handlersToCancel: GestureHandler[] = [];\n\n private handlingChangeSemaphore = 0;\n private activationIndex = 0;\n\n // Private beacuse of Singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n private scheduleFinishedHandlersCleanup(): void {\n if (this.handlingChangeSemaphore === 0) {\n this.cleanupFinishedHandlers();\n }\n }\n\n private cleanHandler(handler: GestureHandler): void {\n handler.reset();\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_VALUE);\n }\n\n public removeHandlerFromOrchestrator(handler: GestureHandler): void {\n this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1);\n this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1);\n this.handlersToCancel.splice(this.handlersToCancel.indexOf(handler), 1);\n }\n\n private cleanupFinishedHandlers(): void {\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n const handler = this.gestureHandlers[i];\n\n if (!handler) {\n continue;\n }\n if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {\n this.gestureHandlers.splice(i, 1);\n\n this.cleanHandler(handler);\n }\n }\n }\n\n private hasOtherHandlerToWaitFor(handler: GestureHandler): boolean {\n let hasToWait = false;\n this.gestureHandlers.forEach((otherHandler) => {\n if (\n otherHandler &&\n !this.isFinished(otherHandler.getState()) &&\n this.shouldHandlerWaitForOther(handler, otherHandler)\n ) {\n hasToWait = true;\n return;\n }\n });\n\n return hasToWait;\n }\n\n private tryActivate(handler: GestureHandler): void {\n if (this.hasOtherHandlerToWaitFor(handler)) {\n this.addAwaitingHandler(handler);\n } else if (\n handler.getState() !== State.CANCELLED &&\n handler.getState() !== State.FAILED\n ) {\n if (this.shouldActivate(handler)) {\n this.makeActive(handler);\n } else {\n switch (handler.getState()) {\n case State.ACTIVE:\n handler.fail();\n break;\n case State.BEGAN:\n handler.cancel();\n }\n }\n }\n }\n\n private shouldActivate(handler: GestureHandler): boolean {\n for (const otherHandler of this.gestureHandlers) {\n if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) {\n return false;\n }\n }\n\n return true;\n }\n\n private cleanupAwaitingHandlers(handler: GestureHandler): void {\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (\n !this.awaitingHandlers[i].isAwaiting() &&\n this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)\n ) {\n this.cleanHandler(this.awaitingHandlers[i]);\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n public onHandlerStateChange(\n handler: GestureHandler,\n newState: State,\n oldState: State,\n sendIfDisabled?: boolean\n ): void {\n if (!handler.isEnabled() && !sendIfDisabled) {\n return;\n }\n\n this.handlingChangeSemaphore += 1;\n\n if (this.isFinished(newState)) {\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerWaitForOther(otherHandler, handler)) {\n if (newState === State.END) {\n otherHandler?.cancel();\n if (otherHandler.getState() === State.END) {\n // Handle edge case, where discrete gestures end immediately after activation thus\n // their state is set to END and when the gesture they are waiting for activates they\n // should be cancelled, however `cancel` was never sent as gestures were already in the END state.\n // Send synthetic BEGAN -> CANCELLED to properly handle JS logic\n otherHandler.sendEvent(State.CANCELLED, State.BEGAN);\n }\n otherHandler?.setAwaiting(false);\n } else {\n this.tryActivate(otherHandler);\n }\n }\n });\n }\n\n if (newState === State.ACTIVE) {\n this.tryActivate(handler);\n } else if (oldState === State.ACTIVE || oldState === State.END) {\n if (handler.isActive()) {\n handler.sendEvent(newState, oldState);\n } else if (\n oldState === State.ACTIVE &&\n (newState === State.CANCELLED || newState === State.FAILED)\n ) {\n handler.sendEvent(newState, State.BEGAN);\n }\n } else if (\n oldState !== State.UNDETERMINED ||\n newState !== State.CANCELLED\n ) {\n handler.sendEvent(newState, oldState);\n }\n\n this.handlingChangeSemaphore -= 1;\n\n this.scheduleFinishedHandlersCleanup();\n\n if (this.awaitingHandlers.indexOf(handler) < 0) {\n this.cleanupAwaitingHandlers(handler);\n }\n }\n\n private makeActive(handler: GestureHandler): void {\n const currentState = handler.getState();\n\n handler.setActive(true);\n handler.setShouldResetProgress(true);\n handler.setActivationIndex(this.activationIndex++);\n\n this.gestureHandlers.forEach((otherHandler) => {\n // Order of arguments is correct - we check whether current handler should cancel existing handlers\n\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n this.handlersToCancel.push(otherHandler);\n }\n });\n\n for (let i = this.handlersToCancel.length - 1; i >= 0; --i) {\n this.handlersToCancel[i]?.cancel();\n }\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n otherHandler?.cancel();\n otherHandler?.setAwaiting(true);\n }\n });\n\n handler.sendEvent(State.ACTIVE, State.BEGAN);\n\n if (currentState !== State.ACTIVE) {\n handler.sendEvent(State.END, State.ACTIVE);\n if (currentState !== State.END) {\n handler.sendEvent(State.UNDETERMINED, State.END);\n }\n }\n\n if (handler.isAwaiting()) {\n handler.setAwaiting(false);\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (this.awaitingHandlers[i] === handler) {\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n this.handlersToCancel = [];\n }\n\n private addAwaitingHandler(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.awaitingHandlers.push(handler);\n\n handler.setAwaiting(true);\n handler.setActivationIndex(this.activationIndex++);\n }\n\n public recordHandlerIfNotPresent(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.gestureHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.gestureHandlers.push(handler);\n\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_SAFE_INTEGER);\n }\n\n private shouldHandlerWaitForOther(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n return (\n handler !== otherHandler &&\n (handler.shouldWaitForHandlerFailure(otherHandler) ||\n otherHandler.shouldRequireToWaitForFailure(handler))\n );\n }\n\n private canRunSimultaneously(\n gh1: GestureHandler,\n gh2: GestureHandler\n ): boolean {\n return (\n gh1 === gh2 ||\n gh1.shouldRecognizeSimultaneously(gh2) ||\n gh2.shouldRecognizeSimultaneously(gh1)\n );\n }\n\n private shouldHandlerBeCancelledBy(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n if (this.canRunSimultaneously(handler, otherHandler)) {\n return false;\n }\n\n if (\n handler !== otherHandler &&\n (handler.isAwaiting() || handler.getState() === State.ACTIVE)\n ) {\n // For now it always returns false\n return handler.shouldBeCancelledByOther(otherHandler);\n }\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n if (\n !PointerTracker.shareCommonPointers(handlerPointers, otherPointers) &&\n handler.getView() !== otherHandler.getView()\n ) {\n return this.checkOverlap(handler, otherHandler);\n }\n\n return true;\n }\n\n private checkOverlap(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n // If handlers don't have common pointers, default return value is false.\n // However, if at least on pointer overlaps with both handlers, we return true\n // This solves issue in overlapping parents example\n\n // TODO: Find better way to handle that issue, for example by activation order and handler cancelling\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n let overlap = false;\n\n handlerPointers.forEach((pointer: number) => {\n const handlerX: number = handler.getTracker().getLastX(pointer);\n const handlerY: number = handler.getTracker().getLastY(pointer);\n\n if (\n isPointerInBounds(handler.getView(), { x: handlerX, y: handlerY }) &&\n isPointerInBounds(otherHandler.getView(), { x: handlerX, y: handlerY })\n ) {\n overlap = true;\n }\n });\n\n otherPointers.forEach((pointer: number) => {\n const otherX: number = otherHandler.getTracker().getLastX(pointer);\n const otherY: number = otherHandler.getTracker().getLastY(pointer);\n\n if (\n isPointerInBounds(handler.getView(), { x: otherX, y: otherY }) &&\n isPointerInBounds(otherHandler.getView(), { x: otherX, y: otherY })\n ) {\n overlap = true;\n }\n });\n\n return overlap;\n }\n\n private isFinished(state: State): boolean {\n return (\n state === State.END || state === State.FAILED || state === State.CANCELLED\n );\n }\n\n // This function is called when handler receives touchdown event\n // If handler is using mouse or pen as a pointer and any handler receives touch event,\n // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others)\n // This became a problem because handler was left at active state without any signal to end or fail\n // To handle this, when new touch event is received, we loop through active handlers and check which type of\n // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them\n public cancelMouseAndPenGestures(currentHandler: GestureHandler): void {\n this.gestureHandlers.forEach((handler: GestureHandler) => {\n if (\n handler.getPointerType() !== PointerType.MOUSE &&\n handler.getPointerType() !== PointerType.PEN\n ) {\n return;\n }\n\n if (handler !== currentHandler) {\n handler.cancel();\n } else {\n // Handler that received touch event should have its pointer tracker reset\n // This allows handler to smoothly change from mouse/pen to touch\n // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time\n // so it is required to click two times to get handler to work\n //\n // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method.\n // There may be possibility to use that fact to make handler respond properly to first mouse click\n handler.getTracker().resetTracker();\n }\n });\n }\n\n public static getInstance(): GestureHandlerOrchestrator {\n if (!GestureHandlerOrchestrator.instance) {\n GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator();\n }\n\n return GestureHandlerOrchestrator.instance;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js new file mode 100644 index 00000000..413ea9ec --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js @@ -0,0 +1,107 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +export default class InteractionManager { + // Private becaues of singleton + // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + constructor() { + _defineProperty(this, "waitForRelations", new Map()); + + _defineProperty(this, "simultaneousRelations", new Map()); + } + + configureInteractions(handler, config) { + this.dropRelationsForHandlerWithTag(handler.getTag()); + + if (config.waitFor) { + const waitFor = []; + config.waitFor.forEach(otherHandler => { + // New API reference + if (typeof otherHandler === 'number') { + waitFor.push(otherHandler); + } else { + // Old API reference + waitFor.push(otherHandler.handlerTag); + } + }); + this.waitForRelations.set(handler.getTag(), waitFor); + } + + if (config.simultaneousHandlers) { + const simultaneousHandlers = []; + config.simultaneousHandlers.forEach(otherHandler => { + if (typeof otherHandler === 'number') { + simultaneousHandlers.push(otherHandler); + } else { + simultaneousHandlers.push(otherHandler.handlerTag); + } + }); + this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers); + } + } + + shouldWaitForHandlerFailure(handler, otherHandler) { + const waitFor = this.waitForRelations.get(handler.getTag()); + + if (!waitFor) { + return false; + } + + let shouldWait = false; + waitFor.forEach(tag => { + if (tag === otherHandler.getTag()) { + shouldWait = true; + return; //Returns from callback + } + }); + return shouldWait; + } + + shouldRecognizeSimultaneously(handler, otherHandler) { + const simultaneousHandlers = this.simultaneousRelations.get(handler.getTag()); + + if (!simultaneousHandlers) { + return false; + } + + let shouldRecognizeSimultaneously = false; + simultaneousHandlers.forEach(tag => { + if (tag === otherHandler.getTag()) { + shouldRecognizeSimultaneously = true; + return; + } + }); + return shouldRecognizeSimultaneously; + } + + shouldRequireHandlerToWaitForFailure(_handler, _otherHandler) { + //TODO: Implement logic + return false; + } + + shouldHandlerBeCancelledBy(_handler, _otherHandler) { + //TODO: Implement logic + return false; + } + + dropRelationsForHandlerWithTag(handlerTag) { + this.waitForRelations.delete(handlerTag); + this.simultaneousRelations.delete(handlerTag); + } + + reset() { + this.waitForRelations.clear(); + this.simultaneousRelations.clear(); + } + + static getInstance() { + if (!this.instance) { + this.instance = new InteractionManager(); + } + + return this.instance; + } + +} + +_defineProperty(InteractionManager, "instance", void 0); +//# sourceMappingURL=InteractionManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js.map new file mode 100644 index 00000000..299a5d5c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/InteractionManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["InteractionManager.ts"],"names":["InteractionManager","constructor","Map","configureInteractions","handler","config","dropRelationsForHandlerWithTag","getTag","waitFor","forEach","otherHandler","push","handlerTag","waitForRelations","set","simultaneousHandlers","simultaneousRelations","shouldWaitForHandlerFailure","get","shouldWait","tag","shouldRecognizeSimultaneously","shouldRequireHandlerToWaitForFailure","_handler","_otherHandler","shouldHandlerBeCancelledBy","delete","reset","clear","getInstance","instance"],"mappings":"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","sourcesContent":["import GestureHandler from '../handlers/GestureHandler';\nimport { Config, Handler } from '../interfaces';\n\nexport default class InteractionManager {\n private static instance: InteractionManager;\n private readonly waitForRelations: Map = new Map();\n private readonly simultaneousRelations: Map = new Map();\n\n // Private becaues of singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n public configureInteractions(handler: GestureHandler, config: Config) {\n this.dropRelationsForHandlerWithTag(handler.getTag());\n\n if (config.waitFor) {\n const waitFor: number[] = [];\n config.waitFor.forEach((otherHandler: Handler): void => {\n // New API reference\n if (typeof otherHandler === 'number') {\n waitFor.push(otherHandler);\n } else {\n // Old API reference\n waitFor.push(otherHandler.handlerTag);\n }\n });\n\n this.waitForRelations.set(handler.getTag(), waitFor);\n }\n\n if (config.simultaneousHandlers) {\n const simultaneousHandlers: number[] = [];\n config.simultaneousHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n simultaneousHandlers.push(otherHandler);\n } else {\n simultaneousHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);\n }\n }\n\n public shouldWaitForHandlerFailure(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.waitForRelations.get(\n handler.getTag()\n );\n if (!waitFor) {\n return false;\n }\n\n let shouldWait = false;\n\n waitFor.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldWait = true;\n return; //Returns from callback\n }\n });\n\n return shouldWait;\n }\n\n public shouldRecognizeSimultaneously(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const simultaneousHandlers: number[] | undefined =\n this.simultaneousRelations.get(handler.getTag());\n if (!simultaneousHandlers) {\n return false;\n }\n\n let shouldRecognizeSimultaneously = false;\n\n simultaneousHandlers.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldRecognizeSimultaneously = true;\n return;\n }\n });\n\n return shouldRecognizeSimultaneously;\n }\n\n public shouldRequireHandlerToWaitForFailure(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n //TODO: Implement logic\n return false;\n }\n\n public shouldHandlerBeCancelledBy(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n //TODO: Implement logic\n return false;\n }\n\n public dropRelationsForHandlerWithTag(handlerTag: number): void {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n }\n\n public reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n }\n\n public static getInstance(): InteractionManager {\n if (!this.instance) {\n this.instance = new InteractionManager();\n }\n\n return this.instance;\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js new file mode 100644 index 00000000..9b6bdea1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js @@ -0,0 +1,39 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// eslint-disable-next-line @typescript-eslint/no-extraneous-class +export default class NodeManager { + static getHandler(tag) { + if (tag in this.gestures) { + return this.gestures[tag]; + } + + throw new Error(`No handler for tag ${tag}`); + } + + static createGestureHandler(handlerTag, handler) { + if (handlerTag in this.gestures) { + throw new Error(`Handler with tag ${handlerTag} already exists`); + } + + this.gestures[handlerTag] = handler; + this.gestures[handlerTag].setTag(handlerTag); + } + + static dropGestureHandler(handlerTag) { + if (!(handlerTag in this.gestures)) { + return; + } // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + + + delete this.gestures[handlerTag]; + } + + static getNodes() { + return { ...this.gestures + }; + } + +} + +_defineProperty(NodeManager, "gestures", {}); +//# sourceMappingURL=NodeManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js.map new file mode 100644 index 00000000..2a3efc5a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/NodeManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NodeManager.ts"],"names":["NodeManager","getHandler","tag","gestures","Error","createGestureHandler","handlerTag","handler","setTag","dropGestureHandler","getNodes"],"mappings":";;AAGA;AACA,eAAe,MAAeA,WAAf,CAA2B;AAMhB,SAAVC,UAAU,CAACC,GAAD,EAAc;AACpC,QAAIA,GAAG,IAAI,KAAKC,QAAhB,EAA0B;AACxB,aAAO,KAAKA,QAAL,CAAcD,GAAd,CAAP;AACD;;AAED,UAAM,IAAIE,KAAJ,CAAW,sBAAqBF,GAAI,EAApC,CAAN;AACD;;AAEiC,SAApBG,oBAAoB,CAChCC,UADgC,EAEhCC,OAFgC,EAG1B;AACN,QAAID,UAAU,IAAI,KAAKH,QAAvB,EAAiC;AAC/B,YAAM,IAAIC,KAAJ,CAAW,oBAAmBE,UAAW,iBAAzC,CAAN;AACD;;AAED,SAAKH,QAAL,CAAcG,UAAd,IAA4BC,OAA5B;AACA,SAAKJ,QAAL,CAAcG,UAAd,EAA0BE,MAA1B,CAAiCF,UAAjC;AACD;;AAE+B,SAAlBG,kBAAkB,CAACH,UAAD,EAA2B;AACzD,QAAI,EAAEA,UAAU,IAAI,KAAKH,QAArB,CAAJ,EAAoC;AAClC;AACD,KAHwD,CAKzD;;;AACA,WAAO,KAAKA,QAAL,CAAcG,UAAd,CAAP;AACD;;AAEqB,SAARI,QAAQ,GAAG;AACvB,WAAO,EAAE,GAAG,KAAKP;AAAV,KAAP;AACD;;AArCuC;;gBAAZH,W,cAIxB,E","sourcesContent":["import { ValueOf } from '../../typeUtils';\nimport { Gestures } from '../../RNGestureHandlerModule.web';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport default abstract class NodeManager {\n private static gestures: Record<\n number,\n InstanceType>\n > = {};\n\n public static getHandler(tag: number) {\n if (tag in this.gestures) {\n return this.gestures[tag];\n }\n\n throw new Error(`No handler for tag ${tag}`);\n }\n\n public static createGestureHandler(\n handlerTag: number,\n handler: InstanceType>\n ): void {\n if (handlerTag in this.gestures) {\n throw new Error(`Handler with tag ${handlerTag} already exists`);\n }\n\n this.gestures[handlerTag] = handler;\n this.gestures[handlerTag].setTag(handlerTag);\n }\n\n public static dropGestureHandler(handlerTag: number): void {\n if (!(handlerTag in this.gestures)) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.gestures[handlerTag];\n }\n\n public static getNodes() {\n return { ...this.gestures };\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js new file mode 100644 index 00000000..fa79668a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js @@ -0,0 +1,116 @@ +import { EventTypes, MouseButtons, PointerType } from '../interfaces'; +import EventManager from './EventManager'; +import { isPointerInBounds } from '../utils'; +export default class PointerEventManager extends EventManager { + setListeners() { + this.view.addEventListener('pointerdown', event => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + + if (!isPointerInBounds(this.view, { + x: event.clientX, + y: event.clientY + })) { + return; + } + + const adaptedEvent = this.mapEvent(event, EventTypes.DOWN); + const target = event.target; + target.setPointerCapture(adaptedEvent.pointerId); + this.markAsInBounds(adaptedEvent.pointerId); + + if (++this.activePointersCounter > 1) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN; + this.onPointerAdd(adaptedEvent); + } else { + this.onPointerDown(adaptedEvent); + } + }); + this.view.addEventListener('pointerup', event => { + if (event.pointerType === PointerType.TOUCH) { + return; + } // When we call reset on gesture handlers, it also resets their event managers + // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view + // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view + // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly + + + if (this.activePointersCounter === 0) { + return; + } + + const adaptedEvent = this.mapEvent(event, EventTypes.UP); + const target = event.target; + target.releasePointerCapture(adaptedEvent.pointerId); + this.markAsOutOfBounds(adaptedEvent.pointerId); + + if (--this.activePointersCounter > 0) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP; + this.onPointerRemove(adaptedEvent); + } else { + this.onPointerUp(adaptedEvent); + } + }); + this.view.addEventListener('pointermove', event => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + + if (event.pointerType === PointerType.MOUSE && event.buttons !== MouseButtons.LEFT) { + return; + } + + const adaptedEvent = this.mapEvent(event, EventTypes.MOVE); + const inBounds = isPointerInBounds(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y + }); + const pointerIndex = this.pointersInBounds.indexOf(adaptedEvent.pointerId); + + if (inBounds) { + if (pointerIndex < 0) { + adaptedEvent.eventType = EventTypes.ENTER; + this.onPointerEnter(adaptedEvent); + this.markAsInBounds(adaptedEvent.pointerId); + } else { + this.onPointerMove(adaptedEvent); + } + } else { + if (pointerIndex >= 0) { + adaptedEvent.eventType = EventTypes.OUT; + this.onPointerOut(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + } else { + this.onPointerOutOfBounds(adaptedEvent); + } + } + }); + this.view.addEventListener('pointercancel', event => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + + const adaptedEvent = this.mapEvent(event, EventTypes.CANCEL); + this.onPointerCancel(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + this.activePointersCounter = 0; + }); + } + + mapEvent(event, eventType) { + return { + x: event.clientX, + y: event.clientY, + offsetX: event.offsetX, + offsetY: event.offsetY, + pointerId: event.pointerId, + eventType: eventType, + pointerType: event.pointerType, + buttons: event.buttons, + time: event.timeStamp + }; + } + +} +//# sourceMappingURL=PointerEventManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js.map new file mode 100644 index 00000000..062a25f7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerEventManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PointerEventManager.ts"],"names":["EventTypes","MouseButtons","PointerType","EventManager","isPointerInBounds","PointerEventManager","setListeners","view","addEventListener","event","pointerType","TOUCH","x","clientX","y","clientY","adaptedEvent","mapEvent","DOWN","target","setPointerCapture","pointerId","markAsInBounds","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOUSE","buttons","LEFT","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","onPointerOutOfBounds","CANCEL","onPointerCancel","offsetX","offsetY","time","timeStamp"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class PointerEventManager extends EventManager {\n public setListeners(): void {\n this.view.addEventListener('pointerdown', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (\n !isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n target.setPointerCapture(adaptedEvent.pointerId);\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointerup', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n target.releasePointerCapture(adaptedEvent.pointerId);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointermove', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n if (\n event.pointerType === PointerType.MOUSE &&\n event.buttons !== MouseButtons.LEFT\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('pointercancel', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n });\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType as PointerType,\n buttons: event.buttons,\n time: event.timeStamp,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js new file mode 100644 index 00000000..28282899 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js @@ -0,0 +1,212 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// Used to scale velocity so that it is similar to velocity in Android/iOS +const VELOCITY_FACTOR = 0.2; +const MAX_POINTERS = 20; +export default class PointerTracker { + constructor() { + _defineProperty(this, "trackedPointers", new Map()); + + _defineProperty(this, "touchEventsIds", new Map()); + + _defineProperty(this, "lastMovedPointerId", void 0); + + _defineProperty(this, "cachedAverages", { + x: 0, + y: 0 + }); + + this.lastMovedPointerId = NaN; + + for (let i = 0; i < MAX_POINTERS; ++i) { + this.touchEventsIds.set(i, NaN); + } + } + + addToTracker(event) { + if (this.trackedPointers.has(event.pointerId)) { + return; + } + + this.lastMovedPointerId = event.pointerId; + const newElement = { + lastX: event.x, + lastY: event.y, + timeStamp: event.time, + velocityX: 0, + velocityY: 0 + }; + this.trackedPointers.set(event.pointerId, newElement); + this.mapTouchEventId(event.pointerId); + this.cachedAverages = { + x: this.getLastAvgX(), + y: this.getLastAvgY() + }; + } + + removeFromTracker(pointerId) { + this.trackedPointers.delete(pointerId); + this.removeMappedTouchId(pointerId); + } + + track(event) { + const element = this.trackedPointers.get(event.pointerId); + + if (!element) { + return; + } + + this.lastMovedPointerId = event.pointerId; + const dx = event.x - element.lastX; + const dy = event.y - element.lastY; + const dt = event.time - element.timeStamp; + element.velocityX = dx / dt * 1000 * VELOCITY_FACTOR; + element.velocityY = dy / dt * 1000 * VELOCITY_FACTOR; + element.lastX = event.x; + element.lastY = event.y; + this.trackedPointers.set(event.pointerId, element); + const avgX = this.getLastAvgX(); + const avgY = this.getLastAvgY(); + this.cachedAverages = { + x: avgX, + y: avgY + }; + } //Mapping TouchEvents ID + + + mapTouchEventId(id) { + for (const [mappedId, touchId] of this.touchEventsIds) { + if (isNaN(touchId)) { + this.touchEventsIds.set(mappedId, id); + break; + } + } + } + + removeMappedTouchId(id) { + const mappedId = this.getMappedTouchEventId(id); + + if (!isNaN(mappedId)) { + this.touchEventsIds.set(mappedId, NaN); + } + } + + getMappedTouchEventId(touchEventId) { + for (const [key, value] of this.touchEventsIds.entries()) { + if (value === touchEventId) { + return key; + } + } + + return NaN; + } + + getVelocityX(pointerId) { + var _this$trackedPointers; + + return (_this$trackedPointers = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers === void 0 ? void 0 : _this$trackedPointers.velocityX; + } + + getVelocityY(pointerId) { + var _this$trackedPointers2; + + return (_this$trackedPointers2 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers2 === void 0 ? void 0 : _this$trackedPointers2.velocityY; + } + /** + * Returns X coordinate of last moved pointer + */ + + + getLastX(pointerId) { + if (pointerId !== undefined) { + var _this$trackedPointers3; + + return (_this$trackedPointers3 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers3 === void 0 ? void 0 : _this$trackedPointers3.lastX; + } else { + var _this$trackedPointers4; + + return (_this$trackedPointers4 = this.trackedPointers.get(this.lastMovedPointerId)) === null || _this$trackedPointers4 === void 0 ? void 0 : _this$trackedPointers4.lastX; + } + } + /** + * Returns Y coordinate of last moved pointer + */ + + + getLastY(pointerId) { + if (pointerId !== undefined) { + var _this$trackedPointers5; + + return (_this$trackedPointers5 = this.trackedPointers.get(pointerId)) === null || _this$trackedPointers5 === void 0 ? void 0 : _this$trackedPointers5.lastY; + } else { + var _this$trackedPointers6; + + return (_this$trackedPointers6 = this.trackedPointers.get(this.lastMovedPointerId)) === null || _this$trackedPointers6 === void 0 ? void 0 : _this$trackedPointers6.lastY; + } + } // Some handlers use these methods to send average values in native event. + // This may happen when pointers have already been removed from tracker (i.e. pointerup event). + // In situation when NaN would be sent as a response, we return cached value. + // That prevents handlers from crashing + + + getLastAvgX() { + const avgX = this.getSumX() / this.trackedPointers.size; + return isNaN(avgX) ? this.cachedAverages.x : avgX; + } + + getLastAvgY() { + const avgY = this.getSumY() / this.trackedPointers.size; + return isNaN(avgY) ? this.cachedAverages.y : avgY; + } + + getSumX(ignoredPointer) { + let sumX = 0; + this.trackedPointers.forEach((value, key) => { + if (key !== ignoredPointer) { + sumX += value.lastX; + } + }); + return sumX; + } + + getSumY(ignoredPointer) { + let sumY = 0; + this.trackedPointers.forEach((value, key) => { + if (key !== ignoredPointer) { + sumY += value.lastY; + } + }); + return sumY; + } + + getTrackedPointersCount() { + return this.trackedPointers.size; + } + + getTrackedPointersID() { + const keys = []; + this.trackedPointers.forEach((_value, key) => { + keys.push(key); + }); + return keys; + } + + getData() { + return this.trackedPointers; + } + + resetTracker() { + this.trackedPointers.clear(); + this.lastMovedPointerId = NaN; + + for (let i = 0; i < MAX_POINTERS; ++i) { + this.touchEventsIds.set(i, NaN); + } + } + + static shareCommonPointers(stPointers, ndPointers) { + return stPointers.some(pointerId => ndPointers.includes(pointerId)); + } + +} +//# sourceMappingURL=PointerTracker.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js.map new file mode 100644 index 00000000..dc1443f1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/PointerTracker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PointerTracker.ts"],"names":["VELOCITY_FACTOR","MAX_POINTERS","PointerTracker","constructor","Map","x","y","lastMovedPointerId","NaN","i","touchEventsIds","set","addToTracker","event","trackedPointers","has","pointerId","newElement","lastX","lastY","timeStamp","time","velocityX","velocityY","mapTouchEventId","cachedAverages","getLastAvgX","getLastAvgY","removeFromTracker","delete","removeMappedTouchId","track","element","get","dx","dy","dt","avgX","avgY","id","mappedId","touchId","isNaN","getMappedTouchEventId","touchEventId","key","value","entries","getVelocityX","getVelocityY","getLastX","undefined","getLastY","getSumX","size","getSumY","ignoredPointer","sumX","forEach","sumY","getTrackedPointersCount","getTrackedPointersID","keys","_value","push","getData","resetTracker","clear","shareCommonPointers","stPointers","ndPointers","some","includes"],"mappings":"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","sourcesContent":["import { AdaptedEvent } from '../interfaces';\n\nexport interface TrackerElement {\n lastX: number;\n lastY: number;\n\n timeStamp: number;\n\n velocityX: number;\n velocityY: number;\n}\n\n// Used to scale velocity so that it is similar to velocity in Android/iOS\nconst VELOCITY_FACTOR = 0.2;\nconst MAX_POINTERS = 20;\n\nexport default class PointerTracker {\n private trackedPointers: Map = new Map<\n number,\n TrackerElement\n >();\n\n private touchEventsIds: Map = new Map();\n\n private lastMovedPointerId: number;\n\n private cachedAverages: { x: number; y: number } = { x: 0, y: 0 };\n\n public constructor() {\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public addToTracker(event: AdaptedEvent): void {\n if (this.trackedPointers.has(event.pointerId)) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const newElement: TrackerElement = {\n lastX: event.x,\n lastY: event.y,\n timeStamp: event.time,\n velocityX: 0,\n velocityY: 0,\n };\n\n this.trackedPointers.set(event.pointerId, newElement);\n this.mapTouchEventId(event.pointerId);\n\n this.cachedAverages = {\n x: this.getLastAvgX(),\n y: this.getLastAvgY(),\n };\n }\n\n public removeFromTracker(pointerId: number): void {\n this.trackedPointers.delete(pointerId);\n this.removeMappedTouchId(pointerId);\n }\n\n public track(event: AdaptedEvent): void {\n const element: TrackerElement = this.trackedPointers.get(\n event.pointerId\n ) as TrackerElement;\n\n if (!element) {\n return;\n }\n\n this.lastMovedPointerId = event.pointerId;\n\n const dx = event.x - element.lastX;\n const dy = event.y - element.lastY;\n const dt = event.time - element.timeStamp;\n\n element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR;\n element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR;\n\n element.lastX = event.x;\n element.lastY = event.y;\n\n this.trackedPointers.set(event.pointerId, element);\n\n const avgX: number = this.getLastAvgX();\n const avgY: number = this.getLastAvgY();\n\n this.cachedAverages = {\n x: avgX,\n y: avgY,\n };\n }\n\n //Mapping TouchEvents ID\n private mapTouchEventId(id: number): void {\n for (const [mappedId, touchId] of this.touchEventsIds) {\n if (isNaN(touchId)) {\n this.touchEventsIds.set(mappedId, id);\n break;\n }\n }\n }\n\n private removeMappedTouchId(id: number): void {\n const mappedId: number = this.getMappedTouchEventId(id);\n if (!isNaN(mappedId)) {\n this.touchEventsIds.set(mappedId, NaN);\n }\n }\n\n public getMappedTouchEventId(touchEventId: number): number {\n for (const [key, value] of this.touchEventsIds.entries()) {\n if (value === touchEventId) {\n return key;\n }\n }\n\n return NaN;\n }\n\n public getVelocityX(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityX as number;\n }\n public getVelocityY(pointerId: number): number {\n return this.trackedPointers.get(pointerId)?.velocityY as number;\n }\n\n /**\n * Returns X coordinate of last moved pointer\n */\n public getLastX(): number;\n\n /**\n *\n * @param pointerId\n * Returns X coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastX(pointerId: number): number;\n\n public getLastX(pointerId?: number): number {\n if (pointerId !== undefined) {\n return this.trackedPointers.get(pointerId)?.lastX as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number;\n }\n }\n\n /**\n * Returns Y coordinate of last moved pointer\n */\n public getLastY(): number;\n\n /**\n *\n * @param pointerId\n * Returns Y coordinate of given pointer\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n public getLastY(pointerId: number): number;\n\n public getLastY(pointerId?: number): number {\n if (pointerId !== undefined) {\n return this.trackedPointers.get(pointerId)?.lastY as number;\n } else {\n return this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number;\n }\n }\n\n // Some handlers use these methods to send average values in native event.\n // This may happen when pointers have already been removed from tracker (i.e. pointerup event).\n // In situation when NaN would be sent as a response, we return cached value.\n // That prevents handlers from crashing\n public getLastAvgX(): number {\n const avgX: number = this.getSumX() / this.trackedPointers.size;\n return isNaN(avgX) ? this.cachedAverages.x : avgX;\n }\n public getLastAvgY(): number {\n const avgY: number = this.getSumY() / this.trackedPointers.size;\n return isNaN(avgY) ? this.cachedAverages.y : avgY;\n }\n public getSumX(ignoredPointer?: number): number {\n let sumX = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumX += value.lastX;\n }\n });\n\n return sumX;\n }\n public getSumY(ignoredPointer?: number): number {\n let sumY = 0;\n\n this.trackedPointers.forEach((value, key) => {\n if (key !== ignoredPointer) {\n sumY += value.lastY;\n }\n });\n\n return sumY;\n }\n public getTrackedPointersCount(): number {\n return this.trackedPointers.size;\n }\n public getTrackedPointersID(): number[] {\n const keys: number[] = [];\n\n this.trackedPointers.forEach((_value, key) => {\n keys.push(key);\n });\n\n return keys;\n }\n\n public getData(): Map {\n return this.trackedPointers;\n }\n\n public resetTracker(): void {\n this.trackedPointers.clear();\n this.lastMovedPointerId = NaN;\n\n for (let i = 0; i < MAX_POINTERS; ++i) {\n this.touchEventsIds.set(i, NaN);\n }\n }\n\n public static shareCommonPointers(\n stPointers: number[],\n ndPointers: number[]\n ): boolean {\n return stPointers.some((pointerId) => ndPointers.includes(pointerId));\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js new file mode 100644 index 00000000..b236e72c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js @@ -0,0 +1,124 @@ +import { EventTypes, MouseButtons, PointerType, TouchEventType } from '../interfaces'; +import EventManager from './EventManager'; +import { isPointerInBounds } from '../utils'; +export default class TouchEventManager extends EventManager { + setListeners() { + this.view.addEventListener('touchstart', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent = this.mapEvent(event, EventTypes.DOWN, i, TouchEventType.DOWN); // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents + // If we leave stylus to send touch events, handlers will receive every action twice + + if (!isPointerInBounds(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y + }) || //@ts-ignore touchType field does exist + event.changedTouches[i].touchType === 'stylus') { + continue; + } + + this.markAsInBounds(adaptedEvent.pointerId); + + if (++this.activePointersCounter > 1) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN; + this.onPointerAdd(adaptedEvent); + } else { + this.onPointerDown(adaptedEvent); + } + } + }); + this.view.addEventListener('touchmove', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent = this.mapEvent(event, EventTypes.MOVE, i, TouchEventType.MOVE); //@ts-ignore touchType field does exist + + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + const inBounds = isPointerInBounds(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y + }); + const pointerIndex = this.pointersInBounds.indexOf(adaptedEvent.pointerId); + + if (inBounds) { + if (pointerIndex < 0) { + adaptedEvent.eventType = EventTypes.ENTER; + this.onPointerEnter(adaptedEvent); + this.markAsInBounds(adaptedEvent.pointerId); + } else { + this.onPointerMove(adaptedEvent); + } + } else { + if (pointerIndex >= 0) { + adaptedEvent.eventType = EventTypes.OUT; + this.onPointerOut(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + } else { + this.onPointerOutOfBounds(adaptedEvent); + } + } + } + }); + this.view.addEventListener('touchend', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + // When we call reset on gesture handlers, it also resets their event managers + // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view + // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view + // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly + if (this.activePointersCounter === 0) { + break; + } //@ts-ignore touchType field does exist + + + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + const adaptedEvent = this.mapEvent(event, EventTypes.UP, i, TouchEventType.UP); + this.markAsOutOfBounds(adaptedEvent.pointerId); + + if (--this.activePointersCounter > 0) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP; + this.onPointerRemove(adaptedEvent); + } else { + this.onPointerUp(adaptedEvent); + } + } + }); + this.view.addEventListener('touchcancel', event => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent = this.mapEvent(event, EventTypes.CANCEL, i, TouchEventType.CANCELLED); //@ts-ignore touchType field does exist + + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + this.onPointerCancel(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + this.activePointersCounter = 0; + } + }); + } + + mapEvent(event, eventType, index, touchEventType) { + const rect = this.view.getBoundingClientRect(); + const clientX = event.changedTouches[index].clientX; + const clientY = event.changedTouches[index].clientY; + return { + x: clientX, + y: clientY, + offsetX: clientX - rect.left, + offsetY: clientY - rect.top, + pointerId: event.changedTouches[index].identifier, + eventType: eventType, + pointerType: PointerType.TOUCH, + buttons: MouseButtons.NONE, + time: event.timeStamp, + allTouches: event.touches, + changedTouches: event.changedTouches, + touchEventType: touchEventType + }; + } + +} +//# sourceMappingURL=TouchEventManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js.map new file mode 100644 index 00000000..02130fec --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/tools/TouchEventManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TouchEventManager.ts"],"names":["EventTypes","MouseButtons","PointerType","TouchEventType","EventManager","isPointerInBounds","TouchEventManager","setListeners","view","addEventListener","event","i","changedTouches","length","adaptedEvent","mapEvent","DOWN","x","y","touchType","markAsInBounds","pointerId","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","markAsOutOfBounds","onPointerOutOfBounds","UP","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","CANCEL","CANCELLED","onPointerCancel","index","touchEventType","rect","getBoundingClientRect","clientX","clientY","offsetX","left","offsetY","top","identifier","pointerType","TOUCH","buttons","NONE","time","timeStamp","allTouches","touches"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n TouchEventType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class TouchEventManager extends EventManager {\n public setListeners(): void {\n this.view.addEventListener('touchstart', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.DOWN,\n i,\n TouchEventType.DOWN\n );\n\n // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents\n // If we leave stylus to send touch events, handlers will receive every action twice\n if (\n !isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n }) ||\n //@ts-ignore touchType field does exist\n event.changedTouches[i].touchType === 'stylus'\n ) {\n continue;\n }\n\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchmove', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.MOVE,\n i,\n TouchEventType.MOVE\n );\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n }\n });\n\n this.view.addEventListener('touchend', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n break;\n }\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.UP,\n i,\n TouchEventType.UP\n );\n\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('touchcancel', (event: TouchEvent) => {\n for (let i = 0; i < event.changedTouches.length; ++i) {\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL,\n i,\n TouchEventType.CANCELLED\n );\n\n //@ts-ignore touchType field does exist\n if (event.changedTouches[i].touchType === 'stylus') {\n continue;\n }\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n }\n });\n }\n\n protected mapEvent(\n event: TouchEvent,\n eventType: EventTypes,\n index: number,\n touchEventType: TouchEventType\n ): AdaptedEvent {\n const rect = this.view.getBoundingClientRect();\n const clientX = event.changedTouches[index].clientX;\n const clientY = event.changedTouches[index].clientY;\n\n return {\n x: clientX,\n y: clientY,\n offsetX: clientX - rect.left,\n offsetY: clientY - rect.top,\n pointerId: event.changedTouches[index].identifier,\n eventType: eventType,\n pointerType: PointerType.TOUCH,\n buttons: MouseButtons.NONE,\n time: event.timeStamp,\n allTouches: event.touches,\n changedTouches: event.changedTouches,\n touchEventType: touchEventType,\n };\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js new file mode 100644 index 00000000..63729be9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js @@ -0,0 +1,8 @@ +export function isPointerInBounds(view, { + x, + y +}) { + const rect = view.getBoundingClientRect(); + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js.map new file mode 100644 index 00000000..834be143 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.ts"],"names":["isPointerInBounds","view","x","y","rect","getBoundingClientRect","left","right","top","bottom"],"mappings":"AAAA,OAAO,SAASA,iBAAT,CACLC,IADK,EAEL;AAAEC,EAAAA,CAAF;AAAKC,EAAAA;AAAL,CAFK,EAGI;AACT,QAAMC,IAAa,GAAGH,IAAI,CAACI,qBAAL,EAAtB;AAEA,SAAOH,CAAC,IAAIE,IAAI,CAACE,IAAV,IAAkBJ,CAAC,IAAIE,IAAI,CAACG,KAA5B,IAAqCJ,CAAC,IAAIC,IAAI,CAACI,GAA/C,IAAsDL,CAAC,IAAIC,IAAI,CAACK,MAAvE;AACD","sourcesContent":["export function isPointerInBounds(\n view: HTMLElement,\n { x, y }: { x: number; y: number }\n): boolean {\n const rect: DOMRect = view.getBoundingClientRect();\n\n return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js new file mode 100644 index 00000000..57c405e0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js @@ -0,0 +1,94 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +import GestureHandler from './GestureHandler'; +import { TEST_MAX_IF_NOT_NAN } from './utils'; + +class DiscreteGestureHandler extends GestureHandler { + get isDiscrete() { + return true; + } + + get shouldEnableGestureOnSetup() { + return true; + } + + shouldFailUnderCustomCriteria({ + x, + y, + deltaX, + deltaY + }, { + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside + }) { + if (shouldCancelWhenOutside) { + if (!this.isPointInView({ + x, + y + })) { + return true; + } + } + + return TEST_MAX_IF_NOT_NAN(Math.abs(deltaX), maxDeltaX) || TEST_MAX_IF_NOT_NAN(Math.abs(deltaY), maxDeltaY) || TEST_MAX_IF_NOT_NAN(Math.abs(deltaY * deltaY + deltaX * deltaX), maxDistSq); + } + + transformNativeEvent({ + center: { + x, + y + } + }) { + // @ts-ignore FIXME(TS) + const rect = this.view.getBoundingClientRect(); + return { + absoluteX: x, + absoluteY: y, + x: x - rect.left, + y: y - rect.top + }; + } + + isGestureEnabledForEvent({ + minPointers, + maxPointers, + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside + }, _recognizer, { + maxPointers: pointerLength, + center, + deltaX, + deltaY + }) { + const validPointerCount = pointerLength >= minPointers && pointerLength <= maxPointers; + + if (this.shouldFailUnderCustomCriteria({ ...center, + deltaX, + deltaY + }, { + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside + }) || // A user probably won't land a multi-pointer tap on the first tick (so we cannot just cancel each time) + // but if the gesture is running and the user adds or subtracts another pointer then it should fail. + !validPointerCount && this.isGestureRunning) { + return { + failed: true + }; + } + + return { + success: validPointerCount + }; + } + +} + +export default DiscreteGestureHandler; +//# sourceMappingURL=DiscreteGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js.map new file mode 100644 index 00000000..25d1d75a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DiscreteGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["DiscreteGestureHandler.ts"],"names":["GestureHandler","TEST_MAX_IF_NOT_NAN","DiscreteGestureHandler","isDiscrete","shouldEnableGestureOnSetup","shouldFailUnderCustomCriteria","x","y","deltaX","deltaY","maxDeltaX","maxDeltaY","maxDistSq","shouldCancelWhenOutside","isPointInView","Math","abs","transformNativeEvent","center","rect","view","getBoundingClientRect","absoluteX","absoluteY","left","top","isGestureEnabledForEvent","minPointers","maxPointers","_recognizer","pointerLength","validPointerCount","isGestureRunning","failed","success"],"mappings":"AAAA;;AACA;AACA,OAAOA,cAAP,MAA2B,kBAA3B;AACA,SAASC,mBAAT,QAAoC,SAApC;;AAEA,MAAeC,sBAAf,SAA8CF,cAA9C,CAA6D;AAC7C,MAAVG,UAAU,GAAG;AACf,WAAO,IAAP;AACD;;AAE6B,MAA1BC,0BAA0B,GAAG;AAC/B,WAAO,IAAP;AACD;;AAEDC,EAAAA,6BAA6B,CAC3B;AAAEC,IAAAA,CAAF;AAAKC,IAAAA,CAAL;AAAQC,IAAAA,MAAR;AAAgBC,IAAAA;AAAhB,GAD2B,EAE3B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA,SAAxB;AAAmCC,IAAAA;AAAnC,GAF2B,EAG3B;AACA,QAAIA,uBAAJ,EAA6B;AAC3B,UAAI,CAAC,KAAKC,aAAL,CAAmB;AAAER,QAAAA,CAAF;AAAKC,QAAAA;AAAL,OAAnB,CAAL,EAAmC;AACjC,eAAO,IAAP;AACD;AACF;;AACD,WACEN,mBAAmB,CAACc,IAAI,CAACC,GAAL,CAASR,MAAT,CAAD,EAAmBE,SAAnB,CAAnB,IACAT,mBAAmB,CAACc,IAAI,CAACC,GAAL,CAASP,MAAT,CAAD,EAAmBE,SAAnB,CADnB,IAEAV,mBAAmB,CACjBc,IAAI,CAACC,GAAL,CAASP,MAAM,GAAGA,MAAT,GAAkBD,MAAM,GAAGA,MAApC,CADiB,EAEjBI,SAFiB,CAHrB;AAQD;;AAEDK,EAAAA,oBAAoB,CAAC;AAAEC,IAAAA,MAAM,EAAE;AAAEZ,MAAAA,CAAF;AAAKC,MAAAA;AAAL;AAAV,GAAD,EAA4B;AAC9C;AACA,UAAMY,IAAI,GAAG,KAAKC,IAAL,CAAWC,qBAAX,EAAb;AAEA,WAAO;AACLC,MAAAA,SAAS,EAAEhB,CADN;AAELiB,MAAAA,SAAS,EAAEhB,CAFN;AAGLD,MAAAA,CAAC,EAAEA,CAAC,GAAGa,IAAI,CAACK,IAHP;AAILjB,MAAAA,CAAC,EAAEA,CAAC,GAAGY,IAAI,CAACM;AAJP,KAAP;AAMD;;AAEDC,EAAAA,wBAAwB,CACtB;AACEC,IAAAA,WADF;AAEEC,IAAAA,WAFF;AAGElB,IAAAA,SAHF;AAIEC,IAAAA,SAJF;AAKEC,IAAAA,SALF;AAMEC,IAAAA;AANF,GADsB,EAStBgB,WATsB,EAUtB;AAAED,IAAAA,WAAW,EAAEE,aAAf;AAA8BZ,IAAAA,MAA9B;AAAsCV,IAAAA,MAAtC;AAA8CC,IAAAA;AAA9C,GAVsB,EAWtB;AACA,UAAMsB,iBAAiB,GACrBD,aAAa,IAAIH,WAAjB,IAAgCG,aAAa,IAAIF,WADnD;;AAGA,QACE,KAAKvB,6BAAL,CACE,EAAE,GAAGa,MAAL;AAAaV,MAAAA,MAAb;AAAqBC,MAAAA;AAArB,KADF,EAEE;AACEC,MAAAA,SADF;AAEEC,MAAAA,SAFF;AAGEC,MAAAA,SAHF;AAIEC,MAAAA;AAJF,KAFF,KASA;AACA;AACC,KAACkB,iBAAD,IAAsB,KAAKC,gBAZ9B,EAaE;AACA,aAAO;AAAEC,QAAAA,MAAM,EAAE;AAAV,OAAP;AACD;;AAED,WAAO;AAAEC,MAAAA,OAAO,EAAEH;AAAX,KAAP;AACD;;AAzE0D;;AA4E7D,eAAe7B,sBAAf","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport GestureHandler from './GestureHandler';\nimport { TEST_MAX_IF_NOT_NAN } from './utils';\n\nabstract class DiscreteGestureHandler extends GestureHandler {\n get isDiscrete() {\n return true;\n }\n\n get shouldEnableGestureOnSetup() {\n return true;\n }\n\n shouldFailUnderCustomCriteria(\n { x, y, deltaX, deltaY }: any,\n { maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside }: any\n ) {\n if (shouldCancelWhenOutside) {\n if (!this.isPointInView({ x, y })) {\n return true;\n }\n }\n return (\n TEST_MAX_IF_NOT_NAN(Math.abs(deltaX), maxDeltaX) ||\n TEST_MAX_IF_NOT_NAN(Math.abs(deltaY), maxDeltaY) ||\n TEST_MAX_IF_NOT_NAN(\n Math.abs(deltaY * deltaY + deltaX * deltaX),\n maxDistSq\n )\n );\n }\n\n transformNativeEvent({ center: { x, y } }: any) {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n\n return {\n absoluteX: x,\n absoluteY: y,\n x: x - rect.left,\n y: y - rect.top,\n };\n }\n\n isGestureEnabledForEvent(\n {\n minPointers,\n maxPointers,\n maxDeltaX,\n maxDeltaY,\n maxDistSq,\n shouldCancelWhenOutside,\n }: any,\n _recognizer: any,\n { maxPointers: pointerLength, center, deltaX, deltaY }: any\n ) {\n const validPointerCount =\n pointerLength >= minPointers && pointerLength <= maxPointers;\n\n if (\n this.shouldFailUnderCustomCriteria(\n { ...center, deltaX, deltaY },\n {\n maxDeltaX,\n maxDeltaY,\n maxDistSq,\n shouldCancelWhenOutside,\n }\n ) ||\n // A user probably won't land a multi-pointer tap on the first tick (so we cannot just cancel each time)\n // but if the gesture is running and the user adds or subtracts another pointer then it should fail.\n (!validPointerCount && this.isGestureRunning)\n ) {\n return { failed: true };\n }\n\n return { success: validPointerCount };\n }\n}\n\nexport default DiscreteGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js new file mode 100644 index 00000000..a652f1dc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js @@ -0,0 +1,40 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +import GestureHandler from './GestureHandler'; +import { PixelRatio } from 'react-native'; + +class DraggingGestureHandler extends GestureHandler { + get shouldEnableGestureOnSetup() { + return true; + } + + transformNativeEvent({ + deltaX, + deltaY, + velocityX, + velocityY, + center: { + x, + y + } + }) { + // @ts-ignore FIXME(TS) + const rect = this.view.getBoundingClientRect(); + const ratio = PixelRatio.get(); + return { + translationX: deltaX - (this.__initialX || 0), + translationY: deltaY - (this.__initialY || 0), + absoluteX: x, + absoluteY: y, + velocityX: velocityX * ratio, + velocityY: velocityY * ratio, + x: x - rect.left, + y: y - rect.top + }; + } + +} + +export default DraggingGestureHandler; +//# sourceMappingURL=DraggingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js.map new file mode 100644 index 00000000..3a9ce9b7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/DraggingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["DraggingGestureHandler.ts"],"names":["GestureHandler","PixelRatio","DraggingGestureHandler","shouldEnableGestureOnSetup","transformNativeEvent","deltaX","deltaY","velocityX","velocityY","center","x","y","rect","view","getBoundingClientRect","ratio","get","translationX","__initialX","translationY","__initialY","absoluteX","absoluteY","left","top"],"mappings":"AAAA;;AACA;AACA,OAAOA,cAAP,MAA+C,kBAA/C;AACA,SAASC,UAAT,QAA2B,cAA3B;;AAEA,MAAeC,sBAAf,SAA8CF,cAA9C,CAA6D;AAC7B,MAA1BG,0BAA0B,GAAG;AAC/B,WAAO,IAAP;AACD;;AAEDC,EAAAA,oBAAoB,CAAC;AACnBC,IAAAA,MADmB;AAEnBC,IAAAA,MAFmB;AAGnBC,IAAAA,SAHmB;AAInBC,IAAAA,SAJmB;AAKnBC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL;AALW,GAAD,EAMD;AACjB;AACA,UAAMC,IAAI,GAAG,KAAKC,IAAL,CAAWC,qBAAX,EAAb;AACA,UAAMC,KAAK,GAAGd,UAAU,CAACe,GAAX,EAAd;AACA,WAAO;AACLC,MAAAA,YAAY,EAAEZ,MAAM,IAAI,KAAKa,UAAL,IAAmB,CAAvB,CADf;AAELC,MAAAA,YAAY,EAAEb,MAAM,IAAI,KAAKc,UAAL,IAAmB,CAAvB,CAFf;AAGLC,MAAAA,SAAS,EAAEX,CAHN;AAILY,MAAAA,SAAS,EAAEX,CAJN;AAKLJ,MAAAA,SAAS,EAAEA,SAAS,GAAGQ,KALlB;AAMLP,MAAAA,SAAS,EAAEA,SAAS,GAAGO,KANlB;AAOLL,MAAAA,CAAC,EAAEA,CAAC,GAAGE,IAAI,CAACW,IAPP;AAQLZ,MAAAA,CAAC,EAAEA,CAAC,GAAGC,IAAI,CAACY;AARP,KAAP;AAUD;;AAzB0D;;AA4B7D,eAAetB,sBAAf","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport GestureHandler, { HammerInputExt } from './GestureHandler';\nimport { PixelRatio } from 'react-native';\n\nabstract class DraggingGestureHandler extends GestureHandler {\n get shouldEnableGestureOnSetup() {\n return true;\n }\n\n transformNativeEvent({\n deltaX,\n deltaY,\n velocityX,\n velocityY,\n center: { x, y },\n }: HammerInputExt) {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n const ratio = PixelRatio.get();\n return {\n translationX: deltaX - (this.__initialX || 0),\n translationY: deltaY - (this.__initialY || 0),\n absoluteX: x,\n absoluteY: y,\n velocityX: velocityX * ratio,\n velocityY: velocityY * ratio,\n x: x - rect.left,\n y: y - rect.top,\n };\n }\n}\n\nexport default DraggingGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js new file mode 100644 index 00000000..f88789ae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js @@ -0,0 +1,7 @@ +export class GesturePropError extends Error { + constructor(name, value, expectedType) { + super(`Invalid property \`${name}: ${value}\` expected \`${expectedType}\``); + } + +} +//# sourceMappingURL=Errors.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js.map new file mode 100644 index 00000000..fad94acd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/Errors.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["Errors.ts"],"names":["GesturePropError","Error","constructor","name","value","expectedType"],"mappings":"AAAA,OAAO,MAAMA,gBAAN,SAA+BC,KAA/B,CAAqC;AAC1CC,EAAAA,WAAW,CAACC,IAAD,EAAeC,KAAf,EAA+BC,YAA/B,EAAqD;AAC9D,UACG,sBAAqBF,IAAK,KAAIC,KAAM,iBAAgBC,YAAa,IADpE;AAGD;;AALyC","sourcesContent":["export class GesturePropError extends Error {\n constructor(name: string, value: unknown, expectedType: string) {\n super(\n `Invalid property \\`${name}: ${value}\\` expected \\`${expectedType}\\``\n );\n }\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js new file mode 100644 index 00000000..4eeb510f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js @@ -0,0 +1,156 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +import Hammer from '@egjs/hammerjs'; +import { Direction } from './constants'; +import { GesturePropError } from './Errors'; +import DraggingGestureHandler from './DraggingGestureHandler'; +import { isnan } from './utils'; + +class FlingGestureHandler extends DraggingGestureHandler { + get name() { + return 'swipe'; + } + + get NativeGestureClass() { + return Hammer.Swipe; + } + + onGestureActivated(event) { + this.sendEvent({ ...event, + eventType: Hammer.INPUT_MOVE, + isFinal: false, + isFirst: true + }); + this.isGestureRunning = false; + this.hasGestureFailed = false; + this.sendEvent({ ...event, + eventType: Hammer.INPUT_END, + isFinal: true + }); + } + + onRawEvent(ev) { + super.onRawEvent(ev); + + if (this.hasGestureFailed) { + return; + } // Hammer doesn't send a `cancel` event for taps. + // Manually fail the event. + + + if (ev.isFinal) { + setTimeout(() => { + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } else if (!this.hasGestureFailed && !this.isGestureRunning) { + // Tap Gesture start event + const gesture = this.hammer.get(this.name); // @ts-ignore FIXME(TS) + + if (gesture.options.enable(gesture, ev)) { + this.onStart(ev); + this.sendEvent(ev); + } + } + } + + getHammerConfig() { + return { + // @ts-ignore FIXME(TS) + pointers: this.config.numberOfPointers, + direction: this.getDirection() + }; + } + + getTargetDirections(direction) { + const directions = []; + + if (direction & Direction.RIGHT) { + directions.push(Hammer.DIRECTION_RIGHT); + } + + if (direction & Direction.LEFT) { + directions.push(Hammer.DIRECTION_LEFT); + } + + if (direction & Direction.UP) { + directions.push(Hammer.DIRECTION_UP); + } + + if (direction & Direction.DOWN) { + directions.push(Hammer.DIRECTION_DOWN); + } // const hammerDirection = directions.reduce((a, b) => a | b, 0); + + + return directions; + } + + getDirection() { + // @ts-ignore FIXME(TS) + const { + direction + } = this.getConfig(); + let directions = []; + + if (direction & Direction.RIGHT) { + directions.push(Hammer.DIRECTION_HORIZONTAL); + } + + if (direction & Direction.LEFT) { + directions.push(Hammer.DIRECTION_HORIZONTAL); + } + + if (direction & Direction.UP) { + directions.push(Hammer.DIRECTION_VERTICAL); + } + + if (direction & Direction.DOWN) { + directions.push(Hammer.DIRECTION_VERTICAL); + } + + directions = [...new Set(directions)]; + if (directions.length === 0) return Hammer.DIRECTION_NONE; + if (directions.length === 1) return directions[0]; + return Hammer.DIRECTION_ALL; + } + + isGestureEnabledForEvent({ + numberOfPointers + }, _recognizer, { + maxPointers: pointerLength + }) { + const validPointerCount = pointerLength === numberOfPointers; + + if (!validPointerCount && this.isGestureRunning) { + return { + failed: true + }; + } + + return { + success: validPointerCount + }; + } + + updateGestureConfig({ + numberOfPointers = 1, + direction, + ...props + }) { + if (isnan(direction) || typeof direction !== 'number') { + throw new GesturePropError('direction', direction, 'number'); + } + + return super.updateGestureConfig({ + numberOfPointers, + direction, + ...props + }); + } + +} + +export default FlingGestureHandler; +//# sourceMappingURL=FlingGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js.map new file mode 100644 index 00000000..a6336ec2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/FlingGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["FlingGestureHandler.ts"],"names":["Hammer","Direction","GesturePropError","DraggingGestureHandler","isnan","FlingGestureHandler","name","NativeGestureClass","Swipe","onGestureActivated","event","sendEvent","eventType","INPUT_MOVE","isFinal","isFirst","isGestureRunning","hasGestureFailed","INPUT_END","onRawEvent","ev","setTimeout","cancelEvent","gesture","hammer","get","options","enable","onStart","getHammerConfig","pointers","config","numberOfPointers","direction","getDirection","getTargetDirections","directions","RIGHT","push","DIRECTION_RIGHT","LEFT","DIRECTION_LEFT","UP","DIRECTION_UP","DOWN","DIRECTION_DOWN","getConfig","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","Set","length","DIRECTION_NONE","DIRECTION_ALL","isGestureEnabledForEvent","_recognizer","maxPointers","pointerLength","validPointerCount","failed","success","updateGestureConfig","props"],"mappings":"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","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\n\nimport { Direction } from './constants';\nimport { GesturePropError } from './Errors';\nimport DraggingGestureHandler from './DraggingGestureHandler';\nimport { isnan } from './utils';\nimport { HammerInputExt } from './GestureHandler';\n\nclass FlingGestureHandler extends DraggingGestureHandler {\n get name() {\n return 'swipe';\n }\n\n get NativeGestureClass() {\n return Hammer.Swipe;\n }\n\n onGestureActivated(event: HammerInputExt) {\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_MOVE,\n isFinal: false,\n isFirst: true,\n });\n this.isGestureRunning = false;\n this.hasGestureFailed = false;\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_END,\n isFinal: true,\n });\n }\n\n onRawEvent(ev: HammerInputExt) {\n super.onRawEvent(ev);\n if (this.hasGestureFailed) {\n return;\n }\n // Hammer doesn't send a `cancel` event for taps.\n // Manually fail the event.\n if (ev.isFinal) {\n setTimeout(() => {\n if (this.isGestureRunning) {\n this.cancelEvent(ev);\n }\n });\n } else if (!this.hasGestureFailed && !this.isGestureRunning) {\n // Tap Gesture start event\n const gesture = this.hammer!.get(this.name);\n // @ts-ignore FIXME(TS)\n if (gesture.options.enable(gesture, ev)) {\n this.onStart(ev);\n this.sendEvent(ev);\n }\n }\n }\n\n getHammerConfig() {\n return {\n // @ts-ignore FIXME(TS)\n pointers: this.config.numberOfPointers,\n direction: this.getDirection(),\n };\n }\n\n getTargetDirections(direction: number) {\n const directions = [];\n if (direction & Direction.RIGHT) {\n directions.push(Hammer.DIRECTION_RIGHT);\n }\n if (direction & Direction.LEFT) {\n directions.push(Hammer.DIRECTION_LEFT);\n }\n if (direction & Direction.UP) {\n directions.push(Hammer.DIRECTION_UP);\n }\n if (direction & Direction.DOWN) {\n directions.push(Hammer.DIRECTION_DOWN);\n }\n // const hammerDirection = directions.reduce((a, b) => a | b, 0);\n return directions;\n }\n\n getDirection() {\n // @ts-ignore FIXME(TS)\n const { direction } = this.getConfig();\n\n let directions = [];\n if (direction & Direction.RIGHT) {\n directions.push(Hammer.DIRECTION_HORIZONTAL);\n }\n if (direction & Direction.LEFT) {\n directions.push(Hammer.DIRECTION_HORIZONTAL);\n }\n if (direction & Direction.UP) {\n directions.push(Hammer.DIRECTION_VERTICAL);\n }\n if (direction & Direction.DOWN) {\n directions.push(Hammer.DIRECTION_VERTICAL);\n }\n directions = [...new Set(directions)];\n\n if (directions.length === 0) return Hammer.DIRECTION_NONE;\n if (directions.length === 1) return directions[0];\n return Hammer.DIRECTION_ALL;\n }\n\n isGestureEnabledForEvent(\n { numberOfPointers }: any,\n _recognizer: any,\n { maxPointers: pointerLength }: any\n ) {\n const validPointerCount = pointerLength === numberOfPointers;\n if (!validPointerCount && this.isGestureRunning) {\n return { failed: true };\n }\n return { success: validPointerCount };\n }\n\n updateGestureConfig({ numberOfPointers = 1, direction, ...props }: any) {\n if (isnan(direction) || typeof direction !== 'number') {\n throw new GesturePropError('direction', direction, 'number');\n }\n return super.updateGestureConfig({\n numberOfPointers,\n direction,\n ...props,\n });\n }\n}\n\nexport default FlingGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js new file mode 100644 index 00000000..307d2a90 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js @@ -0,0 +1,562 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +import Hammer from '@egjs/hammerjs'; +import { findNodeHandle } from 'react-native'; +import { State } from '../State'; +import { EventMap } from './constants'; +import * as NodeManager from './NodeManager'; // TODO(TS) Replace with HammerInput if https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438/files is merged + +let gestureInstances = 0; + +class GestureHandler { + get id() { + return `${this.name}${this.gestureInstance}`; + } // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it + // here to use instanceof would cause import cycle + + + get isNative() { + return false; + } + + get isDiscrete() { + return false; + } + + get shouldEnableGestureOnSetup() { + throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup'); + } + + constructor() { + _defineProperty(this, "handlerTag", void 0); + + _defineProperty(this, "isGestureRunning", false); + + _defineProperty(this, "view", null); + + _defineProperty(this, "hasCustomActivationCriteria", void 0); + + _defineProperty(this, "hasGestureFailed", false); + + _defineProperty(this, "hammer", null); + + _defineProperty(this, "initialRotation", null); + + _defineProperty(this, "__initialX", void 0); + + _defineProperty(this, "__initialY", void 0); + + _defineProperty(this, "config", {}); + + _defineProperty(this, "previousState", State.UNDETERMINED); + + _defineProperty(this, "pendingGestures", {}); + + _defineProperty(this, "oldState", State.UNDETERMINED); + + _defineProperty(this, "lastSentState", null); + + _defineProperty(this, "gestureInstance", void 0); + + _defineProperty(this, "_stillWaiting", void 0); + + _defineProperty(this, "propsRef", void 0); + + _defineProperty(this, "ref", void 0); + + _defineProperty(this, "clearSelfAsPending", () => { + if (Array.isArray(this.config.waitFor)) { + for (const gesture of this.config.waitFor) { + gesture.removePendingGesture(this.id); + } + } + }); + + _defineProperty(this, "destroy", () => { + this.clearSelfAsPending(); + + if (this.hammer) { + this.hammer.stop(false); + this.hammer.destroy(); + } + + this.hammer = null; + }); + + _defineProperty(this, "isPointInView", ({ + x, + y + }) => { + // @ts-ignore FIXME(TS) + const rect = this.view.getBoundingClientRect(); + const pointerInside = x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + return pointerInside; + }); + + _defineProperty(this, "sendEvent", nativeEvent => { + const { + onGestureHandlerEvent, + onGestureHandlerStateChange + } = this.propsRef.current; + const event = this.transformEventData(nativeEvent); + invokeNullableMethod(onGestureHandlerEvent, event); + + if (this.lastSentState !== event.nativeEvent.state) { + this.lastSentState = event.nativeEvent.state; + invokeNullableMethod(onGestureHandlerStateChange, event); + } + }); + + _defineProperty(this, "sync", () => { + const gesture = this.hammer.get(this.name); + if (!gesture) return; + + const enable = (recognizer, inputData) => { + if (!this.config.enabled) { + this.isGestureRunning = false; + this.hasGestureFailed = false; + return false; + } // Prevent events before the system is ready. + + + if (!inputData || !recognizer.options || typeof inputData.maxPointers === 'undefined') { + return this.shouldEnableGestureOnSetup; + } + + if (this.hasGestureFailed) { + return false; + } + + if (!this.isDiscrete) { + if (this.isGestureRunning) { + return true; + } // The built-in hammer.js "waitFor" doesn't work across multiple views. + // Only process if there are views to wait for. + + + this._stillWaiting = this._getPendingGestures(); // This gesture should continue waiting. + + if (this._stillWaiting.length) { + // Check to see if one of the gestures you're waiting for has started. + // If it has then the gesture should fail. + for (const gesture of this._stillWaiting) { + // When the target gesture has started, this gesture must force fail. + if (!gesture.isDiscrete && gesture.isGestureRunning) { + this.hasGestureFailed = true; + this.isGestureRunning = false; + return false; + } + } // This gesture shouldn't start until the others have finished. + + + return false; + } + } // Use default behaviour + + + if (!this.hasCustomActivationCriteria) { + return true; + } + + const deltaRotation = this.initialRotation == null ? 0 : inputData.rotation - this.initialRotation; // @ts-ignore FIXME(TS) + + const { + success, + failed + } = this.isGestureEnabledForEvent(this.getConfig(), recognizer, { ...inputData, + deltaRotation + }); + + if (failed) { + this.simulateCancelEvent(inputData); + this.hasGestureFailed = true; + } + + return success; + }; + + const params = this.getHammerConfig(); // @ts-ignore FIXME(TS) + + gesture.set({ ...params, + enable + }); + }); + + this.gestureInstance = gestureInstances++; + this.hasCustomActivationCriteria = false; + } + + getConfig() { + return this.config; + } + + onWaitingEnded(_gesture) {} + + removePendingGesture(id) { + delete this.pendingGestures[id]; + } + + addPendingGesture(gesture) { + this.pendingGestures[gesture.id] = gesture; + } + + isGestureEnabledForEvent(_config, _recognizer, _event) { + return { + success: true + }; + } + + get NativeGestureClass() { + throw new Error('Must override GestureHandler.NativeGestureClass'); + } + + updateHasCustomActivationCriteria(_config) { + return true; + } + + updateGestureConfig({ + enabled = true, + ...props + }) { + this.clearSelfAsPending(); + this.config = this.ensureConfig({ + enabled, + ...props + }); + this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(this.config); + + if (Array.isArray(this.config.waitFor)) { + for (const gesture of this.config.waitFor) { + gesture.addPendingGesture(this); + } + } + + if (this.hammer) { + this.sync(); + } + + return this.config; + } + + getState(type) { + // @ts-ignore TODO(TS) check if this is needed + if (type == 0) { + return 0; + } + + return EventMap[type]; + } + + transformEventData(event) { + const { + eventType, + maxPointers: numberOfPointers + } = event; // const direction = DirectionMap[ev.direction]; + + const changedTouch = event.changedPointers[0]; + const pointerInside = this.isPointInView({ + x: changedTouch.clientX, + y: changedTouch.clientY + }); // TODO(TS) Remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50966 is merged. + + const state = this.getState(eventType); + + if (state !== this.previousState) { + this.oldState = this.previousState; + this.previousState = state; + } + + return { + nativeEvent: { + numberOfPointers, + state, + pointerInside, + ...this.transformNativeEvent(event), + // onHandlerStateChange only + handlerTag: this.handlerTag, + target: this.ref, + // send oldState only when the state was changed, or is different than ACTIVE + // GestureDetector relies on the presence of `oldState` to differentiate between + // update events and state change events + oldState: state !== this.previousState || state != 4 ? this.oldState : undefined + }, + timeStamp: Date.now() + }; + } + + transformNativeEvent(_event) { + return {}; + } + + cancelPendingGestures(event) { + for (const gesture of Object.values(this.pendingGestures)) { + if (gesture && gesture.isGestureRunning) { + gesture.hasGestureFailed = true; + gesture.cancelEvent(event); + } + } + } + + notifyPendingGestures() { + for (const gesture of Object.values(this.pendingGestures)) { + if (gesture) { + gesture.onWaitingEnded(this); + } + } + } // FIXME event is undefined in runtime when firstly invoked (see Draggable example), check other functions taking event as input + + + onGestureEnded(event) { + this.isGestureRunning = false; + this.cancelPendingGestures(event); + } + + forceInvalidate(event) { + if (this.isGestureRunning) { + this.hasGestureFailed = true; + this.cancelEvent(event); + } + } + + cancelEvent(event) { + this.notifyPendingGestures(); + this.sendEvent({ ...event, + eventType: Hammer.INPUT_CANCEL, + isFinal: true + }); + this.onGestureEnded(event); + } + + onRawEvent({ + isFirst + }) { + if (isFirst) { + this.hasGestureFailed = false; + } + } + + shouldUseTouchEvents(config) { + var _config$simultaneousH, _config$simultaneousH2; + + return (_config$simultaneousH = (_config$simultaneousH2 = config.simultaneousHandlers) === null || _config$simultaneousH2 === void 0 ? void 0 : _config$simultaneousH2.some(handler => handler.isNative)) !== null && _config$simultaneousH !== void 0 ? _config$simultaneousH : false; + } + + setView(ref, propsRef) { + if (ref == null) { + this.destroy(); + this.view = null; + return; + } // @ts-ignore window doesn't exist on global type as we don't want to use Node types + + + const SUPPORTS_TOUCH = ('ontouchstart' in window); + this.propsRef = propsRef; + this.ref = ref; + this.view = findNodeHandle(ref); // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops + // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous + // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible. + + this.hammer = SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config) ? new Hammer.Manager(this.view, { + inputClass: Hammer.TouchInput + }) : new Hammer.Manager(this.view); + this.oldState = State.UNDETERMINED; + this.previousState = State.UNDETERMINED; + this.lastSentState = null; + const { + NativeGestureClass + } = this; // @ts-ignore TODO(TS) + + const gesture = new NativeGestureClass(this.getHammerConfig()); + this.hammer.add(gesture); + this.hammer.on('hammer.input', ev => { + if (!this.config.enabled) { + this.hasGestureFailed = false; + this.isGestureRunning = false; + return; + } + + this.onRawEvent(ev); // TODO: Bacon: Check against something other than null + // The isFirst value is not called when the first rotation is calculated. + + if (this.initialRotation === null && ev.rotation !== 0) { + this.initialRotation = ev.rotation; + } + + if (ev.isFinal) { + // in favor of a willFail otherwise the last frame of the gesture will be captured. + setTimeout(() => { + this.initialRotation = null; + this.hasGestureFailed = false; + }); + } + }); + this.setupEvents(); + this.sync(); + } + + setupEvents() { + // TODO(TS) Hammer types aren't exactly that what we get in runtime + if (!this.isDiscrete) { + this.hammer.on(`${this.name}start`, event => this.onStart(event)); + this.hammer.on(`${this.name}end ${this.name}cancel`, event => { + this.onGestureEnded(event); + }); + } + + this.hammer.on(this.name, ev => this.onGestureActivated(ev)); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged + } + + onStart({ + deltaX, + deltaY, + rotation + }) { + // Reset the state for the next gesture + this.oldState = State.UNDETERMINED; + this.previousState = State.UNDETERMINED; + this.lastSentState = null; + this.isGestureRunning = true; + this.__initialX = deltaX; + this.__initialY = deltaY; + this.initialRotation = rotation; + } + + onGestureActivated(ev) { + this.sendEvent(ev); + } + + onSuccess() {} + + _getPendingGestures() { + if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) { + // Get the list of gestures that this gesture is still waiting for. + // Use `=== false` in case a ref that isn't a gesture handler is used. + const stillWaiting = this.config.waitFor.filter(({ + hasGestureFailed + }) => hasGestureFailed === false); + return stillWaiting; + } + + return []; + } + + getHammerConfig() { + const pointers = this.config.minPointers === this.config.maxPointers ? this.config.minPointers : 0; + return { + pointers + }; + } + + simulateCancelEvent(_inputData) {} // Validate the props + + + ensureConfig(config) { + const props = { ...config + }; // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined) + + if ('minDist' in config) { + props.minDist = config.minDist; + props.minDistSq = props.minDist * props.minDist; + } + + if ('minVelocity' in config) { + props.minVelocity = config.minVelocity; + props.minVelocitySq = props.minVelocity * props.minVelocity; + } + + if ('maxDist' in config) { + props.maxDist = config.maxDist; + props.maxDistSq = config.maxDist * config.maxDist; + } + + if ('waitFor' in config) { + props.waitFor = asArray(config.waitFor).map(({ + handlerTag + }) => NodeManager.getHandler(handlerTag)).filter(v => v); + } else { + props.waitFor = null; + } + + if ('simultaneousHandlers' in config) { + const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config); + props.simultaneousHandlers = asArray(config.simultaneousHandlers).map(handler => { + if (typeof handler === 'number') { + return NodeManager.getHandler(handler); + } else { + return NodeManager.getHandler(handler.handlerTag); + } + }).filter(v => v); + + if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) { + requestAnimationFrame(() => { + // if the undelying event API needs to be changed, we need to unmount and mount + // the hammer instance again. + this.destroy(); + this.setView(this.ref, this.propsRef); + }); + } + } else { + props.simultaneousHandlers = null; + } + + const configProps = ['minPointers', 'maxPointers', 'minDist', 'maxDist', 'maxDistSq', 'minVelocitySq', 'minDistSq', 'minVelocity', 'failOffsetXStart', 'failOffsetYStart', 'failOffsetXEnd', 'failOffsetYEnd', 'activeOffsetXStart', 'activeOffsetXEnd', 'activeOffsetYStart', 'activeOffsetYEnd']; + configProps.forEach(prop => { + if (typeof props[prop] === 'undefined') { + props[prop] = Number.NaN; + } + }); + return props; // TODO(TS) how to convince TS that props are filled? + } + +} // TODO(TS) investigate this method +// Used for sending data to a callback or AnimatedEvent + + +function invokeNullableMethod(method, event) { + if (method) { + if (typeof method === 'function') { + method(event); + } else { + // For use with reanimated's AnimatedEvent + if ('__getHandler' in method && typeof method.__getHandler === 'function') { + const handler = method.__getHandler(); + + invokeNullableMethod(handler, event); + } else { + if ('__nodeConfig' in method) { + const { + argMapping + } = method.__nodeConfig; + + if (Array.isArray(argMapping)) { + for (const [index, [key, value]] of argMapping.entries()) { + if (key in event.nativeEvent) { + // @ts-ignore fix method type + const nativeValue = event.nativeEvent[key]; + + if (value && value.setValue) { + // Reanimated API + value.setValue(nativeValue); + } else { + // RN Animated API + method.__nodeConfig.argMapping[index] = [key, nativeValue]; + } + } + } + } + } + } + } + } +} + +function asArray(value) { + // TODO(TS) use config.waitFor type + return value == null ? [] : Array.isArray(value) ? value : [value]; +} + +export default GestureHandler; +//# sourceMappingURL=GestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js.map new file mode 100644 index 00000000..797c1a8d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/GestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["GestureHandler.ts"],"names":["Hammer","findNodeHandle","State","EventMap","NodeManager","gestureInstances","GestureHandler","id","name","gestureInstance","isNative","isDiscrete","shouldEnableGestureOnSetup","Error","constructor","UNDETERMINED","Array","isArray","config","waitFor","gesture","removePendingGesture","clearSelfAsPending","hammer","stop","destroy","x","y","rect","view","getBoundingClientRect","pointerInside","left","right","top","bottom","nativeEvent","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","event","transformEventData","invokeNullableMethod","lastSentState","state","get","enable","recognizer","inputData","enabled","isGestureRunning","hasGestureFailed","options","maxPointers","_stillWaiting","_getPendingGestures","length","hasCustomActivationCriteria","deltaRotation","initialRotation","rotation","success","failed","isGestureEnabledForEvent","getConfig","simulateCancelEvent","params","getHammerConfig","set","onWaitingEnded","_gesture","pendingGestures","addPendingGesture","_config","_recognizer","_event","NativeGestureClass","updateHasCustomActivationCriteria","updateGestureConfig","props","ensureConfig","sync","getState","type","eventType","numberOfPointers","changedTouch","changedPointers","isPointInView","clientX","clientY","previousState","oldState","transformNativeEvent","handlerTag","target","ref","undefined","timeStamp","Date","now","cancelPendingGestures","Object","values","cancelEvent","notifyPendingGestures","onGestureEnded","forceInvalidate","sendEvent","INPUT_CANCEL","isFinal","onRawEvent","isFirst","shouldUseTouchEvents","simultaneousHandlers","some","handler","setView","SUPPORTS_TOUCH","window","Manager","inputClass","TouchInput","add","on","ev","setTimeout","setupEvents","onStart","onGestureActivated","deltaX","deltaY","__initialX","__initialY","onSuccess","stillWaiting","filter","pointers","minPointers","_inputData","minDist","minDistSq","minVelocity","minVelocitySq","maxDist","maxDistSq","asArray","map","getHandler","v","requestAnimationFrame","configProps","forEach","prop","Number","NaN","method","__getHandler","argMapping","__nodeConfig","index","key","value","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\nimport { findNodeHandle } from 'react-native';\n\nimport { State } from '../State';\nimport { EventMap } from './constants';\nimport * as NodeManager from './NodeManager';\n\n// TODO(TS) Replace with HammerInput if https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438/files is merged\nexport type HammerInputExt = Omit;\n\nexport type Config = Partial<{\n enabled: boolean;\n minPointers: number;\n maxPointers: number;\n minDist: number;\n minDistSq: number;\n minVelocity: number;\n minVelocitySq: number;\n maxDist: number;\n maxDistSq: number;\n failOffsetXStart: number;\n failOffsetYStart: number;\n failOffsetXEnd: number;\n failOffsetYEnd: number;\n activeOffsetXStart: number;\n activeOffsetXEnd: number;\n activeOffsetYStart: number;\n activeOffsetYEnd: number;\n waitFor: any[] | null;\n simultaneousHandlers: any[] | null;\n}>;\n\ntype NativeEvent = ReturnType;\n\nlet gestureInstances = 0;\n\nabstract class GestureHandler {\n public handlerTag: any;\n public isGestureRunning = false;\n public view: number | null = null;\n protected hasCustomActivationCriteria: boolean;\n protected hasGestureFailed = false;\n protected hammer: HammerManager | null = null;\n protected initialRotation: number | null = null;\n protected __initialX: any;\n protected __initialY: any;\n protected config: Config = {};\n protected previousState: State = State.UNDETERMINED;\n private pendingGestures: Record = {};\n private oldState: State = State.UNDETERMINED;\n private lastSentState: State | null = null;\n private gestureInstance: number;\n private _stillWaiting: any;\n private propsRef: any;\n private ref: any;\n\n abstract get name(): string;\n\n get id() {\n return `${this.name}${this.gestureInstance}`;\n }\n\n // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it\n // here to use instanceof would cause import cycle\n get isNative() {\n return false;\n }\n\n get isDiscrete() {\n return false;\n }\n\n get shouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n constructor() {\n this.gestureInstance = gestureInstances++;\n this.hasCustomActivationCriteria = false;\n }\n\n getConfig() {\n return this.config;\n }\n\n onWaitingEnded(_gesture: this) {}\n\n removePendingGesture(id: string) {\n delete this.pendingGestures[id];\n }\n\n addPendingGesture(gesture: this) {\n this.pendingGestures[gesture.id] = gesture;\n }\n\n isGestureEnabledForEvent(\n _config: any,\n _recognizer: any,\n _event: any\n ): { failed?: boolean; success?: boolean } {\n return { success: true };\n }\n\n get NativeGestureClass(): RecognizerStatic {\n throw new Error('Must override GestureHandler.NativeGestureClass');\n }\n\n updateHasCustomActivationCriteria(_config: Config) {\n return true;\n }\n\n clearSelfAsPending = () => {\n if (Array.isArray(this.config.waitFor)) {\n for (const gesture of this.config.waitFor) {\n gesture.removePendingGesture(this.id);\n }\n }\n };\n\n updateGestureConfig({ enabled = true, ...props }) {\n this.clearSelfAsPending();\n\n this.config = this.ensureConfig({ enabled, ...props });\n this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(\n this.config\n );\n if (Array.isArray(this.config.waitFor)) {\n for (const gesture of this.config.waitFor) {\n gesture.addPendingGesture(this);\n }\n }\n\n if (this.hammer) {\n this.sync();\n }\n return this.config;\n }\n\n destroy = () => {\n this.clearSelfAsPending();\n\n if (this.hammer) {\n this.hammer.stop(false);\n this.hammer.destroy();\n }\n this.hammer = null;\n };\n\n isPointInView = ({ x, y }: { x: number; y: number }) => {\n // @ts-ignore FIXME(TS)\n const rect = this.view!.getBoundingClientRect();\n const pointerInside =\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n return pointerInside;\n };\n\n getState(type: keyof typeof EventMap): State {\n // @ts-ignore TODO(TS) check if this is needed\n if (type == 0) {\n return 0;\n }\n return EventMap[type];\n }\n\n transformEventData(event: HammerInputExt) {\n const { eventType, maxPointers: numberOfPointers } = event;\n // const direction = DirectionMap[ev.direction];\n const changedTouch = event.changedPointers[0];\n const pointerInside = this.isPointInView({\n x: changedTouch.clientX,\n y: changedTouch.clientY,\n });\n\n // TODO(TS) Remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50966 is merged.\n const state = this.getState(eventType as 1 | 2 | 4 | 8);\n if (state !== this.previousState) {\n this.oldState = this.previousState;\n this.previousState = state;\n }\n\n return {\n nativeEvent: {\n numberOfPointers,\n state,\n pointerInside,\n ...this.transformNativeEvent(event),\n // onHandlerStateChange only\n handlerTag: this.handlerTag,\n target: this.ref,\n // send oldState only when the state was changed, or is different than ACTIVE\n // GestureDetector relies on the presence of `oldState` to differentiate between\n // update events and state change events\n oldState:\n state !== this.previousState || state != 4\n ? this.oldState\n : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n transformNativeEvent(_event: HammerInputExt) {\n return {};\n }\n\n sendEvent = (nativeEvent: HammerInputExt) => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange } =\n this.propsRef.current;\n\n const event = this.transformEventData(nativeEvent);\n\n invokeNullableMethod(onGestureHandlerEvent, event);\n if (this.lastSentState !== event.nativeEvent.state) {\n this.lastSentState = event.nativeEvent.state as State;\n invokeNullableMethod(onGestureHandlerStateChange, event);\n }\n };\n\n cancelPendingGestures(event: HammerInputExt) {\n for (const gesture of Object.values(this.pendingGestures)) {\n if (gesture && gesture.isGestureRunning) {\n gesture.hasGestureFailed = true;\n gesture.cancelEvent(event);\n }\n }\n }\n\n notifyPendingGestures() {\n for (const gesture of Object.values(this.pendingGestures)) {\n if (gesture) {\n gesture.onWaitingEnded(this);\n }\n }\n }\n\n // FIXME event is undefined in runtime when firstly invoked (see Draggable example), check other functions taking event as input\n onGestureEnded(event: HammerInputExt) {\n this.isGestureRunning = false;\n this.cancelPendingGestures(event);\n }\n\n forceInvalidate(event: HammerInputExt) {\n if (this.isGestureRunning) {\n this.hasGestureFailed = true;\n this.cancelEvent(event);\n }\n }\n\n cancelEvent(event: HammerInputExt) {\n this.notifyPendingGestures();\n this.sendEvent({\n ...event,\n eventType: Hammer.INPUT_CANCEL,\n isFinal: true,\n });\n this.onGestureEnded(event);\n }\n\n onRawEvent({ isFirst }: HammerInputExt) {\n if (isFirst) {\n this.hasGestureFailed = false;\n }\n }\n\n shouldUseTouchEvents(config: Config) {\n return (\n config.simultaneousHandlers?.some((handler) => handler.isNative) ?? false\n );\n }\n\n setView(ref: Parameters['0'], propsRef: any) {\n if (ref == null) {\n this.destroy();\n this.view = null;\n return;\n }\n\n // @ts-ignore window doesn't exist on global type as we don't want to use Node types\n const SUPPORTS_TOUCH = 'ontouchstart' in window;\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.view = findNodeHandle(ref);\n\n // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops\n // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous\n // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible.\n this.hammer =\n SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config)\n ? new Hammer.Manager(this.view as any, {\n inputClass: Hammer.TouchInput,\n })\n : new Hammer.Manager(this.view as any);\n\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n\n const { NativeGestureClass } = this;\n // @ts-ignore TODO(TS)\n const gesture = new NativeGestureClass(this.getHammerConfig());\n this.hammer.add(gesture);\n\n this.hammer.on('hammer.input', (ev: HammerInput) => {\n if (!this.config.enabled) {\n this.hasGestureFailed = false;\n this.isGestureRunning = false;\n return;\n }\n\n this.onRawEvent(ev as unknown as HammerInputExt);\n\n // TODO: Bacon: Check against something other than null\n // The isFirst value is not called when the first rotation is calculated.\n if (this.initialRotation === null && ev.rotation !== 0) {\n this.initialRotation = ev.rotation;\n }\n if (ev.isFinal) {\n // in favor of a willFail otherwise the last frame of the gesture will be captured.\n setTimeout(() => {\n this.initialRotation = null;\n this.hasGestureFailed = false;\n });\n }\n });\n\n this.setupEvents();\n this.sync();\n }\n\n setupEvents() {\n // TODO(TS) Hammer types aren't exactly that what we get in runtime\n if (!this.isDiscrete) {\n this.hammer!.on(`${this.name}start`, (event: HammerInput) =>\n this.onStart(event as unknown as HammerInputExt)\n );\n this.hammer!.on(\n `${this.name}end ${this.name}cancel`,\n (event: HammerInput) => {\n this.onGestureEnded(event as unknown as HammerInputExt);\n }\n );\n }\n this.hammer!.on(this.name, (ev: HammerInput) =>\n this.onGestureActivated(ev as unknown as HammerInputExt)\n ); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged\n }\n\n onStart({ deltaX, deltaY, rotation }: HammerInputExt) {\n // Reset the state for the next gesture\n this.oldState = State.UNDETERMINED;\n this.previousState = State.UNDETERMINED;\n this.lastSentState = null;\n\n this.isGestureRunning = true;\n this.__initialX = deltaX;\n this.__initialY = deltaY;\n this.initialRotation = rotation;\n }\n\n onGestureActivated(ev: HammerInputExt) {\n this.sendEvent(ev);\n }\n\n onSuccess() {}\n\n _getPendingGestures() {\n if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) {\n // Get the list of gestures that this gesture is still waiting for.\n // Use `=== false` in case a ref that isn't a gesture handler is used.\n const stillWaiting = this.config.waitFor.filter(\n ({ hasGestureFailed }) => hasGestureFailed === false\n );\n return stillWaiting;\n }\n return [];\n }\n\n getHammerConfig() {\n const pointers =\n this.config.minPointers === this.config.maxPointers\n ? this.config.minPointers\n : 0;\n return {\n pointers,\n };\n }\n\n sync = () => {\n const gesture = this.hammer!.get(this.name);\n if (!gesture) return;\n\n const enable = (recognizer: any, inputData: any) => {\n if (!this.config.enabled) {\n this.isGestureRunning = false;\n this.hasGestureFailed = false;\n return false;\n }\n\n // Prevent events before the system is ready.\n if (\n !inputData ||\n !recognizer.options ||\n typeof inputData.maxPointers === 'undefined'\n ) {\n return this.shouldEnableGestureOnSetup;\n }\n\n if (this.hasGestureFailed) {\n return false;\n }\n\n if (!this.isDiscrete) {\n if (this.isGestureRunning) {\n return true;\n }\n // The built-in hammer.js \"waitFor\" doesn't work across multiple views.\n // Only process if there are views to wait for.\n this._stillWaiting = this._getPendingGestures();\n // This gesture should continue waiting.\n if (this._stillWaiting.length) {\n // Check to see if one of the gestures you're waiting for has started.\n // If it has then the gesture should fail.\n for (const gesture of this._stillWaiting) {\n // When the target gesture has started, this gesture must force fail.\n if (!gesture.isDiscrete && gesture.isGestureRunning) {\n this.hasGestureFailed = true;\n this.isGestureRunning = false;\n return false;\n }\n }\n // This gesture shouldn't start until the others have finished.\n return false;\n }\n }\n\n // Use default behaviour\n if (!this.hasCustomActivationCriteria) {\n return true;\n }\n\n const deltaRotation =\n this.initialRotation == null\n ? 0\n : inputData.rotation - this.initialRotation;\n // @ts-ignore FIXME(TS)\n const { success, failed } = this.isGestureEnabledForEvent(\n this.getConfig(),\n recognizer,\n {\n ...inputData,\n deltaRotation,\n }\n );\n\n if (failed) {\n this.simulateCancelEvent(inputData);\n this.hasGestureFailed = true;\n }\n return success;\n };\n\n const params = this.getHammerConfig();\n // @ts-ignore FIXME(TS)\n gesture.set({ ...params, enable });\n };\n\n simulateCancelEvent(_inputData: any) {}\n\n // Validate the props\n ensureConfig(config: Config): Required {\n const props = { ...config };\n\n // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)\n if ('minDist' in config) {\n props.minDist = config.minDist;\n props.minDistSq = props.minDist! * props.minDist!;\n }\n if ('minVelocity' in config) {\n props.minVelocity = config.minVelocity;\n props.minVelocitySq = props.minVelocity! * props.minVelocity!;\n }\n if ('maxDist' in config) {\n props.maxDist = config.maxDist;\n props.maxDistSq = config.maxDist! * config.maxDist!;\n }\n if ('waitFor' in config) {\n props.waitFor = asArray(config.waitFor)\n .map(({ handlerTag }: { handlerTag: number }) =>\n NodeManager.getHandler(handlerTag)\n )\n .filter((v) => v);\n } else {\n props.waitFor = null;\n }\n if ('simultaneousHandlers' in config) {\n const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config);\n props.simultaneousHandlers = asArray(config.simultaneousHandlers)\n .map((handler: number | GestureHandler) => {\n if (typeof handler === 'number') {\n return NodeManager.getHandler(handler);\n } else {\n return NodeManager.getHandler(handler.handlerTag);\n }\n })\n .filter((v) => v);\n\n if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {\n requestAnimationFrame(() => {\n // if the undelying event API needs to be changed, we need to unmount and mount\n // the hammer instance again.\n this.destroy();\n this.setView(this.ref, this.propsRef);\n });\n }\n } else {\n props.simultaneousHandlers = null;\n }\n\n const configProps = [\n 'minPointers',\n 'maxPointers',\n 'minDist',\n 'maxDist',\n 'maxDistSq',\n 'minVelocitySq',\n 'minDistSq',\n 'minVelocity',\n 'failOffsetXStart',\n 'failOffsetYStart',\n 'failOffsetXEnd',\n 'failOffsetYEnd',\n 'activeOffsetXStart',\n 'activeOffsetXEnd',\n 'activeOffsetYStart',\n 'activeOffsetYEnd',\n ] as const;\n configProps.forEach((prop: typeof configProps[number]) => {\n if (typeof props[prop] === 'undefined') {\n props[prop] = Number.NaN;\n }\n });\n return props as Required; // TODO(TS) how to convince TS that props are filled?\n }\n}\n\n// TODO(TS) investigate this method\n// Used for sending data to a callback or AnimatedEvent\nfunction invokeNullableMethod(\n method:\n | ((event: NativeEvent) => void)\n | { __getHandler: () => (event: NativeEvent) => void }\n | { __nodeConfig: { argMapping: any } },\n event: NativeEvent\n) {\n if (method) {\n if (typeof method === 'function') {\n method(event);\n } else {\n // For use with reanimated's AnimatedEvent\n if (\n '__getHandler' in method &&\n typeof method.__getHandler === 'function'\n ) {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n } else {\n if ('__nodeConfig' in method) {\n const { argMapping } = method.__nodeConfig;\n if (Array.isArray(argMapping)) {\n for (const [index, [key, value]] of argMapping.entries()) {\n if (key in event.nativeEvent) {\n // @ts-ignore fix method type\n const nativeValue = event.nativeEvent[key];\n if (value && value.setValue) {\n // Reanimated API\n value.setValue(nativeValue);\n } else {\n // RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nfunction asArray(value: T | T[]) {\n // TODO(TS) use config.waitFor type\n return value == null ? [] : Array.isArray(value) ? value : [value];\n}\n\nexport default GestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js new file mode 100644 index 00000000..404d299d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js @@ -0,0 +1,44 @@ +import GestureHandler from './GestureHandler'; +/** + * The base class for **Rotation** and **Pinch** gesture handlers. + */ + +class IndiscreteGestureHandler extends GestureHandler { + get shouldEnableGestureOnSetup() { + return false; + } + + updateGestureConfig({ + minPointers = 2, + maxPointers = 2, + ...props + }) { + return super.updateGestureConfig({ + minPointers, + maxPointers, + ...props + }); + } + + isGestureEnabledForEvent({ + minPointers, + maxPointers + }, _recognizer, { + maxPointers: pointerLength + }) { + if (pointerLength > maxPointers) { + return { + failed: true + }; + } + + const validPointerCount = pointerLength >= minPointers; + return { + success: validPointerCount + }; + } + +} + +export default IndiscreteGestureHandler; +//# sourceMappingURL=IndiscreteGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js.map new file mode 100644 index 00000000..e69b5879 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/IndiscreteGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["IndiscreteGestureHandler.ts"],"names":["GestureHandler","IndiscreteGestureHandler","shouldEnableGestureOnSetup","updateGestureConfig","minPointers","maxPointers","props","isGestureEnabledForEvent","_recognizer","pointerLength","failed","validPointerCount","success"],"mappings":"AAAA,OAAOA,cAAP,MAA2B,kBAA3B;AAEA;AACA;AACA;;AACA,MAAeC,wBAAf,SAAgDD,cAAhD,CAA+D;AAC/B,MAA1BE,0BAA0B,GAAG;AAC/B,WAAO,KAAP;AACD;;AAEDC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,WAAW,GAAG,CAAhB;AAAmBC,IAAAA,WAAW,GAAG,CAAjC;AAAoC,OAAGC;AAAvC,GAAD,EAAiD;AAClE,WAAO,MAAMH,mBAAN,CAA0B;AAC/BC,MAAAA,WAD+B;AAE/BC,MAAAA,WAF+B;AAG/B,SAAGC;AAH4B,KAA1B,CAAP;AAKD;;AAEDC,EAAAA,wBAAwB,CACtB;AAAEH,IAAAA,WAAF;AAAeC,IAAAA;AAAf,GADsB,EAEtBG,WAFsB,EAGtB;AAAEH,IAAAA,WAAW,EAAEI;AAAf,GAHsB,EAItB;AACA,QAAIA,aAAa,GAAGJ,WAApB,EAAiC;AAC/B,aAAO;AAAEK,QAAAA,MAAM,EAAE;AAAV,OAAP;AACD;;AACD,UAAMC,iBAAiB,GAAGF,aAAa,IAAIL,WAA3C;AACA,WAAO;AACLQ,MAAAA,OAAO,EAAED;AADJ,KAAP;AAGD;;AAzB4D;;AA2B/D,eAAeV,wBAAf","sourcesContent":["import GestureHandler from './GestureHandler';\n\n/**\n * The base class for **Rotation** and **Pinch** gesture handlers.\n */\nabstract class IndiscreteGestureHandler extends GestureHandler {\n get shouldEnableGestureOnSetup() {\n return false;\n }\n\n updateGestureConfig({ minPointers = 2, maxPointers = 2, ...props }) {\n return super.updateGestureConfig({\n minPointers,\n maxPointers,\n ...props,\n });\n }\n\n isGestureEnabledForEvent(\n { minPointers, maxPointers }: any,\n _recognizer: any,\n { maxPointers: pointerLength }: any\n ) {\n if (pointerLength > maxPointers) {\n return { failed: true };\n }\n const validPointerCount = pointerLength >= minPointers;\n return {\n success: validPointerCount,\n };\n }\n}\nexport default IndiscreteGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js new file mode 100644 index 00000000..4483a495 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js @@ -0,0 +1,58 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ + +/* eslint-disable */ +import Hammer from '@egjs/hammerjs'; +import { State } from '../State'; +import PressGestureHandler from './PressGestureHandler'; +import { isnan, isValidNumber } from './utils'; + +class LongPressGestureHandler extends PressGestureHandler { + get minDurationMs() { + // @ts-ignore FIXNE(TS) + return isnan(this.config.minDurationMs) ? 251 : this.config.minDurationMs; + } + + get maxDist() { + // @ts-ignore FIXNE(TS) + return isnan(this.config.maxDist) ? 9 : this.config.maxDist; + } + + updateHasCustomActivationCriteria({ + maxDistSq + }) { + return !isValidNumber(maxDistSq); + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + shouldCancelWhenOutside: true, + maxDistSq: 10 + }; + } + + return this.config; + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + // threshold: this.maxDist, + time: this.minDurationMs + }; + } + + getState(type) { + return { + [Hammer.INPUT_START]: State.ACTIVE, + [Hammer.INPUT_MOVE]: State.ACTIVE, + [Hammer.INPUT_END]: State.END, + [Hammer.INPUT_CANCEL]: State.FAILED + }[type]; + } + +} + +export default LongPressGestureHandler; +//# sourceMappingURL=LongPressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js.map new file mode 100644 index 00000000..94140822 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/LongPressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["Hammer","State","PressGestureHandler","isnan","isValidNumber","LongPressGestureHandler","minDurationMs","config","maxDist","updateHasCustomActivationCriteria","maxDistSq","getConfig","hasCustomActivationCriteria","shouldCancelWhenOutside","getHammerConfig","time","getState","type","INPUT_START","ACTIVE","INPUT_MOVE","INPUT_END","END","INPUT_CANCEL","FAILED"],"mappings":"AAAA;;AACA;AACA,OAAOA,MAAP,MAAmB,gBAAnB;AAEA,SAASC,KAAT,QAAsB,UAAtB;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AACA,SAASC,KAAT,EAAgBC,aAAhB,QAAqC,SAArC;;AAIA,MAAMC,uBAAN,SAAsCH,mBAAtC,CAA0D;AACvC,MAAbI,aAAa,GAAW;AAC1B;AACA,WAAOH,KAAK,CAAC,KAAKI,MAAL,CAAYD,aAAb,CAAL,GAAmC,GAAnC,GAAyC,KAAKC,MAAL,CAAYD,aAA5D;AACD;;AAEU,MAAPE,OAAO,GAAG;AACZ;AACA,WAAOL,KAAK,CAAC,KAAKI,MAAL,CAAYC,OAAb,CAAL,GAA6B,CAA7B,GAAiC,KAAKD,MAAL,CAAYC,OAApD;AACD;;AAEDC,EAAAA,iCAAiC,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAAwB;AACvD,WAAO,CAACN,aAAa,CAACM,SAAD,CAArB;AACD;;AAEDC,EAAAA,SAAS,GAAG;AACV,QAAI,CAAC,KAAKC,2BAAV,EAAuC;AACrC;AACA;AACA,aAAO;AACLC,QAAAA,uBAAuB,EAAE,IADpB;AAELH,QAAAA,SAAS,EAAE;AAFN,OAAP;AAID;;AACD,WAAO,KAAKH,MAAZ;AACD;;AAEDO,EAAAA,eAAe,GAAG;AAChB,WAAO,EACL,GAAG,MAAMA,eAAN,EADE;AAEL;AACAC,MAAAA,IAAI,EAAE,KAAKT;AAHN,KAAP;AAKD;;AAEDU,EAAAA,QAAQ,CAACC,IAAD,EAAsC;AAC5C,WAAO;AACL,OAACjB,MAAM,CAACkB,WAAR,GAAsBjB,KAAK,CAACkB,MADvB;AAEL,OAACnB,MAAM,CAACoB,UAAR,GAAqBnB,KAAK,CAACkB,MAFtB;AAGL,OAACnB,MAAM,CAACqB,SAAR,GAAoBpB,KAAK,CAACqB,GAHrB;AAIL,OAACtB,MAAM,CAACuB,YAAR,GAAuBtB,KAAK,CAACuB;AAJxB,MAKLP,IALK,CAAP;AAMD;;AA1CuD;;AA6C1D,eAAeZ,uBAAf","sourcesContent":["/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\nimport Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\nimport PressGestureHandler from './PressGestureHandler';\nimport { isnan, isValidNumber } from './utils';\nimport { Config } from './GestureHandler';\nimport { HammerInputNames } from './constants';\n\nclass LongPressGestureHandler extends PressGestureHandler {\n get minDurationMs(): number {\n // @ts-ignore FIXNE(TS)\n return isnan(this.config.minDurationMs) ? 251 : this.config.minDurationMs;\n }\n\n get maxDist() {\n // @ts-ignore FIXNE(TS)\n return isnan(this.config.maxDist) ? 9 : this.config.maxDist;\n }\n\n updateHasCustomActivationCriteria({ maxDistSq }: Config) {\n return !isValidNumber(maxDistSq);\n }\n\n getConfig() {\n if (!this.hasCustomActivationCriteria) {\n // Default config\n // If no params have been defined then this config should emulate the native gesture as closely as possible.\n return {\n shouldCancelWhenOutside: true,\n maxDistSq: 10,\n };\n }\n return this.config;\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n // threshold: this.maxDist,\n time: this.minDurationMs,\n };\n }\n\n getState(type: keyof typeof HammerInputNames) {\n return {\n [Hammer.INPUT_START]: State.ACTIVE,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.FAILED,\n }[type];\n }\n}\n\nexport default LongPressGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js new file mode 100644 index 00000000..c39b36f9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js @@ -0,0 +1,49 @@ +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import * as NodeManager from './NodeManager'; +import PressGestureHandler from './PressGestureHandler'; +import { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils'; + +class NativeViewGestureHandler extends PressGestureHandler { + get isNative() { + return true; + } + + onRawEvent(ev) { + super.onRawEvent(ev); + + if (!ev.isFinal) { + // if (this.ref instanceof ScrollView) { + if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ + x: ev.deltaX, + y: ev.deltaY + }), 10)) { + // @ts-ignore FIXME(TS) config type + if (this.config.disallowInterruption) { + const gestures = Object.values(NodeManager.getNodes()).filter(gesture => { + const { + handlerTag, + view, + isGestureRunning + } = gesture; + return (// Check if this gesture isn't self + handlerTag !== this.handlerTag && // Ensure the gesture needs to be cancelled + isGestureRunning && // ScrollView can cancel discrete gestures like taps and presses + gesture instanceof DiscreteGestureHandler && // Ensure a view exists and is a child of the current view + view && // @ts-ignore FIXME(TS) view type + this.view.contains(view) + ); + }); // Cancel all of the gestures that passed the filter + + for (const gesture of gestures) { + // TODO: Bacon: Send some cached event. + gesture.forceInvalidate(ev); + } + } + } + } + } + +} + +export default NativeViewGestureHandler; +//# sourceMappingURL=NativeViewGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js.map new file mode 100644 index 00000000..67d1ad72 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NativeViewGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NativeViewGestureHandler.ts"],"names":["DiscreteGestureHandler","NodeManager","PressGestureHandler","TEST_MIN_IF_NOT_NAN","VEC_LEN_SQ","NativeViewGestureHandler","isNative","onRawEvent","ev","isFinal","x","deltaX","y","deltaY","config","disallowInterruption","gestures","Object","values","getNodes","filter","gesture","handlerTag","view","isGestureRunning","contains","forceInvalidate"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,0BAAnC;AAEA,OAAO,KAAKC,WAAZ,MAA6B,eAA7B;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AACA,SAASC,mBAAT,EAA8BC,UAA9B,QAAgD,SAAhD;;AAEA,MAAMC,wBAAN,SAAuCH,mBAAvC,CAA2D;AAC7C,MAARI,QAAQ,GAAG;AACb,WAAO,IAAP;AACD;;AAEDC,EAAAA,UAAU,CAACC,EAAD,EAAqB;AAC7B,UAAMD,UAAN,CAAiBC,EAAjB;;AACA,QAAI,CAACA,EAAE,CAACC,OAAR,EAAiB;AACf;AACA,UAAIN,mBAAmB,CAACC,UAAU,CAAC;AAAEM,QAAAA,CAAC,EAAEF,EAAE,CAACG,MAAR;AAAgBC,QAAAA,CAAC,EAAEJ,EAAE,CAACK;AAAtB,OAAD,CAAX,EAA6C,EAA7C,CAAvB,EAAyE;AACvE;AACA,YAAI,KAAKC,MAAL,CAAYC,oBAAhB,EAAsC;AACpC,gBAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAP,CAAcjB,WAAW,CAACkB,QAAZ,EAAd,EAAsCC,MAAtC,CACdC,OAAD,IAAa;AACX,kBAAM;AAAEC,cAAAA,UAAF;AAAcC,cAAAA,IAAd;AAAoBC,cAAAA;AAApB,gBAAyCH,OAA/C;AACA,mBACE;AACAC,cAAAA,UAAU,KAAK,KAAKA,UAApB,IACA;AACAE,cAAAA,gBAFA,IAGA;AACAH,cAAAA,OAAO,YAAYrB,sBAJnB,IAKA;AACAuB,cAAAA,IANA,IAOA;AACA,mBAAKA,IAAL,CAAUE,QAAV,CAAmBF,IAAnB;AAVF;AAYD,WAfc,CAAjB,CADoC,CAkBpC;;AACA,eAAK,MAAMF,OAAX,IAAsBL,QAAtB,EAAgC;AAC9B;AACAK,YAAAA,OAAO,CAACK,eAAR,CAAwBlB,EAAxB;AACD;AACF;AACF;AACF;AACF;;AArCwD;;AAwC3D,eAAeH,wBAAf","sourcesContent":["import DiscreteGestureHandler from './DiscreteGestureHandler';\nimport { HammerInputExt } from './GestureHandler';\nimport * as NodeManager from './NodeManager';\nimport PressGestureHandler from './PressGestureHandler';\nimport { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';\n\nclass NativeViewGestureHandler extends PressGestureHandler {\n get isNative() {\n return true;\n }\n\n onRawEvent(ev: HammerInputExt) {\n super.onRawEvent(ev);\n if (!ev.isFinal) {\n // if (this.ref instanceof ScrollView) {\n if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ x: ev.deltaX, y: ev.deltaY }), 10)) {\n // @ts-ignore FIXME(TS) config type\n if (this.config.disallowInterruption) {\n const gestures = Object.values(NodeManager.getNodes()).filter(\n (gesture) => {\n const { handlerTag, view, isGestureRunning } = gesture;\n return (\n // Check if this gesture isn't self\n handlerTag !== this.handlerTag &&\n // Ensure the gesture needs to be cancelled\n isGestureRunning &&\n // ScrollView can cancel discrete gestures like taps and presses\n gesture instanceof DiscreteGestureHandler &&\n // Ensure a view exists and is a child of the current view\n view &&\n // @ts-ignore FIXME(TS) view type\n this.view.contains(view)\n );\n }\n );\n // Cancel all of the gestures that passed the filter\n for (const gesture of gestures) {\n // TODO: Bacon: Send some cached event.\n gesture.forceInvalidate(ev);\n }\n }\n }\n }\n }\n}\n\nexport default NativeViewGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js new file mode 100644 index 00000000..7ab0f6a7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js @@ -0,0 +1,33 @@ +const gestures = {}; +export function getHandler(tag) { + if (tag in gestures) { + return gestures[tag]; + } + + throw new Error(`No handler for tag ${tag}`); +} +export function createGestureHandler(handlerTag, handler) { + if (handlerTag in gestures) { + throw new Error(`Handler with tag ${handlerTag} already exists`); + } + + gestures[handlerTag] = handler; // @ts-ignore no types for web handlers yet + + gestures[handlerTag].handlerTag = handlerTag; +} +export function dropGestureHandler(handlerTag) { + // Since React 18, there are cases where componentWillUnmount gets called twice in a row + // so skip this if the tag was already removed. + if (!(handlerTag in gestures)) { + return; + } + + getHandler(handlerTag).destroy(); // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + + delete gestures[handlerTag]; +} +export function getNodes() { + return { ...gestures + }; +} +//# sourceMappingURL=NodeManager.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js.map new file mode 100644 index 00000000..ec01d0bf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/NodeManager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["NodeManager.ts"],"names":["gestures","getHandler","tag","Error","createGestureHandler","handlerTag","handler","dropGestureHandler","destroy","getNodes"],"mappings":"AAGA,MAAMA,QAGL,GAAG,EAHJ;AAKA,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,MAAIA,GAAG,IAAIF,QAAX,EAAqB;AACnB,WAAOA,QAAQ,CAACE,GAAD,CAAf;AACD;;AAED,QAAM,IAAIC,KAAJ,CAAW,sBAAqBD,GAAI,EAApC,CAAN;AACD;AAED,OAAO,SAASE,oBAAT,CACLC,UADK,EAELC,OAFK,EAGL;AACA,MAAID,UAAU,IAAIL,QAAlB,EAA4B;AAC1B,UAAM,IAAIG,KAAJ,CAAW,oBAAmBE,UAAW,iBAAzC,CAAN;AACD;;AACDL,EAAAA,QAAQ,CAACK,UAAD,CAAR,GAAuBC,OAAvB,CAJA,CAKA;;AACAN,EAAAA,QAAQ,CAACK,UAAD,CAAR,CAAqBA,UAArB,GAAkCA,UAAlC;AACD;AAED,OAAO,SAASE,kBAAT,CAA4BF,UAA5B,EAAgD;AACrD;AACA;AACA,MAAI,EAAEA,UAAU,IAAIL,QAAhB,CAAJ,EAA+B;AAC7B;AACD;;AACDC,EAAAA,UAAU,CAACI,UAAD,CAAV,CAAuBG,OAAvB,GANqD,CAOrD;;AACA,SAAOR,QAAQ,CAACK,UAAD,CAAf;AACD;AAED,OAAO,SAASI,QAAT,GAAoB;AACzB,SAAO,EAAE,GAAGT;AAAL,GAAP;AACD","sourcesContent":["import { ValueOf } from '../typeUtils';\nimport { HammerGestures } from '../RNGestureHandlerModule.web';\n\nconst gestures: Record<\n number,\n InstanceType>\n> = {};\n\nexport function getHandler(tag: number) {\n if (tag in gestures) {\n return gestures[tag];\n }\n\n throw new Error(`No handler for tag ${tag}`);\n}\n\nexport function createGestureHandler(\n handlerTag: number,\n handler: InstanceType>\n) {\n if (handlerTag in gestures) {\n throw new Error(`Handler with tag ${handlerTag} already exists`);\n }\n gestures[handlerTag] = handler;\n // @ts-ignore no types for web handlers yet\n gestures[handlerTag].handlerTag = handlerTag;\n}\n\nexport function dropGestureHandler(handlerTag: number) {\n // Since React 18, there are cases where componentWillUnmount gets called twice in a row\n // so skip this if the tag was already removed.\n if (!(handlerTag in gestures)) {\n return;\n }\n getHandler(handlerTag).destroy();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete gestures[handlerTag];\n}\n\nexport function getNodes() {\n return { ...gestures };\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js new file mode 100644 index 00000000..0afda0e2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js @@ -0,0 +1,194 @@ +import Hammer from '@egjs/hammerjs'; +import { MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD, MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD } from './constants'; +import DraggingGestureHandler from './DraggingGestureHandler'; +import { isValidNumber, isnan, TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils'; +import { State } from '../State'; + +class PanGestureHandler extends DraggingGestureHandler { + get name() { + return 'pan'; + } + + get NativeGestureClass() { + return Hammer.Pan; + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + direction: this.getDirection() + }; + } + + getState(type) { + const nextState = super.getState(type); // Ensure that the first state sent is `BEGAN` and not `ACTIVE` + + if (this.previousState === State.UNDETERMINED && nextState === State.ACTIVE) { + return State.BEGAN; + } + + return nextState; + } + + getDirection() { + const config = this.getConfig(); + const { + activeOffsetXStart, + activeOffsetXEnd, + activeOffsetYStart, + activeOffsetYEnd, + minDist + } = config; + let directions = []; + let horizontalDirections = []; + + if (!isnan(minDist)) { + return Hammer.DIRECTION_ALL; + } + + if (!isnan(activeOffsetXStart)) { + horizontalDirections.push(Hammer.DIRECTION_LEFT); + } + + if (!isnan(activeOffsetXEnd)) { + horizontalDirections.push(Hammer.DIRECTION_RIGHT); + } + + if (horizontalDirections.length === 2) { + horizontalDirections = [Hammer.DIRECTION_HORIZONTAL]; + } + + directions = directions.concat(horizontalDirections); + let verticalDirections = []; + + if (!isnan(activeOffsetYStart)) { + verticalDirections.push(Hammer.DIRECTION_UP); + } + + if (!isnan(activeOffsetYEnd)) { + verticalDirections.push(Hammer.DIRECTION_DOWN); + } + + if (verticalDirections.length === 2) { + verticalDirections = [Hammer.DIRECTION_VERTICAL]; + } + + directions = directions.concat(verticalDirections); + + if (!directions.length) { + return Hammer.DIRECTION_NONE; + } + + if (directions[0] === Hammer.DIRECTION_HORIZONTAL && directions[1] === Hammer.DIRECTION_VERTICAL) { + return Hammer.DIRECTION_ALL; + } + + if (horizontalDirections.length && verticalDirections.length) { + return Hammer.DIRECTION_ALL; + } + + return directions[0]; + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + minDistSq: 10 + }; + } + + return this.config; + } + + shouldFailUnderCustomCriteria({ + deltaX, + deltaY + }, criteria) { + return !isnan(criteria.failOffsetXStart) && deltaX < criteria.failOffsetXStart || !isnan(criteria.failOffsetXEnd) && deltaX > criteria.failOffsetXEnd || !isnan(criteria.failOffsetYStart) && deltaY < criteria.failOffsetYStart || !isnan(criteria.failOffsetYEnd) && deltaY > criteria.failOffsetYEnd; + } + + shouldActivateUnderCustomCriteria({ + deltaX, + deltaY, + velocity + }, criteria) { + return !isnan(criteria.activeOffsetXStart) && deltaX < criteria.activeOffsetXStart || !isnan(criteria.activeOffsetXEnd) && deltaX > criteria.activeOffsetXEnd || !isnan(criteria.activeOffsetYStart) && deltaY < criteria.activeOffsetYStart || !isnan(criteria.activeOffsetYEnd) && deltaY > criteria.activeOffsetYEnd || TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ + x: deltaX, + y: deltaY + }), criteria.minDistSq) || TEST_MIN_IF_NOT_NAN(velocity.x, criteria.minVelocityX) || TEST_MIN_IF_NOT_NAN(velocity.y, criteria.minVelocityY) || TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), criteria.minVelocitySq); + } + + shouldMultiFingerPanFail({ + pointerLength, + scale, + deltaRotation + }) { + if (pointerLength <= 1) { + return false; + } // Test if the pan had too much pinching or rotating. + + + const deltaScale = Math.abs(scale - 1); + const absDeltaRotation = Math.abs(deltaRotation); + + if (deltaScale > MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD) { + // > If the threshold doesn't seem right. + // You can log the value which it failed at here: + return true; + } + + if (absDeltaRotation > MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD) { + // > If the threshold doesn't seem right. + // You can log the value which it failed at here: + return true; + } + + return false; + } + + updateHasCustomActivationCriteria(criteria) { + return isValidNumber(criteria.minDistSq) || isValidNumber(criteria.minVelocityX) || isValidNumber(criteria.minVelocityY) || isValidNumber(criteria.minVelocitySq) || isValidNumber(criteria.activeOffsetXStart) || isValidNumber(criteria.activeOffsetXEnd) || isValidNumber(criteria.activeOffsetYStart) || isValidNumber(criteria.activeOffsetYEnd); + } + + isGestureEnabledForEvent(props, _recognizer, inputData) { + if (this.shouldFailUnderCustomCriteria(inputData, props)) { + return { + failed: true + }; + } + + const velocity = { + x: inputData.velocityX, + y: inputData.velocityY + }; + + if (this.hasCustomActivationCriteria && this.shouldActivateUnderCustomCriteria({ + deltaX: inputData.deltaX, + deltaY: inputData.deltaY, + velocity + }, props)) { + if (this.shouldMultiFingerPanFail({ + pointerLength: inputData.maxPointers, + scale: inputData.scale, + deltaRotation: inputData.deltaRotation + })) { + return { + failed: true + }; + } + + return { + success: true + }; + } + + return { + success: false + }; + } + +} + +export default PanGestureHandler; +//# sourceMappingURL=PanGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js.map new file mode 100644 index 00000000..9df5b066 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PanGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PanGestureHandler.ts"],"names":["Hammer","MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD","MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD","DraggingGestureHandler","isValidNumber","isnan","TEST_MIN_IF_NOT_NAN","VEC_LEN_SQ","State","PanGestureHandler","name","NativeGestureClass","Pan","getHammerConfig","direction","getDirection","getState","type","nextState","previousState","UNDETERMINED","ACTIVE","BEGAN","config","getConfig","activeOffsetXStart","activeOffsetXEnd","activeOffsetYStart","activeOffsetYEnd","minDist","directions","horizontalDirections","DIRECTION_ALL","push","DIRECTION_LEFT","DIRECTION_RIGHT","length","DIRECTION_HORIZONTAL","concat","verticalDirections","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_NONE","hasCustomActivationCriteria","minDistSq","shouldFailUnderCustomCriteria","deltaX","deltaY","criteria","failOffsetXStart","failOffsetXEnd","failOffsetYStart","failOffsetYEnd","shouldActivateUnderCustomCriteria","velocity","x","y","minVelocityX","minVelocityY","minVelocitySq","shouldMultiFingerPanFail","pointerLength","scale","deltaRotation","deltaScale","Math","abs","absDeltaRotation","updateHasCustomActivationCriteria","isGestureEnabledForEvent","props","_recognizer","inputData","failed","velocityX","velocityY","maxPointers","success"],"mappings":"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","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport {\n EventMap,\n MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD,\n MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD,\n} from './constants';\nimport DraggingGestureHandler from './DraggingGestureHandler';\nimport { isValidNumber, isnan, TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';\nimport { State } from '../State';\n\nimport { Config, HammerInputExt } from './GestureHandler';\nclass PanGestureHandler extends DraggingGestureHandler {\n get name() {\n return 'pan';\n }\n\n get NativeGestureClass() {\n return Hammer.Pan;\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n direction: this.getDirection(),\n };\n }\n\n getState(type: keyof typeof EventMap) {\n const nextState = super.getState(type);\n // Ensure that the first state sent is `BEGAN` and not `ACTIVE`\n if (\n this.previousState === State.UNDETERMINED &&\n nextState === State.ACTIVE\n ) {\n return State.BEGAN;\n }\n return nextState;\n }\n\n getDirection() {\n const config = this.getConfig();\n const {\n activeOffsetXStart,\n activeOffsetXEnd,\n activeOffsetYStart,\n activeOffsetYEnd,\n minDist,\n } = config;\n let directions: number[] = [];\n let horizontalDirections = [];\n\n if (!isnan(minDist)) {\n return Hammer.DIRECTION_ALL;\n }\n\n if (!isnan(activeOffsetXStart)) {\n horizontalDirections.push(Hammer.DIRECTION_LEFT);\n }\n if (!isnan(activeOffsetXEnd)) {\n horizontalDirections.push(Hammer.DIRECTION_RIGHT);\n }\n if (horizontalDirections.length === 2) {\n horizontalDirections = [Hammer.DIRECTION_HORIZONTAL];\n }\n\n directions = directions.concat(horizontalDirections);\n let verticalDirections = [];\n\n if (!isnan(activeOffsetYStart)) {\n verticalDirections.push(Hammer.DIRECTION_UP);\n }\n if (!isnan(activeOffsetYEnd)) {\n verticalDirections.push(Hammer.DIRECTION_DOWN);\n }\n\n if (verticalDirections.length === 2) {\n verticalDirections = [Hammer.DIRECTION_VERTICAL];\n }\n\n directions = directions.concat(verticalDirections);\n\n if (!directions.length) {\n return Hammer.DIRECTION_NONE;\n }\n if (\n directions[0] === Hammer.DIRECTION_HORIZONTAL &&\n directions[1] === Hammer.DIRECTION_VERTICAL\n ) {\n return Hammer.DIRECTION_ALL;\n }\n if (horizontalDirections.length && verticalDirections.length) {\n return Hammer.DIRECTION_ALL;\n }\n\n return directions[0];\n }\n\n getConfig() {\n if (!this.hasCustomActivationCriteria) {\n // Default config\n // If no params have been defined then this config should emulate the native gesture as closely as possible.\n return {\n minDistSq: 10,\n };\n }\n return this.config;\n }\n\n shouldFailUnderCustomCriteria(\n { deltaX, deltaY }: HammerInputExt,\n criteria: any\n ) {\n return (\n (!isnan(criteria.failOffsetXStart) &&\n deltaX < criteria.failOffsetXStart) ||\n (!isnan(criteria.failOffsetXEnd) && deltaX > criteria.failOffsetXEnd) ||\n (!isnan(criteria.failOffsetYStart) &&\n deltaY < criteria.failOffsetYStart) ||\n (!isnan(criteria.failOffsetYEnd) && deltaY > criteria.failOffsetYEnd)\n );\n }\n\n shouldActivateUnderCustomCriteria(\n { deltaX, deltaY, velocity }: any,\n criteria: any\n ) {\n return (\n (!isnan(criteria.activeOffsetXStart) &&\n deltaX < criteria.activeOffsetXStart) ||\n (!isnan(criteria.activeOffsetXEnd) &&\n deltaX > criteria.activeOffsetXEnd) ||\n (!isnan(criteria.activeOffsetYStart) &&\n deltaY < criteria.activeOffsetYStart) ||\n (!isnan(criteria.activeOffsetYEnd) &&\n deltaY > criteria.activeOffsetYEnd) ||\n TEST_MIN_IF_NOT_NAN(\n VEC_LEN_SQ({ x: deltaX, y: deltaY }),\n criteria.minDistSq\n ) ||\n TEST_MIN_IF_NOT_NAN(velocity.x, criteria.minVelocityX) ||\n TEST_MIN_IF_NOT_NAN(velocity.y, criteria.minVelocityY) ||\n TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), criteria.minVelocitySq)\n );\n }\n\n shouldMultiFingerPanFail({\n pointerLength,\n scale,\n deltaRotation,\n }: {\n deltaRotation: number;\n pointerLength: number;\n scale: number;\n }) {\n if (pointerLength <= 1) {\n return false;\n }\n\n // Test if the pan had too much pinching or rotating.\n const deltaScale = Math.abs(scale - 1);\n const absDeltaRotation = Math.abs(deltaRotation);\n if (deltaScale > MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD) {\n // > If the threshold doesn't seem right.\n // You can log the value which it failed at here:\n return true;\n }\n if (absDeltaRotation > MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD) {\n // > If the threshold doesn't seem right.\n // You can log the value which it failed at here:\n return true;\n }\n\n return false;\n }\n\n updateHasCustomActivationCriteria(\n criteria: Config & { minVelocityX?: number; minVelocityY?: number }\n ) {\n return (\n isValidNumber(criteria.minDistSq) ||\n isValidNumber(criteria.minVelocityX) ||\n isValidNumber(criteria.minVelocityY) ||\n isValidNumber(criteria.minVelocitySq) ||\n isValidNumber(criteria.activeOffsetXStart) ||\n isValidNumber(criteria.activeOffsetXEnd) ||\n isValidNumber(criteria.activeOffsetYStart) ||\n isValidNumber(criteria.activeOffsetYEnd)\n );\n }\n\n isGestureEnabledForEvent(\n props: any,\n _recognizer: any,\n inputData: HammerInputExt & { deltaRotation: number }\n ) {\n if (this.shouldFailUnderCustomCriteria(inputData, props)) {\n return { failed: true };\n }\n\n const velocity = { x: inputData.velocityX, y: inputData.velocityY };\n if (\n this.hasCustomActivationCriteria &&\n this.shouldActivateUnderCustomCriteria(\n { deltaX: inputData.deltaX, deltaY: inputData.deltaY, velocity },\n props\n )\n ) {\n if (\n this.shouldMultiFingerPanFail({\n pointerLength: inputData.maxPointers,\n scale: inputData.scale,\n deltaRotation: inputData.deltaRotation,\n })\n ) {\n return {\n failed: true,\n };\n }\n return { success: true };\n }\n return { success: false };\n }\n}\n\nexport default PanGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js new file mode 100644 index 00000000..3821d857 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js @@ -0,0 +1,29 @@ +import Hammer from '@egjs/hammerjs'; +import IndiscreteGestureHandler from './IndiscreteGestureHandler'; + +class PinchGestureHandler extends IndiscreteGestureHandler { + get name() { + return 'pinch'; + } + + get NativeGestureClass() { + return Hammer.Pinch; + } + + transformNativeEvent({ + scale, + velocity, + center + }) { + return { + focalX: center.x, + focalY: center.y, + velocity, + scale + }; + } + +} + +export default PinchGestureHandler; +//# sourceMappingURL=PinchGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js.map new file mode 100644 index 00000000..15875b07 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PinchGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PinchGestureHandler.ts"],"names":["Hammer","IndiscreteGestureHandler","PinchGestureHandler","name","NativeGestureClass","Pinch","transformNativeEvent","scale","velocity","center","focalX","x","focalY","y"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,gBAAnB;AAGA,OAAOC,wBAAP,MAAqC,4BAArC;;AAEA,MAAMC,mBAAN,SAAkCD,wBAAlC,CAA2D;AACjD,MAAJE,IAAI,GAAG;AACT,WAAO,OAAP;AACD;;AAEqB,MAAlBC,kBAAkB,GAAG;AACvB,WAAOJ,MAAM,CAACK,KAAd;AACD;;AAEDC,EAAAA,oBAAoB,CAAC;AAAEC,IAAAA,KAAF;AAASC,IAAAA,QAAT;AAAmBC,IAAAA;AAAnB,GAAD,EAA8C;AAChE,WAAO;AACLC,MAAAA,MAAM,EAAED,MAAM,CAACE,CADV;AAELC,MAAAA,MAAM,EAAEH,MAAM,CAACI,CAFV;AAGLL,MAAAA,QAHK;AAILD,MAAAA;AAJK,KAAP;AAMD;;AAhBwD;;AAmB3D,eAAeL,mBAAf","sourcesContent":["import Hammer from '@egjs/hammerjs';\nimport { HammerInputExt } from './GestureHandler';\n\nimport IndiscreteGestureHandler from './IndiscreteGestureHandler';\n\nclass PinchGestureHandler extends IndiscreteGestureHandler {\n get name() {\n return 'pinch';\n }\n\n get NativeGestureClass() {\n return Hammer.Pinch;\n }\n\n transformNativeEvent({ scale, velocity, center }: HammerInputExt) {\n return {\n focalX: center.x,\n focalY: center.y,\n velocity,\n scale,\n };\n }\n}\n\nexport default PinchGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js new file mode 100644 index 00000000..4e580c45 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js @@ -0,0 +1,174 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import Hammer from '@egjs/hammerjs'; +import { State } from '../State'; +import { CONTENT_TOUCHES_DELAY, CONTENT_TOUCHES_QUICK_TAP_END_DELAY } from './constants'; +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { fireAfterInterval, isValidNumber, isnan } from './utils'; + +class PressGestureHandler extends DiscreteGestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "visualFeedbackTimer", void 0); + + _defineProperty(this, "initialEvent", null); + + _defineProperty(this, "shouldDelayTouches", true); + } + + get name() { + return 'press'; + } + + get minDurationMs() { + // @ts-ignore FIXME(TS) + return isnan(this.config.minDurationMs) ? 5 : this.config.minDurationMs; + } + + get maxDist() { + return isnan(this.config.maxDist) ? 9 : this.config.maxDist; + } + + get NativeGestureClass() { + return Hammer.Press; + } + + simulateCancelEvent(inputData) { + // Long press never starts so we can't rely on the running event boolean. + this.hasGestureFailed = true; + this.cancelEvent(inputData); + } + + updateHasCustomActivationCriteria({ + shouldCancelWhenOutside, + maxDistSq + }) { + return shouldCancelWhenOutside || !isValidNumber(maxDistSq); + } + + getState(type) { + return { + [Hammer.INPUT_START]: State.BEGAN, + [Hammer.INPUT_MOVE]: State.ACTIVE, + [Hammer.INPUT_END]: State.END, + [Hammer.INPUT_CANCEL]: State.CANCELLED + }[type]; + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + shouldCancelWhenOutside: true, + maxDistSq: 10 + }; + } + + return this.config; + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + // threshold: this.maxDist, + time: this.minDurationMs + }; + } + + onGestureActivated(ev) { + this.onGestureStart(ev); + } + + shouldDelayTouchForEvent({ + pointerType + }) { + // Don't disable event for mouse input + return this.shouldDelayTouches && pointerType === 'touch'; + } + + onGestureStart(ev) { + this.isGestureRunning = true; + clearTimeout(this.visualFeedbackTimer); + this.initialEvent = ev; + this.visualFeedbackTimer = fireAfterInterval(() => { + this.sendGestureStartedEvent(this.initialEvent); + this.initialEvent = null; + }, this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY); + } + + sendGestureStartedEvent(ev) { + clearTimeout(this.visualFeedbackTimer); + this.visualFeedbackTimer = null; + this.sendEvent({ ...ev, + eventType: Hammer.INPUT_MOVE, + isFirst: true + }); + } + + forceInvalidate(event) { + super.forceInvalidate(event); + clearTimeout(this.visualFeedbackTimer); + this.visualFeedbackTimer = null; + this.initialEvent = null; + } + + onRawEvent(ev) { + super.onRawEvent(ev); + + if (this.isGestureRunning) { + if (ev.isFinal) { + let timeout; + + if (this.visualFeedbackTimer) { + // Aesthetic timing for a quick tap. + // We haven't activated the tap right away to emulate iOS `delaysContentTouches` + // Now we must send the initial activation event and wait a set amount of time before firing the end event. + timeout = CONTENT_TOUCHES_QUICK_TAP_END_DELAY; + this.sendGestureStartedEvent(this.initialEvent); + this.initialEvent = null; + } + + fireAfterInterval(() => { + this.sendEvent({ ...ev, + eventType: Hammer.INPUT_END, + isFinal: true + }); // @ts-ignore -- this should explicitly support undefined + + this.onGestureEnded(); + }, timeout); + } else { + this.sendEvent({ ...ev, + eventType: Hammer.INPUT_MOVE, + isFinal: false + }); + } + } + } + + updateGestureConfig({ + shouldActivateOnStart = false, + disallowInterruption = false, + shouldCancelWhenOutside = true, + minDurationMs = Number.NaN, + maxDist = Number.NaN, + minPointers = 1, + maxPointers = 1, + ...props + }) { + return super.updateGestureConfig({ + shouldActivateOnStart, + disallowInterruption, + shouldCancelWhenOutside, + minDurationMs, + maxDist, + minPointers, + maxPointers, + ...props + }); + } + +} + +export default PressGestureHandler; +//# sourceMappingURL=PressGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js.map new file mode 100644 index 00000000..de2f7f79 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/PressGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["PressGestureHandler.ts"],"names":["Hammer","State","CONTENT_TOUCHES_DELAY","CONTENT_TOUCHES_QUICK_TAP_END_DELAY","DiscreteGestureHandler","fireAfterInterval","isValidNumber","isnan","PressGestureHandler","name","minDurationMs","config","maxDist","NativeGestureClass","Press","simulateCancelEvent","inputData","hasGestureFailed","cancelEvent","updateHasCustomActivationCriteria","shouldCancelWhenOutside","maxDistSq","getState","type","INPUT_START","BEGAN","INPUT_MOVE","ACTIVE","INPUT_END","END","INPUT_CANCEL","CANCELLED","getConfig","hasCustomActivationCriteria","getHammerConfig","time","onGestureActivated","ev","onGestureStart","shouldDelayTouchForEvent","pointerType","shouldDelayTouches","isGestureRunning","clearTimeout","visualFeedbackTimer","initialEvent","sendGestureStartedEvent","sendEvent","eventType","isFirst","forceInvalidate","event","onRawEvent","isFinal","timeout","onGestureEnded","updateGestureConfig","shouldActivateOnStart","disallowInterruption","Number","NaN","minPointers","maxPointers","props"],"mappings":"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","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\nimport {\n CONTENT_TOUCHES_DELAY,\n CONTENT_TOUCHES_QUICK_TAP_END_DELAY,\n HammerInputNames,\n} from './constants';\nimport DiscreteGestureHandler from './DiscreteGestureHandler';\nimport { Config, HammerInputExt } from './GestureHandler';\nimport { fireAfterInterval, isValidNumber, isnan } from './utils';\n\nclass PressGestureHandler extends DiscreteGestureHandler {\n private visualFeedbackTimer: any;\n private initialEvent: HammerInputExt | null = null;\n get name() {\n return 'press';\n }\n\n get minDurationMs() {\n // @ts-ignore FIXME(TS)\n return isnan(this.config.minDurationMs) ? 5 : this.config.minDurationMs;\n }\n\n get maxDist() {\n return isnan(this.config.maxDist) ? 9 : this.config.maxDist;\n }\n\n get NativeGestureClass() {\n return Hammer.Press;\n }\n\n shouldDelayTouches = true;\n\n simulateCancelEvent(inputData: HammerInputExt) {\n // Long press never starts so we can't rely on the running event boolean.\n this.hasGestureFailed = true;\n this.cancelEvent(inputData);\n }\n\n updateHasCustomActivationCriteria({\n shouldCancelWhenOutside,\n maxDistSq,\n }: Config & { shouldCancelWhenOutside: boolean }) {\n return shouldCancelWhenOutside || !isValidNumber(maxDistSq);\n }\n\n getState(type: keyof typeof HammerInputNames): State {\n return {\n [Hammer.INPUT_START]: State.BEGAN,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.CANCELLED,\n }[type];\n }\n\n getConfig() {\n if (!this.hasCustomActivationCriteria) {\n // Default config\n // If no params have been defined then this config should emulate the native gesture as closely as possible.\n return {\n shouldCancelWhenOutside: true,\n maxDistSq: 10,\n };\n }\n return this.config;\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n // threshold: this.maxDist,\n time: this.minDurationMs,\n };\n }\n\n onGestureActivated(ev: HammerInputExt) {\n this.onGestureStart(ev);\n }\n\n shouldDelayTouchForEvent({ pointerType }: HammerInputExt) {\n // Don't disable event for mouse input\n return this.shouldDelayTouches && pointerType === 'touch';\n }\n\n onGestureStart(ev: HammerInputExt) {\n this.isGestureRunning = true;\n clearTimeout(this.visualFeedbackTimer);\n this.initialEvent = ev;\n this.visualFeedbackTimer = fireAfterInterval(() => {\n this.sendGestureStartedEvent(this.initialEvent as HammerInputExt);\n this.initialEvent = null;\n }, this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY);\n }\n\n sendGestureStartedEvent(ev: HammerInputExt) {\n clearTimeout(this.visualFeedbackTimer);\n this.visualFeedbackTimer = null;\n this.sendEvent({\n ...ev,\n eventType: Hammer.INPUT_MOVE,\n isFirst: true,\n });\n }\n\n forceInvalidate(event: HammerInputExt) {\n super.forceInvalidate(event);\n clearTimeout(this.visualFeedbackTimer);\n this.visualFeedbackTimer = null;\n this.initialEvent = null;\n }\n\n onRawEvent(ev: HammerInputExt) {\n super.onRawEvent(ev);\n if (this.isGestureRunning) {\n if (ev.isFinal) {\n let timeout;\n if (this.visualFeedbackTimer) {\n // Aesthetic timing for a quick tap.\n // We haven't activated the tap right away to emulate iOS `delaysContentTouches`\n // Now we must send the initial activation event and wait a set amount of time before firing the end event.\n timeout = CONTENT_TOUCHES_QUICK_TAP_END_DELAY;\n this.sendGestureStartedEvent(this.initialEvent as HammerInputExt);\n this.initialEvent = null;\n }\n fireAfterInterval(() => {\n this.sendEvent({\n ...ev,\n eventType: Hammer.INPUT_END,\n isFinal: true,\n });\n // @ts-ignore -- this should explicitly support undefined\n this.onGestureEnded();\n }, timeout);\n } else {\n this.sendEvent({\n ...ev,\n eventType: Hammer.INPUT_MOVE,\n isFinal: false,\n });\n }\n }\n }\n\n updateGestureConfig({\n shouldActivateOnStart = false,\n disallowInterruption = false,\n shouldCancelWhenOutside = true,\n minDurationMs = Number.NaN,\n maxDist = Number.NaN,\n minPointers = 1,\n maxPointers = 1,\n ...props\n }) {\n return super.updateGestureConfig({\n shouldActivateOnStart,\n disallowInterruption,\n shouldCancelWhenOutside,\n minDurationMs,\n maxDist,\n minPointers,\n maxPointers,\n ...props,\n });\n }\n}\nexport default PressGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js new file mode 100644 index 00000000..42f97ccb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js @@ -0,0 +1,32 @@ +import Hammer from '@egjs/hammerjs'; +import { DEG_RAD } from './constants'; +import IndiscreteGestureHandler from './IndiscreteGestureHandler'; + +class RotationGestureHandler extends IndiscreteGestureHandler { + get name() { + return 'rotate'; + } + + get NativeGestureClass() { + return Hammer.Rotate; + } + + transformNativeEvent({ + rotation, + velocity, + center + }) { + var _this$initialRotation; + + return { + rotation: (rotation - ((_this$initialRotation = this.initialRotation) !== null && _this$initialRotation !== void 0 ? _this$initialRotation : 0)) * DEG_RAD, + anchorX: center.x, + anchorY: center.y, + velocity + }; + } + +} + +export default RotationGestureHandler; +//# sourceMappingURL=RotationGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js.map new file mode 100644 index 00000000..fb7b3c3d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/RotationGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RotationGestureHandler.ts"],"names":["Hammer","DEG_RAD","IndiscreteGestureHandler","RotationGestureHandler","name","NativeGestureClass","Rotate","transformNativeEvent","rotation","velocity","center","initialRotation","anchorX","x","anchorY","y"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,gBAAnB;AAEA,SAASC,OAAT,QAAwB,aAAxB;AAEA,OAAOC,wBAAP,MAAqC,4BAArC;;AAEA,MAAMC,sBAAN,SAAqCD,wBAArC,CAA8D;AACpD,MAAJE,IAAI,GAAG;AACT,WAAO,QAAP;AACD;;AAEqB,MAAlBC,kBAAkB,GAAG;AACvB,WAAOL,MAAM,CAACM,MAAd;AACD;;AAEDC,EAAAA,oBAAoB,CAAC;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,QAAZ;AAAsBC,IAAAA;AAAtB,GAAD,EAAiD;AAAA;;AACnE,WAAO;AACLF,MAAAA,QAAQ,EAAE,CAACA,QAAQ,6BAAI,KAAKG,eAAT,yEAA4B,CAA5B,CAAT,IAA2CV,OADhD;AAELW,MAAAA,OAAO,EAAEF,MAAM,CAACG,CAFX;AAGLC,MAAAA,OAAO,EAAEJ,MAAM,CAACK,CAHX;AAILN,MAAAA;AAJK,KAAP;AAMD;;AAhB2D;;AAkB9D,eAAeN,sBAAf","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { DEG_RAD } from './constants';\nimport { HammerInputExt } from './GestureHandler';\nimport IndiscreteGestureHandler from './IndiscreteGestureHandler';\n\nclass RotationGestureHandler extends IndiscreteGestureHandler {\n get name() {\n return 'rotate';\n }\n\n get NativeGestureClass() {\n return Hammer.Rotate;\n }\n\n transformNativeEvent({ rotation, velocity, center }: HammerInputExt) {\n return {\n rotation: (rotation - (this.initialRotation ?? 0)) * DEG_RAD,\n anchorX: center.x,\n anchorY: center.y,\n velocity,\n };\n }\n}\nexport default RotationGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js new file mode 100644 index 00000000..ed067cd4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js @@ -0,0 +1,180 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import Hammer from '@egjs/hammerjs'; +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { isnan } from './utils'; + +class TapGestureHandler extends DiscreteGestureHandler { + constructor(...args) { + super(...args); + + _defineProperty(this, "_shouldFireEndEvent", null); + + _defineProperty(this, "_timer", void 0); + + _defineProperty(this, "_multiTapTimer", void 0); + + _defineProperty(this, "onSuccessfulTap", ev => { + if (this._getPendingGestures().length) { + this._shouldFireEndEvent = ev; + return; + } + + if (ev.eventType === Hammer.INPUT_END) { + this.sendEvent({ ...ev, + eventType: Hammer.INPUT_MOVE + }); + } // When handler gets activated it will turn into State.END immediately. + + + this.sendEvent({ ...ev, + isFinal: true + }); + this.onGestureEnded(ev); + }); + } + + // TODO unused? + get name() { + return 'tap'; + } + + get NativeGestureClass() { + return Hammer.Tap; + } + + get maxDelayMs() { + // @ts-ignore TODO(TS) trace down config + return isnan(this.config.maxDelayMs) ? 300 : this.config.maxDelayMs; + } + + simulateCancelEvent(inputData) { + if (this.isGestureRunning) { + this.cancelEvent(inputData); + } + } + + onGestureActivated(ev) { + if (this.isGestureRunning) { + this.onSuccessfulTap(ev); + } + } + + onRawEvent(ev) { + super.onRawEvent(ev); // Attempt to create a touch-down event by checking if a valid tap hasn't started yet, then validating the input. + + if (!this.hasGestureFailed && !this.isGestureRunning && // Prevent multi-pointer events from misfiring. + !ev.isFinal) { + // Tap Gesture start event + const gesture = this.hammer.get(this.name); // @ts-ignore TODO(TS) trace down config + + if (gesture.options.enable(gesture, ev)) { + clearTimeout(this._multiTapTimer); + this.onStart(ev); + this.sendEvent(ev); + } + } + + if (ev.isFinal && ev.maxPointers > 1) { + setTimeout(() => { + // Handle case where one finger presses slightly + // after the first finger on a multi-tap event + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } + + if (this.hasGestureFailed) { + return; + } // Hammer doesn't send a `cancel` event for taps. + // Manually fail the event. + + + if (ev.isFinal) { + // Handle case where one finger presses slightly + // after the first finger on a multi-tap event + if (ev.maxPointers > 1) { + setTimeout(() => { + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } // Clear last timer + + + clearTimeout(this._timer); // Create time out for multi-taps. + + this._timer = setTimeout(() => { + this.hasGestureFailed = true; + this.cancelEvent(ev); + }, this.maxDelayMs); + } else if (!this.hasGestureFailed && !this.isGestureRunning) { + // Tap Gesture start event + const gesture = this.hammer.get(this.name); // @ts-ignore TODO(TS) trace down config + + if (gesture.options.enable(gesture, ev)) { + clearTimeout(this._multiTapTimer); + this.onStart(ev); + this.sendEvent(ev); + } + } + } + + getHammerConfig() { + return { ...super.getHammerConfig(), + event: this.name, + // @ts-ignore TODO(TS) trace down config + taps: isnan(this.config.numberOfTaps) ? 1 : this.config.numberOfTaps, + interval: this.maxDelayMs, + time: // @ts-ignore TODO(TS) trace down config + isnan(this.config.maxDurationMs) || this.config.maxDurationMs == null ? 250 : // @ts-ignore TODO(TS) trace down config + this.config.maxDurationMs + }; + } + + updateGestureConfig({ + shouldCancelWhenOutside = true, + maxDeltaX = Number.NaN, + maxDeltaY = Number.NaN, + numberOfTaps = 1, + minDurationMs = 525, + maxDelayMs = Number.NaN, + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO possibly forgotten to use in updateGestureConfig? + maxDurationMs = Number.NaN, + maxDist = 2, + minPointers = 1, + maxPointers = 1, + ...props + }) { + return super.updateGestureConfig({ + shouldCancelWhenOutside, + numberOfTaps, + maxDeltaX, + maxDeltaY, + minDurationMs, + maxDelayMs, + maxDist, + minPointers, + maxPointers, + ...props + }); + } + + onGestureEnded(...props) { + clearTimeout(this._timer); // @ts-ignore TODO(TS) check how onGestureEnded works + + super.onGestureEnded(...props); + } + + onWaitingEnded(_gesture) { + if (this._shouldFireEndEvent) { + this.onSuccessfulTap(this._shouldFireEndEvent); + this._shouldFireEndEvent = null; + } + } + +} + +export default TapGestureHandler; +//# sourceMappingURL=TapGestureHandler.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js.map new file mode 100644 index 00000000..4145c77f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/TapGestureHandler.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["TapGestureHandler.ts"],"names":["Hammer","DiscreteGestureHandler","isnan","TapGestureHandler","ev","_getPendingGestures","length","_shouldFireEndEvent","eventType","INPUT_END","sendEvent","INPUT_MOVE","isFinal","onGestureEnded","name","NativeGestureClass","Tap","maxDelayMs","config","simulateCancelEvent","inputData","isGestureRunning","cancelEvent","onGestureActivated","onSuccessfulTap","onRawEvent","hasGestureFailed","gesture","hammer","get","options","enable","clearTimeout","_multiTapTimer","onStart","maxPointers","setTimeout","_timer","getHammerConfig","event","taps","numberOfTaps","interval","time","maxDurationMs","updateGestureConfig","shouldCancelWhenOutside","maxDeltaX","Number","NaN","maxDeltaY","minDurationMs","maxDist","minPointers","props","onWaitingEnded","_gesture"],"mappings":"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","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport DiscreteGestureHandler from './DiscreteGestureHandler';\nimport { HammerInputExt } from './GestureHandler';\nimport { isnan } from './utils';\n\nclass TapGestureHandler extends DiscreteGestureHandler {\n private _shouldFireEndEvent: HammerInputExt | null = null;\n private _timer: any;\n private _multiTapTimer: any; // TODO unused?\n get name() {\n return 'tap';\n }\n\n get NativeGestureClass() {\n return Hammer.Tap;\n }\n\n get maxDelayMs() {\n // @ts-ignore TODO(TS) trace down config\n return isnan(this.config.maxDelayMs) ? 300 : this.config.maxDelayMs;\n }\n\n simulateCancelEvent(inputData: HammerInputExt) {\n if (this.isGestureRunning) {\n this.cancelEvent(inputData);\n }\n }\n\n onGestureActivated(ev: HammerInputExt) {\n if (this.isGestureRunning) {\n this.onSuccessfulTap(ev);\n }\n }\n\n onSuccessfulTap = (ev: HammerInputExt) => {\n if (this._getPendingGestures().length) {\n this._shouldFireEndEvent = ev;\n return;\n }\n if (ev.eventType === Hammer.INPUT_END) {\n this.sendEvent({ ...ev, eventType: Hammer.INPUT_MOVE });\n }\n // When handler gets activated it will turn into State.END immediately.\n this.sendEvent({ ...ev, isFinal: true });\n this.onGestureEnded(ev);\n };\n\n onRawEvent(ev: HammerInput) {\n super.onRawEvent(ev);\n\n // Attempt to create a touch-down event by checking if a valid tap hasn't started yet, then validating the input.\n if (\n !this.hasGestureFailed &&\n !this.isGestureRunning &&\n // Prevent multi-pointer events from misfiring.\n !ev.isFinal\n ) {\n // Tap Gesture start event\n const gesture = this.hammer!.get(this.name);\n // @ts-ignore TODO(TS) trace down config\n if (gesture.options.enable(gesture, ev)) {\n clearTimeout(this._multiTapTimer);\n\n this.onStart(ev);\n this.sendEvent(ev);\n }\n }\n if (ev.isFinal && ev.maxPointers > 1) {\n setTimeout(() => {\n // Handle case where one finger presses slightly\n // after the first finger on a multi-tap event\n if (this.isGestureRunning) {\n this.cancelEvent(ev);\n }\n });\n }\n\n if (this.hasGestureFailed) {\n return;\n }\n // Hammer doesn't send a `cancel` event for taps.\n // Manually fail the event.\n if (ev.isFinal) {\n // Handle case where one finger presses slightly\n // after the first finger on a multi-tap event\n if (ev.maxPointers > 1) {\n setTimeout(() => {\n if (this.isGestureRunning) {\n this.cancelEvent(ev);\n }\n });\n }\n\n // Clear last timer\n clearTimeout(this._timer);\n // Create time out for multi-taps.\n this._timer = setTimeout(() => {\n this.hasGestureFailed = true;\n this.cancelEvent(ev);\n }, this.maxDelayMs);\n } else if (!this.hasGestureFailed && !this.isGestureRunning) {\n // Tap Gesture start event\n const gesture = this.hammer!.get(this.name);\n // @ts-ignore TODO(TS) trace down config\n if (gesture.options.enable(gesture, ev)) {\n clearTimeout(this._multiTapTimer);\n\n this.onStart(ev);\n this.sendEvent(ev);\n }\n }\n }\n\n getHammerConfig() {\n return {\n ...super.getHammerConfig(),\n event: this.name,\n // @ts-ignore TODO(TS) trace down config\n taps: isnan(this.config.numberOfTaps) ? 1 : this.config.numberOfTaps,\n interval: this.maxDelayMs,\n time:\n // @ts-ignore TODO(TS) trace down config\n isnan(this.config.maxDurationMs) || this.config.maxDurationMs == null\n ? 250\n : // @ts-ignore TODO(TS) trace down config\n this.config.maxDurationMs,\n };\n }\n\n updateGestureConfig({\n shouldCancelWhenOutside = true,\n maxDeltaX = Number.NaN,\n maxDeltaY = Number.NaN,\n numberOfTaps = 1,\n minDurationMs = 525,\n maxDelayMs = Number.NaN,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO possibly forgotten to use in updateGestureConfig?\n maxDurationMs = Number.NaN,\n maxDist = 2,\n minPointers = 1,\n maxPointers = 1,\n ...props\n }) {\n return super.updateGestureConfig({\n shouldCancelWhenOutside,\n numberOfTaps,\n maxDeltaX,\n maxDeltaY,\n minDurationMs,\n maxDelayMs,\n maxDist,\n minPointers,\n maxPointers,\n ...props,\n });\n }\n\n onGestureEnded(...props: any) {\n clearTimeout(this._timer);\n // @ts-ignore TODO(TS) check how onGestureEnded works\n super.onGestureEnded(...props);\n }\n\n onWaitingEnded(_gesture: any) {\n if (this._shouldFireEndEvent) {\n this.onSuccessfulTap(this._shouldFireEndEvent);\n this._shouldFireEndEvent = null;\n }\n }\n}\nexport default TapGestureHandler;\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js new file mode 100644 index 00000000..5944bdd9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js @@ -0,0 +1,43 @@ +import Hammer from '@egjs/hammerjs'; +import { State } from '../State'; +export const CONTENT_TOUCHES_DELAY = 240; +export const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50; +export const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1; +export const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7; +export const DEG_RAD = Math.PI / 180; // Map Hammer values to RNGH + +export const EventMap = { + [Hammer.INPUT_START]: State.BEGAN, + [Hammer.INPUT_MOVE]: State.ACTIVE, + [Hammer.INPUT_END]: State.END, + [Hammer.INPUT_CANCEL]: State.FAILED +}; +export const Direction = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8 +}; +export const DirectionMap = { + [Hammer.DIRECTION_RIGHT]: Direction.RIGHT, + [Hammer.DIRECTION_LEFT]: Direction.LEFT, + [Hammer.DIRECTION_UP]: Direction.UP, + [Hammer.DIRECTION_DOWN]: Direction.DOWN +}; +export const HammerInputNames = { + [Hammer.INPUT_START]: 'START', + [Hammer.INPUT_MOVE]: 'MOVE', + [Hammer.INPUT_END]: 'END', + [Hammer.INPUT_CANCEL]: 'CANCEL' +}; +export const HammerDirectionNames = { + [Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL', + [Hammer.DIRECTION_UP]: 'UP', + [Hammer.DIRECTION_DOWN]: 'DOWN', + [Hammer.DIRECTION_VERTICAL]: 'VERTICAL', + [Hammer.DIRECTION_NONE]: 'NONE', + [Hammer.DIRECTION_ALL]: 'ALL', + [Hammer.DIRECTION_RIGHT]: 'RIGHT', + [Hammer.DIRECTION_LEFT]: 'LEFT' +}; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js.map new file mode 100644 index 00000000..56a31eb7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/constants.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["constants.ts"],"names":["Hammer","State","CONTENT_TOUCHES_DELAY","CONTENT_TOUCHES_QUICK_TAP_END_DELAY","MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD","MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD","DEG_RAD","Math","PI","EventMap","INPUT_START","BEGAN","INPUT_MOVE","ACTIVE","INPUT_END","END","INPUT_CANCEL","FAILED","Direction","RIGHT","LEFT","UP","DOWN","DirectionMap","DIRECTION_RIGHT","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_DOWN","HammerInputNames","HammerDirectionNames","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_NONE","DIRECTION_ALL"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,gBAAnB;AAEA,SAASC,KAAT,QAAsB,UAAtB;AAEA,OAAO,MAAMC,qBAAqB,GAAG,GAA9B;AACP,OAAO,MAAMC,mCAAmC,GAAG,EAA5C;AACP,OAAO,MAAMC,oCAAoC,GAAG,GAA7C;AACP,OAAO,MAAMC,uCAAuC,GAAG,CAAhD;AACP,OAAO,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAL,GAAU,GAA1B,C,CAEP;;AACA,OAAO,MAAMC,QAAQ,GAAG;AACtB,GAACT,MAAM,CAACU,WAAR,GAAsBT,KAAK,CAACU,KADN;AAEtB,GAACX,MAAM,CAACY,UAAR,GAAqBX,KAAK,CAACY,MAFL;AAGtB,GAACb,MAAM,CAACc,SAAR,GAAoBb,KAAK,CAACc,GAHJ;AAItB,GAACf,MAAM,CAACgB,YAAR,GAAuBf,KAAK,CAACgB;AAJP,CAAjB;AAOP,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,IAAI,EAAE,CAFiB;AAGvBC,EAAAA,EAAE,EAAE,CAHmB;AAIvBC,EAAAA,IAAI,EAAE;AAJiB,CAAlB;AAOP,OAAO,MAAMC,YAAY,GAAG;AAC1B,GAACvB,MAAM,CAACwB,eAAR,GAA0BN,SAAS,CAACC,KADV;AAE1B,GAACnB,MAAM,CAACyB,cAAR,GAAyBP,SAAS,CAACE,IAFT;AAG1B,GAACpB,MAAM,CAAC0B,YAAR,GAAuBR,SAAS,CAACG,EAHP;AAI1B,GAACrB,MAAM,CAAC2B,cAAR,GAAyBT,SAAS,CAACI;AAJT,CAArB;AAOP,OAAO,MAAMM,gBAAgB,GAAG;AAC9B,GAAC5B,MAAM,CAACU,WAAR,GAAsB,OADQ;AAE9B,GAACV,MAAM,CAACY,UAAR,GAAqB,MAFS;AAG9B,GAACZ,MAAM,CAACc,SAAR,GAAoB,KAHU;AAI9B,GAACd,MAAM,CAACgB,YAAR,GAAuB;AAJO,CAAzB;AAMP,OAAO,MAAMa,oBAAoB,GAAG;AAClC,GAAC7B,MAAM,CAAC8B,oBAAR,GAA+B,YADG;AAElC,GAAC9B,MAAM,CAAC0B,YAAR,GAAuB,IAFW;AAGlC,GAAC1B,MAAM,CAAC2B,cAAR,GAAyB,MAHS;AAIlC,GAAC3B,MAAM,CAAC+B,kBAAR,GAA6B,UAJK;AAKlC,GAAC/B,MAAM,CAACgC,cAAR,GAAyB,MALS;AAMlC,GAAChC,MAAM,CAACiC,aAAR,GAAwB,KANU;AAOlC,GAACjC,MAAM,CAACwB,eAAR,GAA0B,OAPQ;AAQlC,GAACxB,MAAM,CAACyB,cAAR,GAAyB;AARS,CAA7B","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\n\nexport const CONTENT_TOUCHES_DELAY = 240;\nexport const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;\nexport const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;\nexport const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;\nexport const DEG_RAD = Math.PI / 180;\n\n// Map Hammer values to RNGH\nexport const EventMap = {\n [Hammer.INPUT_START]: State.BEGAN,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.FAILED,\n} as const;\n\nexport const Direction = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n};\n\nexport const DirectionMap = {\n [Hammer.DIRECTION_RIGHT]: Direction.RIGHT,\n [Hammer.DIRECTION_LEFT]: Direction.LEFT,\n [Hammer.DIRECTION_UP]: Direction.UP,\n [Hammer.DIRECTION_DOWN]: Direction.DOWN,\n};\n\nexport const HammerInputNames = {\n [Hammer.INPUT_START]: 'START',\n [Hammer.INPUT_MOVE]: 'MOVE',\n [Hammer.INPUT_END]: 'END',\n [Hammer.INPUT_CANCEL]: 'CANCEL',\n};\nexport const HammerDirectionNames = {\n [Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL',\n [Hammer.DIRECTION_UP]: 'UP',\n [Hammer.DIRECTION_DOWN]: 'DOWN',\n [Hammer.DIRECTION_VERTICAL]: 'VERTICAL',\n [Hammer.DIRECTION_NONE]: 'NONE',\n [Hammer.DIRECTION_ALL]: 'ALL',\n [Hammer.DIRECTION_RIGHT]: 'RIGHT',\n [Hammer.DIRECTION_LEFT]: 'LEFT',\n};\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js new file mode 100644 index 00000000..2591b7f7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js @@ -0,0 +1,19 @@ +// TODO(TS) remove if not necessary after rewrite +export const isnan = v => Number.isNaN(v); // TODO(TS) remove if not necessary after rewrite + +export const isValidNumber = v => typeof v === 'number' && !Number.isNaN(v); +export const TEST_MIN_IF_NOT_NAN = (value, limit) => !isnan(limit) && (limit < 0 && value <= limit || limit >= 0 && value >= limit); +export const VEC_LEN_SQ = ({ + x = 0, + y = 0 +} = {}) => x * x + y * y; +export const TEST_MAX_IF_NOT_NAN = (value, max) => !isnan(max) && (max < 0 && value < max || max >= 0 && value > max); +export function fireAfterInterval(method, interval) { + if (!interval) { + method(); + return null; + } + + return setTimeout(() => method(), interval); +} +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js.map b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js.map new file mode 100644 index 00000000..0c7e1fa3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/module/web_hammer/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.ts"],"names":["isnan","v","Number","isNaN","isValidNumber","TEST_MIN_IF_NOT_NAN","value","limit","VEC_LEN_SQ","x","y","TEST_MAX_IF_NOT_NAN","max","fireAfterInterval","method","interval","setTimeout"],"mappings":"AAAA;AACA,OAAO,MAAMA,KAAK,GAAIC,CAAD,IAAgBC,MAAM,CAACC,KAAP,CAAaF,CAAb,CAA9B,C,CAEP;;AACA,OAAO,MAAMG,aAAa,GAAIH,CAAD,IAC3B,OAAOA,CAAP,KAAa,QAAb,IAAyB,CAACC,MAAM,CAACC,KAAP,CAAaF,CAAb,CADrB;AAGP,OAAO,MAAMI,mBAAmB,GAAG,CAACC,KAAD,EAAgBC,KAAhB,KACjC,CAACP,KAAK,CAACO,KAAD,CAAN,KACEA,KAAK,GAAG,CAAR,IAAaD,KAAK,IAAIC,KAAvB,IAAkCA,KAAK,IAAI,CAAT,IAAcD,KAAK,IAAIC,KAD1D,CADK;AAGP,OAAO,MAAMC,UAAU,GAAG,CAAC;AAAEC,EAAAA,CAAC,GAAG,CAAN;AAASC,EAAAA,CAAC,GAAG;AAAb,IAAmB,EAApB,KAA2BD,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAA1D;AACP,OAAO,MAAMC,mBAAmB,GAAG,CAACL,KAAD,EAAgBM,GAAhB,KACjC,CAACZ,KAAK,CAACY,GAAD,CAAN,KAAiBA,GAAG,GAAG,CAAN,IAAWN,KAAK,GAAGM,GAApB,IAA6BA,GAAG,IAAI,CAAP,IAAYN,KAAK,GAAGM,GAAjE,CADK;AAGP,OAAO,SAASC,iBAAT,CACLC,MADK,EAELC,QAFK,EAGL;AACA,MAAI,CAACA,QAAL,EAAe;AACbD,IAAAA,MAAM;AACN,WAAO,IAAP;AACD;;AACD,SAAOE,UAAU,CAAC,MAAMF,MAAM,EAAb,EAAiBC,QAAjB,CAAjB;AACD","sourcesContent":["// TODO(TS) remove if not necessary after rewrite\nexport const isnan = (v: unknown) => Number.isNaN(v);\n\n// TODO(TS) remove if not necessary after rewrite\nexport const isValidNumber = (v: unknown) =>\n typeof v === 'number' && !Number.isNaN(v);\n\nexport const TEST_MIN_IF_NOT_NAN = (value: number, limit: number): boolean =>\n !isnan(limit) &&\n ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit));\nexport const VEC_LEN_SQ = ({ x = 0, y = 0 } = {}) => x * x + y * y;\nexport const TEST_MAX_IF_NOT_NAN = (value: number, max: number) =>\n !isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max));\n\nexport function fireAfterInterval(\n method: () => void,\n interval?: number | boolean\n) {\n if (!interval) {\n method();\n return null;\n }\n return setTimeout(() => method(), interval as number);\n}\n"]} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/ActionType.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/ActionType.d.ts new file mode 100644 index 00000000..2625dc27 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/ActionType.d.ts @@ -0,0 +1,7 @@ +export declare const ActionType: { + readonly REANIMATED_WORKLET: 1; + readonly NATIVE_ANIMATED_EVENT: 2; + readonly JS_FUNCTION_OLD_API: 3; + readonly JS_FUNCTION_NEW_API: 4; +}; +export declare type ActionType = typeof ActionType[keyof typeof ActionType]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/Directions.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/Directions.d.ts new file mode 100644 index 00000000..e1020204 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/Directions.d.ts @@ -0,0 +1,7 @@ +export declare const Directions: { + readonly RIGHT: 1; + readonly LEFT: 2; + readonly UP: 4; + readonly DOWN: 8; +}; +export declare type Directions = typeof Directions[keyof typeof Directions]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/EnableExperimentalWebImplementation.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/EnableExperimentalWebImplementation.d.ts new file mode 100644 index 00000000..7c2baf88 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/EnableExperimentalWebImplementation.d.ts @@ -0,0 +1,2 @@ +export declare function enableExperimentalWebImplementation(shouldEnable?: boolean): void; +export declare function isExperimentalWebImplementationEnabled(): boolean; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.android.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.android.d.ts new file mode 100644 index 00000000..e9b699a3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.android.d.ts @@ -0,0 +1,5 @@ +import { PropsWithChildren } from 'react'; +import { ViewProps } from 'react-native'; +export interface GestureHandlerRootViewProps extends PropsWithChildren { +} +export default function GestureHandlerRootView(props: GestureHandlerRootViewProps): JSX.Element; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.d.ts new file mode 100644 index 00000000..e9b699a3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.d.ts @@ -0,0 +1,5 @@ +import { PropsWithChildren } from 'react'; +import { ViewProps } from 'react-native'; +export interface GestureHandlerRootViewProps extends PropsWithChildren { +} +export default function GestureHandlerRootView(props: GestureHandlerRootViewProps): JSX.Element; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.web.d.ts new file mode 100644 index 00000000..e9b699a3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/GestureHandlerRootView.web.d.ts @@ -0,0 +1,5 @@ +import { PropsWithChildren } from 'react'; +import { ViewProps } from 'react-native'; +export interface GestureHandlerRootViewProps extends PropsWithChildren { +} +export default function GestureHandlerRootView(props: GestureHandlerRootViewProps): JSX.Element; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.d.ts new file mode 100644 index 00000000..d9fa2374 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.d.ts @@ -0,0 +1,5 @@ +declare type PlatformConstants = { + forceTouchAvailable: boolean; +}; +declare const _default: PlatformConstants; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.web.d.ts new file mode 100644 index 00000000..7b53029e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/PlatformConstants.web.d.ts @@ -0,0 +1,4 @@ +declare const _default: { + readonly forceTouchAvailable: boolean; +}; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.d.ts new file mode 100644 index 00000000..0d8c954e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.d.ts @@ -0,0 +1,13 @@ +import { ActionType } from './ActionType'; +export declare type RNGestureHandlerModuleProps = { + handleSetJSResponder: (tag: number, blockNativeResponder: boolean) => void; + handleClearJSResponder: () => void; + createGestureHandler: (handlerName: string, handlerTag: number, config: Readonly>) => void; + attachGestureHandler: (handlerTag: number, newView: number, actionType: ActionType) => void; + updateGestureHandler: (handlerTag: number, newConfig: Readonly>) => void; + dropGestureHandler: (handlerTag: number) => void; + install: () => void; + flushOperations: () => void; +}; +declare const _default: RNGestureHandlerModuleProps; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.macos.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.macos.d.ts new file mode 100644 index 00000000..1505e5f8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.macos.d.ts @@ -0,0 +1,47 @@ +import { ActionType } from './ActionType'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +import { Config } from './web/interfaces'; +export declare const Gestures: { + NativeViewGestureHandler: typeof NativeViewGestureHandler; + PanGestureHandler: typeof PanGestureHandler; + TapGestureHandler: typeof TapGestureHandler; + LongPressGestureHandler: typeof LongPressGestureHandler; + PinchGestureHandler: typeof PinchGestureHandler; + RotationGestureHandler: typeof RotationGestureHandler; + FlingGestureHandler: typeof FlingGestureHandler; + ManualGestureHandler: typeof ManualGestureHandler; +}; +export declare const HammerGestures: { + NativeViewGestureHandler: typeof HammerNativeViewGestureHandler; + PanGestureHandler: typeof HammerPanGestureHandler; + TapGestureHandler: typeof HammerTapGestureHandler; + LongPressGestureHandler: typeof HammerLongPressGestureHandler; + PinchGestureHandler: typeof HammerPinchGestureHandler; + RotationGestureHandler: typeof HammerRotationGestureHandler; + FlingGestureHandler: typeof HammerFlingGestureHandler; +}; +declare const _default: { + handleSetJSResponder(_tag: number, _blockNativeResponder: boolean): void; + handleClearJSResponder(): void; + createGestureHandler(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void; + attachGestureHandler(handlerTag: number, newView: number, _actionType: ActionType, propsRef: React.RefObject): void; + updateGestureHandler(handlerTag: number, newConfig: Config): void; + getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler; + dropGestureHandler(handlerTag: number): void; + flushOperations(): void; +}; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.web.d.ts new file mode 100644 index 00000000..aaee04ac --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.web.d.ts @@ -0,0 +1,48 @@ +import React from 'react'; +import { ActionType } from './ActionType'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +import { Config } from './web/interfaces'; +export declare const Gestures: { + NativeViewGestureHandler: typeof NativeViewGestureHandler; + PanGestureHandler: typeof PanGestureHandler; + TapGestureHandler: typeof TapGestureHandler; + LongPressGestureHandler: typeof LongPressGestureHandler; + PinchGestureHandler: typeof PinchGestureHandler; + RotationGestureHandler: typeof RotationGestureHandler; + FlingGestureHandler: typeof FlingGestureHandler; + ManualGestureHandler: typeof ManualGestureHandler; +}; +export declare const HammerGestures: { + NativeViewGestureHandler: typeof HammerNativeViewGestureHandler; + PanGestureHandler: typeof HammerPanGestureHandler; + TapGestureHandler: typeof HammerTapGestureHandler; + LongPressGestureHandler: typeof HammerLongPressGestureHandler; + PinchGestureHandler: typeof HammerPinchGestureHandler; + RotationGestureHandler: typeof HammerRotationGestureHandler; + FlingGestureHandler: typeof HammerFlingGestureHandler; +}; +declare const _default: { + handleSetJSResponder(tag: number, blockNativeResponder: boolean): void; + handleClearJSResponder(): void; + createGestureHandler(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void; + attachGestureHandler(handlerTag: number, newView: any, _actionType: ActionType, propsRef: React.RefObject): void; + updateGestureHandler(handlerTag: number, newConfig: Config): void; + getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler; + dropGestureHandler(handlerTag: number): void; + flushOperations(): void; +}; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.windows.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.windows.d.ts new file mode 100644 index 00000000..23787cfd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNGestureHandlerModule.windows.d.ts @@ -0,0 +1,48 @@ +import React from 'react'; +import { ActionType } from './ActionType'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +import { Config } from './web/interfaces'; +export declare const Gestures: { + NativeViewGestureHandler: typeof NativeViewGestureHandler; + PanGestureHandler: typeof PanGestureHandler; + TapGestureHandler: typeof TapGestureHandler; + LongPressGestureHandler: typeof LongPressGestureHandler; + PinchGestureHandler: typeof PinchGestureHandler; + RotationGestureHandler: typeof RotationGestureHandler; + FlingGestureHandler: typeof FlingGestureHandler; + ManualGestureHandler: typeof ManualGestureHandler; +}; +export declare const HammerGestures: { + NativeViewGestureHandler: typeof HammerNativeViewGestureHandler; + PanGestureHandler: typeof HammerPanGestureHandler; + TapGestureHandler: typeof HammerTapGestureHandler; + LongPressGestureHandler: typeof HammerLongPressGestureHandler; + PinchGestureHandler: typeof HammerPinchGestureHandler; + RotationGestureHandler: typeof HammerRotationGestureHandler; + FlingGestureHandler: typeof HammerFlingGestureHandler; +}; +declare const _default: { + handleSetJSResponder(_tag: number, _blockNativeResponder: boolean): void; + handleClearJSResponder(): void; + createGestureHandler(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void; + attachGestureHandler(handlerTag: number, newView: any, _actionType: ActionType, propsRef: React.RefObject): void; + updateGestureHandler(handlerTag: number, newConfig: Config): void; + getGestureHandlerNode(handlerTag: number): NativeViewGestureHandler | PanGestureHandler | TapGestureHandler | LongPressGestureHandler | PinchGestureHandler | RotationGestureHandler | FlingGestureHandler | ManualGestureHandler | HammerNativeViewGestureHandler | HammerPanGestureHandler | HammerTapGestureHandler | HammerLongPressGestureHandler | HammerPinchGestureHandler | HammerRotationGestureHandler | HammerFlingGestureHandler; + dropGestureHandler(handlerTag: number): void; + flushOperations(): void; +}; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.d.ts new file mode 100644 index 00000000..20bb3ca1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.d.ts @@ -0,0 +1 @@ +export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.web.d.ts new file mode 100644 index 00000000..f1bad133 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/RNRenderer.web.d.ts @@ -0,0 +1,3 @@ +export declare const RNRenderer: { + findHostInstance_DEPRECATED: (_ref: any) => null; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/State.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/State.d.ts new file mode 100644 index 00000000..04cc91f6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/State.d.ts @@ -0,0 +1,9 @@ +export declare const State: { + readonly UNDETERMINED: 0; + readonly FAILED: 1; + readonly BEGAN: 2; + readonly CANCELLED: 3; + readonly ACTIVE: 4; + readonly END: 5; +}; +export declare type State = typeof State[keyof typeof State]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/TouchEventType.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/TouchEventType.d.ts new file mode 100644 index 00000000..5e067b85 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/TouchEventType.d.ts @@ -0,0 +1,8 @@ +export declare const TouchEventType: { + readonly UNDETERMINED: 0; + readonly TOUCHES_DOWN: 1; + readonly TOUCHES_MOVE: 2; + readonly TOUCHES_UP: 3; + readonly TOUCHES_CANCELLED: 4; +}; +export declare type TouchEventType = typeof TouchEventType[keyof typeof TouchEventType]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/DrawerLayout.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/DrawerLayout.d.ts new file mode 100644 index 00000000..6bacfd3b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/DrawerLayout.d.ts @@ -0,0 +1,142 @@ +import * as React from 'react'; +import { Component } from 'react'; +import { Animated, StatusBarAnimation, StyleProp, ViewStyle } from 'react-native'; +import { UserSelect } from '../handlers/gestureHandlerCommon'; +import { PanGestureHandler } from '../handlers/PanGestureHandler'; +export declare type DrawerPosition = 'left' | 'right'; +export declare type DrawerState = 'Idle' | 'Dragging' | 'Settling'; +export declare type DrawerType = 'front' | 'back' | 'slide'; +export declare type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open'; +export declare type DrawerKeyboardDismissMode = 'none' | 'on-drag'; +declare type AnimatedInterpolation = ReturnType; +export interface DrawerLayoutProps { + /** + * This attribute is present in the standard implementation already and is one + * of the required params. Gesture handler version of DrawerLayout make it + * possible for the function passed as `renderNavigationView` to take an + * Animated value as a parameter that indicates the progress of drawer + * opening/closing animation (progress value is 0 when closed and 1 when + * opened). This can be used by the drawer component to animated its children + * while the drawer is opening or closing. + */ + renderNavigationView: (progressAnimatedValue: Animated.Value) => React.ReactNode; + drawerPosition?: DrawerPosition; + drawerWidth?: number; + drawerBackgroundColor?: string; + drawerLockMode?: DrawerLockMode; + keyboardDismissMode?: DrawerKeyboardDismissMode; + /** + * Called when the drawer is closed. + */ + onDrawerClose?: () => void; + /** + * Called when the drawer is opened. + */ + onDrawerOpen?: () => void; + /** + * Called when the status of the drawer changes. + */ + onDrawerStateChanged?: (newState: DrawerState, drawerWillShow: boolean) => void; + useNativeAnimations?: boolean; + drawerType?: DrawerType; + /** + * Defines how far from the edge of the content view the gesture should + * activate. + */ + edgeWidth?: number; + minSwipeDistance?: number; + /** + * When set to true Drawer component will use + * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS + * status bar whenever the drawer is pulled or when its in an "open" state. + */ + hideStatusBar?: boolean; + /** + * @default 'slide' + * + * Can be used when hideStatusBar is set to true and will select the animation + * used for hiding/showing the status bar. See + * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for + * more details + */ + statusBarAnimation?: StatusBarAnimation; + /** + * @default black + * + * Color of a semi-transparent overlay to be displayed on top of the content + * view when drawer gets open. A solid color should be used as the opacity is + * added by the Drawer itself and the opacity of the overlay is animated (from + * 0% to 70%). + */ + overlayColor?: string; + contentContainerStyle?: StyleProp; + drawerContainerStyle?: StyleProp; + /** + * Enables two-finger gestures on supported devices, for example iPads with + * trackpads. If not enabled the gesture will require click + drag, with + * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger + * the gesture. + */ + enableTrackpadTwoFingerGesture?: boolean; + onDrawerSlide?: (position: number) => void; + onGestureRef?: (ref: PanGestureHandler) => void; + children?: React.ReactNode | ((openValue?: AnimatedInterpolation) => React.ReactNode); + /** + * @default 'none' + * Defines which userSelect property should be used. + * Values: 'none'|'text'|'auto' + */ + userSelect?: UserSelect; +} +export declare type DrawerLayoutState = { + dragX: Animated.Value; + touchX: Animated.Value; + drawerTranslation: Animated.Value; + containerWidth: number; + drawerState: DrawerState; + drawerOpened: boolean; +}; +export declare type DrawerMovementOption = { + velocity?: number; + speed?: number; +}; +export default class DrawerLayout extends Component { + static defaultProps: { + drawerWidth: number; + drawerPosition: string; + useNativeAnimations: boolean; + drawerType: string; + edgeWidth: number; + minSwipeDistance: number; + overlayColor: string; + drawerLockMode: string; + enableTrackpadTwoFingerGesture: boolean; + }; + constructor(props: DrawerLayoutProps); + shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState): boolean; + private openValue?; + private onGestureEvent?; + private accessibilityIsModalView; + private pointerEventsView; + private panGestureHandler; + private drawerShown; + static positions: { + Left: string; + Right: string; + }; + private updateAnimatedEvent; + private handleContainerLayout; + private emitStateChanged; + private openingHandlerStateChange; + private onTapHandlerStateChange; + private handleRelease; + private updateShowing; + private animateDrawer; + openDrawer: (options?: DrawerMovementOption) => void; + closeDrawer: (options?: DrawerMovementOption) => void; + private renderOverlay; + private renderDrawer; + private setPanGestureRef; + render(): JSX.Element; +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureButtons.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureButtons.d.ts new file mode 100644 index 00000000..72f2033b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureButtons.d.ts @@ -0,0 +1,121 @@ +import * as React from 'react'; +import { StyleProp, ViewStyle } from 'react-native'; +import { NativeViewGestureHandlerProps } from '../handlers/NativeViewGestureHandler'; +export interface RawButtonProps extends NativeViewGestureHandlerProps { + /** + * Defines if more than one button could be pressed simultaneously. By default + * set true. + */ + exclusive?: boolean; + /** + * Android only. + * + * Defines color of native ripple animation used since API level 21. + */ + rippleColor?: any; + /** + * Android only. + * + * Defines radius of native ripple animation used since API level 21. + */ + rippleRadius?: number | null; + /** + * Android only. + * + * Set this to true if you want the ripple animation to render outside the view bounds. + */ + borderless?: boolean; + /** + * Android only. + * + * Defines whether the ripple animation should be drawn on the foreground of the view. + */ + foreground?: boolean; + /** + * Android only. + * + * Set this to true if you don't want the system to play sound when the button is pressed. + */ + touchSoundDisabled?: boolean; +} +export interface BaseButtonProps extends RawButtonProps { + /** + * Called when the button gets pressed (analogous to `onPress` in + * `TouchableHighlight` from RN core). + */ + onPress?: (pointerInside: boolean) => void; + /** + * Called when the button gets pressed and is held for `delayLongPress` + * milliseconds. + */ + onLongPress?: () => void; + /** + * Called when button changes from inactive to active and vice versa. It + * passes active state as a boolean variable as a first parameter for that + * method. + */ + onActiveStateChange?: (active: boolean) => void; + style?: StyleProp; + testID?: string; + /** + * Delay, in milliseconds, after which the `onLongPress` callback gets called. + * Defaults to 600. + */ + delayLongPress?: number; +} +export interface RectButtonProps extends BaseButtonProps { + /** + * Background color that will be dimmed when button is in active state. + */ + underlayColor?: string; + /** + * iOS only. + * + * Opacity applied to the underlay when button is in active state. + */ + activeOpacity?: number; +} +export interface BorderlessButtonProps extends BaseButtonProps { + /** + * iOS only. + * + * Opacity applied to the button when it is in an active state. + */ + activeOpacity?: number; +} +export declare const RawButton: React.ForwardRefExoticComponent>>; +export declare class BaseButton extends React.Component { + static defaultProps: { + delayLongPress: number; + }; + private lastActive; + private longPressTimeout; + private longPressDetected; + constructor(props: BaseButtonProps); + private handleEvent; + private onLongPress; + private onHandlerStateChange; + private onGestureEvent; + render(): JSX.Element; +} +export declare class RectButton extends React.Component { + static defaultProps: { + activeOpacity: number; + underlayColor: string; + }; + private opacity; + constructor(props: RectButtonProps); + private onActiveStateChange; + render(): JSX.Element; +} +export declare class BorderlessButton extends React.Component { + static defaultProps: { + activeOpacity: number; + borderless: boolean; + }; + private opacity; + constructor(props: BorderlessButtonProps); + private onActiveStateChange; + render(): JSX.Element; +} +export { default as PureNativeButton } from './GestureHandlerButton'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.d.ts new file mode 100644 index 00000000..47d0d33c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { PropsWithChildren, ForwardedRef, RefAttributes, ReactElement } from 'react'; +import { ScrollView as RNScrollView, ScrollViewProps as RNScrollViewProps, Switch as RNSwitch, SwitchProps as RNSwitchProps, TextInput as RNTextInput, TextInputProps as RNTextInputProps, DrawerLayoutAndroid as RNDrawerLayoutAndroid, DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps, FlatList as RNFlatList, FlatListProps as RNFlatListProps, RefreshControl as RNRefreshControl } from 'react-native'; +import { NativeViewGestureHandlerProps } from '../handlers/NativeViewGestureHandler'; +export declare const RefreshControl: React.ForwardRefExoticComponent>>; +export declare type RefreshControl = typeof RefreshControl & RNRefreshControl; +declare const GHScrollView: React.ForwardRefExoticComponent>>; +export declare const ScrollView: React.ForwardRefExoticComponent>; +export declare type ScrollView = typeof GHScrollView & RNScrollView; +export declare const Switch: React.ForwardRefExoticComponent>>; +export declare type Switch = typeof Switch & RNSwitch; +export declare const TextInput: React.ForwardRefExoticComponent>>; +export declare type TextInput = typeof TextInput & RNTextInput; +export declare const DrawerLayoutAndroid: React.ForwardRefExoticComponent>>; +export declare type DrawerLayoutAndroid = typeof DrawerLayoutAndroid & RNDrawerLayoutAndroid; +export declare const FlatList: (props: React.PropsWithChildren & React.RefAttributes> & NativeViewGestureHandlerProps>, ref: React.ForwardedRef>) => ReactElement | null; +export declare type FlatList = typeof FlatList & RNFlatList; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.web.d.ts new file mode 100644 index 00000000..3868815e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureComponents.web.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import { FlatListProps } from 'react-native'; +export declare const ScrollView: React.ForwardRefExoticComponent>>; +export declare const Switch: React.ForwardRefExoticComponent>>; +export declare const TextInput: React.ForwardRefExoticComponent>>; +export declare const DrawerLayoutAndroid: React.ForwardRefExoticComponent>>; +export declare const RefreshControl: React.ForwardRefExoticComponent>>; +export declare const FlatList: React.ForwardRefExoticComponent & React.RefAttributes>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.d.ts new file mode 100644 index 00000000..499d690e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.d.ts @@ -0,0 +1,4 @@ +import { HostComponent } from 'react-native'; +import { RawButtonProps } from './GestureButtons'; +declare const _default: HostComponent; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.web.d.ts new file mode 100644 index 00000000..2e71ae6d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/GestureHandlerButton.web.d.ts @@ -0,0 +1,4 @@ +import * as React from 'react'; +import { View } from 'react-native'; +declare const _default: React.ForwardRefExoticComponent>; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts new file mode 100644 index 00000000..4f2413d5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/Swipeable.d.ts @@ -0,0 +1,159 @@ +import * as React from 'react'; +import { Component } from 'react'; +import { Animated, StyleProp, ViewStyle } from 'react-native'; +import { PanGestureHandlerProps } from '../handlers/PanGestureHandler'; +declare type SwipeableExcludes = Exclude; +declare type AnimatedInterpolation = ReturnType; +export interface SwipeableProps extends Pick { + /** + * Enables two-finger gestures on supported devices, for example iPads with + * trackpads. If not enabled the gesture will require click + drag, with + * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger + * the gesture. + */ + enableTrackpadTwoFingerGesture?: boolean; + /** + * Specifies how much the visual interaction will be delayed compared to the + * gesture distance. e.g. value of 1 will indicate that the swipeable panel + * should exactly follow the gesture, 2 means it is going to be two times + * "slower". + */ + friction?: number; + /** + * Distance from the left edge at which released panel will animate to the + * open state (or the open panel will animate into the closed state). By + * default it's a half of the panel's width. + */ + leftThreshold?: number; + /** + * Distance from the right edge at which released panel will animate to the + * open state (or the open panel will animate into the closed state). By + * default it's a half of the panel's width. + */ + rightThreshold?: number; + /** + * Value indicating if the swipeable panel can be pulled further than the left + * actions panel's width. It is set to true by default as long as the left + * panel render method is present. + */ + overshootLeft?: boolean; + /** + * Value indicating if the swipeable panel can be pulled further than the + * right actions panel's width. It is set to true by default as long as the + * right panel render method is present. + */ + overshootRight?: boolean; + /** + * Specifies how much the visual interaction will be delayed compared to the + * gesture distance at overshoot. Default value is 1, it mean no friction, for + * a native feel, try 8 or above. + */ + overshootFriction?: number; + /** + * @deprecated Use `direction` argument of onSwipeableOpen() + * + * Called when left action panel gets open. + */ + onSwipeableLeftOpen?: () => void; + /** + * @deprecated Use `direction` argument of onSwipeableOpen() + * + * Called when right action panel gets open. + */ + onSwipeableRightOpen?: () => void; + /** + * Called when action panel gets open (either right or left). + */ + onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void; + /** + * Called when action panel is closed. + */ + onSwipeableClose?: (direction: 'left' | 'right', swipeable: Swipeable) => void; + /** + * @deprecated Use `direction` argument of onSwipeableWillOpen() + * + * Called when left action panel starts animating on open. + */ + onSwipeableLeftWillOpen?: () => void; + /** + * @deprecated Use `direction` argument of onSwipeableWillOpen() + * + * Called when right action panel starts animating on open. + */ + onSwipeableRightWillOpen?: () => void; + /** + * Called when action panel starts animating on open (either right or left). + */ + onSwipeableWillOpen?: (direction: 'left' | 'right') => void; + /** + * Called when action panel starts animating on close. + */ + onSwipeableWillClose?: (direction: 'left' | 'right') => void; + /** + * + * This map describes the values to use as inputRange for extra interpolation: + * AnimatedValue: [startValue, endValue] + * + * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +] + * + * To support `rtl` flexbox layouts use `flexDirection` styling. + * */ + renderLeftActions?: (progressAnimatedValue: AnimatedInterpolation, dragAnimatedValue: AnimatedInterpolation) => React.ReactNode; + /** + * + * This map describes the values to use as inputRange for extra interpolation: + * AnimatedValue: [startValue, endValue] + * + * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -] + * + * To support `rtl` flexbox layouts use `flexDirection` styling. + * */ + renderRightActions?: (progressAnimatedValue: AnimatedInterpolation, dragAnimatedValue: AnimatedInterpolation, swipeable: Swipeable) => React.ReactNode; + useNativeAnimations?: boolean; + animationOptions?: Record; + /** + * Style object for the container (`Animated.View`), for example to override + * `overflow: 'hidden'`. + */ + containerStyle?: StyleProp; + /** + * Style object for the children container (`Animated.View`), for example to + * apply `flex: 1` + */ + childrenContainerStyle?: StyleProp; +} +declare type SwipeableState = { + dragX: Animated.Value; + rowTranslation: Animated.Value; + rowState: number; + leftWidth?: number; + rightOffset?: number; + rowWidth?: number; +}; +export default class Swipeable extends Component { + static defaultProps: { + friction: number; + overshootFriction: number; + useNativeAnimations: boolean; + }; + constructor(props: SwipeableProps); + shouldComponentUpdate(props: SwipeableProps, state: SwipeableState): boolean; + private onGestureEvent?; + private transX?; + private showLeftAction?; + private leftActionTranslate?; + private showRightAction?; + private rightActionTranslate?; + private updateAnimatedEvent; + private onTapHandlerStateChange; + private onHandlerStateChange; + private handleRelease; + private animateRow; + private onRowLayout; + private currentOffset; + close: () => void; + openLeft: () => void; + openRight: () => void; + render(): JSX.Element; +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/GenericTouchable.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/GenericTouchable.d.ts new file mode 100644 index 00000000..cf0a0a6f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/GenericTouchable.d.ts @@ -0,0 +1,66 @@ +import { Component } from 'react'; +import { StyleProp, ViewStyle, TouchableWithoutFeedbackProps } from 'react-native'; +import { GestureEvent, HandlerStateChangeEvent } from '../../handlers/gestureHandlerCommon'; +import { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler'; +import { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android'; +/** + * Each touchable is a states' machine which preforms transitions. + * On very beginning (and on the very end or recognition) touchable is + * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger + * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition + * finishes in UNDETERMINED state. + */ +export declare const TOUCHABLE_STATE: { + readonly UNDETERMINED: 0; + readonly BEGAN: 1; + readonly MOVED_OUTSIDE: 2; +}; +declare type TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE]; +export interface GenericTouchableProps extends TouchableWithoutFeedbackProps { + onPress?: () => void; + onPressIn?: () => void; + onPressOut?: () => void; + onLongPress?: () => void; + nativeID?: string; + shouldActivateOnStart?: boolean; + disallowInterruption?: boolean; + containerStyle?: StyleProp; +} +interface InternalProps { + extraButtonProps: TouchableNativeFeedbackExtraProps; + onStateChange?: (oldState: TouchableState, newState: TouchableState) => void; +} +declare type Timeout = ReturnType | null | undefined; +/** + * GenericTouchable is not intented to be used as it is. + * Should be treated as a source for the rest of touchables + */ +export default class GenericTouchable extends Component { + static defaultProps: { + delayLongPress: number; + extraButtonProps: { + rippleColor: string; + exclusive: boolean; + }; + }; + pressInTimeout: Timeout; + pressOutTimeout: Timeout; + longPressTimeout: Timeout; + longPressDetected: boolean; + pointerInside: boolean; + STATE: TouchableState; + handlePressIn(): void; + handleMoveOutside(): void; + handleGoToUndetermined(): void; + componentDidMount(): void; + reset(): void; + moveToState(newState: TouchableState): void; + onGestureEvent: ({ nativeEvent: { pointerInside }, }: GestureEvent) => void; + onHandlerStateChange: ({ nativeEvent, }: HandlerStateChangeEvent) => void; + onLongPressDetected: () => void; + componentWillUnmount(): void; + onMoveIn(): void; + onMoveOut(): void; + render(): JSX.Element; +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableHighlight.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableHighlight.d.ts new file mode 100644 index 00000000..18b2b5a5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableHighlight.d.ts @@ -0,0 +1,34 @@ +import { Component } from 'react'; +import { GenericTouchableProps } from './GenericTouchable'; +import { TouchableHighlightProps, ColorValue } from 'react-native'; +interface State { + extraChildStyle: null | { + opacity?: number; + }; + extraUnderlayStyle: null | { + backgroundColor?: ColorValue; + }; +} +/** + * TouchableHighlight follows RN's implementation + */ +export default class TouchableHighlight extends Component { + static defaultProps: { + activeOpacity: number; + delayPressOut: number; + underlayColor: string; + delayLongPress: number; + extraButtonProps: { + rippleColor: string; + exclusive: boolean; + }; + }; + constructor(props: TouchableHighlightProps & GenericTouchableProps); + showUnderlay: () => void; + hasPressHandler: () => (((event: import("react-native").GestureResponderEvent) => void) & (() => void)) | undefined; + hideUnderlay: () => void; + renderChildren(): JSX.Element; + onStateChange: (_from: number, to: number) => void; + render(): JSX.Element; +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts new file mode 100644 index 00000000..acee3df6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts @@ -0,0 +1,43 @@ +import { TouchableNativeFeedbackProps, ColorValue } from 'react-native'; +import { Component } from 'react'; +import { GenericTouchableProps } from './GenericTouchable'; +export declare type TouchableNativeFeedbackExtraProps = { + borderless?: boolean; + rippleColor?: number | null; + rippleRadius?: number | null; + foreground?: boolean; +}; +/** + * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback. + * There's small difference with handling long press ripple since RN's implementation calls + * ripple animation via bridge. This solution leaves all animations' handling for native components so + * it follows native behaviours. + */ +export default class TouchableNativeFeedback extends Component { + static defaultProps: { + useForeground: boolean; + extraButtonProps: { + rippleColor: null; + }; + delayLongPress: number; + }; + static SelectableBackground: (rippleRadius?: number | undefined) => { + type: string; + attribute: string; + rippleRadius: number | undefined; + }; + static SelectableBackgroundBorderless: (rippleRadius?: number | undefined) => { + type: string; + attribute: string; + rippleRadius: number | undefined; + }; + static Ripple: (color: ColorValue, borderless: boolean, rippleRadius?: number | undefined) => { + type: string; + color: ColorValue; + borderless: boolean; + rippleRadius: number | undefined; + }; + static canUseNativeForeground: () => boolean; + getExtraButtonProps(): TouchableNativeFeedbackExtraProps; + render(): JSX.Element; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts new file mode 100644 index 00000000..add3ff6d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts @@ -0,0 +1,2 @@ +import { TouchableNativeFeedback } from 'react-native'; +export default TouchableNativeFeedback; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableOpacity.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableOpacity.d.ts new file mode 100644 index 00000000..e887ef7f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableOpacity.d.ts @@ -0,0 +1,25 @@ +import { Animated, TouchableOpacityProps } from 'react-native'; +import { GenericTouchableProps } from './GenericTouchable'; +import { Component } from 'react'; +interface GHTouchableOpacityProps { + useNativeAnimations?: boolean; +} +/** + * TouchableOpacity bases on timing animation which has been used in RN's core + */ +export default class TouchableOpacity extends Component { + static defaultProps: { + activeOpacity: number; + delayLongPress: number; + extraButtonProps: { + rippleColor: string; + exclusive: boolean; + }; + }; + getChildStyleOpacityWithDefault: () => number; + opacity: Animated.Value; + setOpacityTo: (value: number, duration: number) => void; + onStateChange: (_from: number, to: number) => void; + render(): JSX.Element; +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts new file mode 100644 index 00000000..9f25968e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts @@ -0,0 +1,6 @@ +import * as React from 'react'; +import GenericTouchable, { GenericTouchableProps } from './GenericTouchable'; +declare const TouchableWithoutFeedback: React.ForwardRefExoticComponent>; +export default TouchableWithoutFeedback; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/index.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/index.d.ts new file mode 100644 index 00000000..fa9ae12b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/components/touchables/index.d.ts @@ -0,0 +1,4 @@ +export { default as TouchableNativeFeedback } from './TouchableNativeFeedback'; +export { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback'; +export { default as TouchableOpacity } from './TouchableOpacity'; +export { default as TouchableHighlight } from './TouchableHighlight'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts new file mode 100644 index 00000000..6ce45f28 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts @@ -0,0 +1,14 @@ +/// +import type { Int32, WithDefault } from 'react-native/Libraries/Types/CodegenTypes'; +import type { ViewProps, ColorValue } from 'react-native'; +interface NativeProps extends ViewProps { + exclusive?: WithDefault; + foreground?: boolean; + borderless?: boolean; + enabled?: WithDefault; + rippleColor?: ColorValue; + rippleRadius?: Int32; + touchSoundDisabled?: WithDefault; +} +declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts new file mode 100644 index 00000000..396f815a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts @@ -0,0 +1,6 @@ +/// +import type { ViewProps } from 'react-native'; +interface NativeProps extends ViewProps { +} +declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/gestureHandlerRootHOC.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/gestureHandlerRootHOC.d.ts new file mode 100644 index 00000000..8007709d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/gestureHandlerRootHOC.d.ts @@ -0,0 +1,3 @@ +import * as React from 'react'; +import { StyleProp, ViewStyle } from 'react-native'; +export default function gestureHandlerRootHOC

(Component: React.ComponentType

, containerStyles?: StyleProp): React.ComponentType

; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.d.ts new file mode 100644 index 00000000..49caae76 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.d.ts @@ -0,0 +1 @@ +export declare function getShadowNodeFromRef(ref: any): any; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.web.d.ts new file mode 100644 index 00000000..1de8a9cc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/getShadowNodeFromRef.web.d.ts @@ -0,0 +1 @@ +export declare function getShadowNodeFromRef(_ref: any): null; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/FlingGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/FlingGestureHandler.d.ts new file mode 100644 index 00000000..b7b2d65e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/FlingGestureHandler.d.ts @@ -0,0 +1,34 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare const flingGestureHandlerProps: readonly ["numberOfPointers", "direction"]; +export declare type FlingGestureHandlerEventPayload = { + x: number; + y: number; + absoluteX: number; + absoluteY: number; +}; +export interface FlingGestureConfig { + /** + * Expressed allowed direction of movement. It's possible to pass one or many + * directions in one parameter: + * + * ```js + * direction={Directions.RIGHT | Directions.LEFT} + * ``` + * + * or + * + * ```js + * direction={Directions.DOWN} + * ``` + */ + direction?: number; + /** + * Determine exact number of points required to handle the fling gesture. + */ + numberOfPointers?: number; +} +export interface FlingGestureHandlerProps extends BaseGestureHandlerProps, FlingGestureConfig { +} +export declare const flingHandlerName = "FlingGestureHandler"; +export declare type FlingGestureHandler = typeof FlingGestureHandler; +export declare const FlingGestureHandler: import("react").ComponentType>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/ForceTouchGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/ForceTouchGestureHandler.d.ts new file mode 100644 index 00000000..f46492f3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/ForceTouchGestureHandler.d.ts @@ -0,0 +1,44 @@ +import React, { PropsWithChildren } from 'react'; +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare const forceTouchGestureHandlerProps: readonly ["minForce", "maxForce", "feedbackOnActivation"]; +declare class ForceTouchFallback extends React.Component> { + static forceTouchAvailable: boolean; + componentDidMount(): void; + render(): React.ReactNode; +} +export declare type ForceTouchGestureHandlerEventPayload = { + x: number; + y: number; + absoluteX: number; + absoluteY: number; + /** + * The pressure of a touch. + */ + force: number; +}; +export interface ForceTouchGestureConfig { + /** + * + * A minimal pressure that is required before handler can activate. Should be a + * value from range `[0.0, 1.0]`. Default is `0.2`. + */ + minForce?: number; + /** + * A maximal pressure that could be applied for handler. If the pressure is + * greater, handler fails. Should be a value from range `[0.0, 1.0]`. + */ + maxForce?: number; + /** + * Boolean value defining if haptic feedback has to be performed on + * activation. + */ + feedbackOnActivation?: boolean; +} +export interface ForceTouchGestureHandlerProps extends BaseGestureHandlerProps, ForceTouchGestureConfig { +} +export declare type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & { + forceTouchAvailable: boolean; +}; +export declare const forceTouchHandlerName = "ForceTouchGestureHandler"; +export declare const ForceTouchGestureHandler: typeof ForceTouchFallback | React.ComponentType>; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/LongPressGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/LongPressGestureHandler.d.ts new file mode 100644 index 00000000..728ed39a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/LongPressGestureHandler.d.ts @@ -0,0 +1,56 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare const longPressGestureHandlerProps: readonly ["minDurationMs", "maxDist"]; +export declare type LongPressGestureHandlerEventPayload = { + /** + * X coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the view attached to the handler. + */ + x: number; + /** + * Y coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the view attached to the handler. + */ + y: number; + /** + * X coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the window. It is recommended to use `absoluteX` instead of + * `x` in cases when the view attached to the handler can be transformed as an + * effect of the gesture. + */ + absoluteX: number; + /** + * Y coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the window. It is recommended to use `absoluteY` instead of + * `y` in cases when the view attached to the handler can be transformed as an + * effect of the gesture. + */ + absoluteY: number; + /** + * Duration of the long press (time since the start of the event), expressed + * in milliseconds. + */ + duration: number; +}; +export interface LongPressGestureConfig { + /** + * Minimum time, expressed in milliseconds, that a finger must remain pressed on + * the corresponding view. The default value is 500. + */ + minDurationMs?: number; + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel during a long press gesture. If the finger travels + * further than the defined distance and the handler hasn't yet activated, it + * will fail to recognize the gesture. The default value is 10. + */ + maxDist?: number; +} +export interface LongPressGestureHandlerProps extends BaseGestureHandlerProps, LongPressGestureConfig { +} +export declare const longPressHandlerName = "LongPressGestureHandler"; +export declare type LongPressGestureHandler = typeof LongPressGestureHandler; +export declare const LongPressGestureHandler: import("react").ComponentType>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/NativeViewGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/NativeViewGestureHandler.d.ts new file mode 100644 index 00000000..8e99b09d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/NativeViewGestureHandler.d.ts @@ -0,0 +1,28 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare const nativeViewGestureHandlerProps: readonly ["shouldActivateOnStart", "disallowInterruption"]; +export interface NativeViewGestureConfig { + /** + * Android only. + * + * Determines whether the handler should check for an existing touch event on + * instantiation. + */ + shouldActivateOnStart?: boolean; + /** + * When `true`, cancels all other gesture handlers when this + * `NativeViewGestureHandler` receives an `ACTIVE` state event. + */ + disallowInterruption?: boolean; +} +export interface NativeViewGestureHandlerProps extends BaseGestureHandlerProps, NativeViewGestureConfig { +} +export declare type NativeViewGestureHandlerPayload = { + /** + * True if gesture was performed inside of containing view, false otherwise. + */ + pointerInside: boolean; +}; +export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"]; +export declare const nativeViewHandlerName = "NativeViewGestureHandler"; +export declare type NativeViewGestureHandler = typeof NativeViewGestureHandler; +export declare const NativeViewGestureHandler: import("react").ComponentType>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PanGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PanGestureHandler.d.ts new file mode 100644 index 00000000..d017d048 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PanGestureHandler.d.ts @@ -0,0 +1,139 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare const panGestureHandlerProps: readonly ["activeOffsetY", "activeOffsetX", "failOffsetY", "failOffsetX", "minDist", "minVelocity", "minVelocityX", "minVelocityY", "minPointers", "maxPointers", "avgTouches", "enableTrackpadTwoFingerGesture", "activateAfterLongPress"]; +export declare const panGestureHandlerCustomNativeProps: readonly ["activeOffsetYStart", "activeOffsetYEnd", "activeOffsetXStart", "activeOffsetXEnd", "failOffsetYStart", "failOffsetYEnd", "failOffsetXStart", "failOffsetXEnd"]; +export declare type PanGestureHandlerEventPayload = { + /** + * X coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the view + * attached to the handler. Expressed in point units. + */ + x: number; + /** + * Y coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the view + * attached to the handler. Expressed in point units. + */ + y: number; + /** + * X coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the window. + * The value is expressed in point units. It is recommended to use it instead + * of `x` in cases when the original view can be transformed as an effect of + * the gesture. + */ + absoluteX: number; + /** + * Y coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the window. + * The value is expressed in point units. It is recommended to use it instead + * of `y` in cases when the original view can be transformed as an + * effect of the gesture. + */ + absoluteY: number; + /** + * Translation of the pan gesture along X axis accumulated over the time of + * the gesture. The value is expressed in the point units. + */ + translationX: number; + /** + * Translation of the pan gesture along Y axis accumulated over the time of + * the gesture. The value is expressed in the point units. + */ + translationY: number; + /** + * Velocity of the pan gesture along the X axis in the current moment. The + * value is expressed in point units per second. + */ + velocityX: number; + /** + * Velocity of the pan gesture along the Y axis in the current moment. The + * value is expressed in point units per second. + */ + velocityY: number; +}; +interface CommonPanProperties { + /** + * Minimum distance the finger (or multiple finger) need to travel before the + * handler activates. Expressed in points. + */ + minDist?: number; + /** + * Android only. + */ + avgTouches?: boolean; + /** + * Enables two-finger gestures on supported devices, for example iPads with + * trackpads. If not enabled the gesture will require click + drag, with + * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger + * the gesture. + */ + enableTrackpadTwoFingerGesture?: boolean; + /** + * A number of fingers that is required to be placed before handler can + * activate. Should be a higher or equal to 0 integer. + */ + minPointers?: number; + /** + * When the given number of fingers is placed on the screen and handler hasn't + * yet activated it will fail recognizing the gesture. Should be a higher or + * equal to 0 integer. + */ + maxPointers?: number; + minVelocity?: number; + minVelocityX?: number; + minVelocityY?: number; + activateAfterLongPress?: number; +} +export interface PanGestureConfig extends CommonPanProperties { + activeOffsetYStart?: number; + activeOffsetYEnd?: number; + activeOffsetXStart?: number; + activeOffsetXEnd?: number; + failOffsetYStart?: number; + failOffsetYEnd?: number; + failOffsetXStart?: number; + failOffsetXEnd?: number; +} +export interface PanGestureHandlerProps extends BaseGestureHandlerProps, CommonPanProperties { + /** + * Range along X axis (in points) where fingers travels without activation of + * handler. Moving outside of this range implies activation of handler. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + activeOffsetY?: number | number[]; + /** + * Range along X axis (in points) where fingers travels without activation of + * handler. Moving outside of this range implies activation of handler. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + activeOffsetX?: number | number[]; + /** + * When the finger moves outside this range (in points) along Y axis and + * handler hasn't yet activated it will fail recognizing the gesture. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + failOffsetY?: number | number[]; + /** + * When the finger moves outside this range (in points) along X axis and + * handler hasn't yet activated it will fail recognizing the gesture. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + failOffsetX?: number | number[]; +} +export declare const panHandlerName = "PanGestureHandler"; +export declare type PanGestureHandler = typeof PanGestureHandler; +export declare const PanGestureHandler: import("react").ComponentType>; +export declare function managePanProps(props: PanGestureHandlerProps): PanGestureHandlerProps & Partial>; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PinchGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PinchGestureHandler.d.ts new file mode 100644 index 00000000..834b034b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PinchGestureHandler.d.ts @@ -0,0 +1,29 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare type PinchGestureHandlerEventPayload = { + /** + * The scale factor relative to the points of the two touches in screen + * coordinates. + */ + scale: number; + /** + * Position expressed in points along X axis of center anchor point of + * gesture. + */ + focalX: number; + /** + * Position expressed in points along Y axis of center anchor point of + * gesture. + */ + focalY: number; + /** + * + * Velocity of the pan gesture the current moment. The value is expressed in + * point units per second. + */ + velocity: number; +}; +export interface PinchGestureHandlerProps extends BaseGestureHandlerProps { +} +export declare const pinchHandlerName = "PinchGestureHandler"; +export declare type PinchGestureHandler = typeof PinchGestureHandler; +export declare const PinchGestureHandler: import("react").ComponentType>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.d.ts new file mode 100644 index 00000000..ba55f25f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.d.ts @@ -0,0 +1 @@ +export { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.web.d.ts new file mode 100644 index 00000000..0f611a22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/PressabilityDebugView.web.d.ts @@ -0,0 +1 @@ +export declare function PressabilityDebugView(): null; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/RotationGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/RotationGestureHandler.d.ts new file mode 100644 index 00000000..a2598f58 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/RotationGestureHandler.d.ts @@ -0,0 +1,29 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare type RotationGestureHandlerEventPayload = { + /** + * Amount rotated, expressed in radians, from the gesture's focal point + * (anchor). + */ + rotation: number; + /** + * X coordinate, expressed in points, of the gesture's central focal point + * (anchor). + */ + anchorX: number; + /** + * Y coordinate, expressed in points, of the gesture's central focal point + * (anchor). + */ + anchorY: number; + /** + * + * Instantaneous velocity, expressed in point units per second, of the + * gesture. + */ + velocity: number; +}; +export interface RotationGestureHandlerProps extends BaseGestureHandlerProps { +} +export declare const rotationHandlerName = "RotationGestureHandler"; +export declare type RotationGestureHandler = typeof RotationGestureHandler; +export declare const RotationGestureHandler: import("react").ComponentType>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/TapGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/TapGestureHandler.d.ts new file mode 100644 index 00000000..4021155d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/TapGestureHandler.d.ts @@ -0,0 +1,57 @@ +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +export declare const tapGestureHandlerProps: readonly ["maxDurationMs", "maxDelayMs", "numberOfTaps", "maxDeltaX", "maxDeltaY", "maxDist", "minPointers"]; +export declare type TapGestureHandlerEventPayload = { + x: number; + y: number; + absoluteX: number; + absoluteY: number; +}; +export interface TapGestureConfig { + /** + * Minimum number of pointers (fingers) required to be placed before the + * handler activates. Should be a positive integer. + * The default value is 1. + */ + minPointers?: number; + /** + * Maximum time, expressed in milliseconds, that defines how fast a finger + * must be released after a touch. The default value is 500. + */ + maxDurationMs?: number; + /** + * Maximum time, expressed in milliseconds, that can pass before the next tap + * if many taps are required. The default value is 500. + */ + maxDelayMs?: number; + /** + * Number of tap gestures required to activate the handler. The default value + * is 1. + */ + numberOfTaps?: number; + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel along the X axis during a tap gesture. If the finger + * travels further than the defined distance along the X axis and the handler + * hasn't yet activated, it will fail to recognize the gesture. + */ + maxDeltaX?: number; + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel along the Y axis during a tap gesture. If the finger + * travels further than the defined distance along the Y axis and the handler + * hasn't yet activated, it will fail to recognize the gesture. + */ + maxDeltaY?: number; + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel during a tap gesture. If the finger travels further than + * the defined distance and the handler hasn't yet + * activated, it will fail to recognize the gesture. + */ + maxDist?: number; +} +export interface TapGestureHandlerProps extends BaseGestureHandlerProps, TapGestureConfig { +} +export declare const tapHandlerName = "TapGestureHandler"; +export declare type TapGestureHandler = typeof TapGestureHandler; +export declare const TapGestureHandler: import("react").ComponentType>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createHandler.d.ts new file mode 100644 index 00000000..587824ee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createHandler.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { BaseGestureHandlerProps } from './gestureHandlerCommon'; +declare type CreateHandlerArgs> = Readonly<{ + name: string; + allowedProps: Readonly[]>; + config: Readonly>; + transformProps?: (props: HandlerPropsT) => HandlerPropsT; + customNativeProps?: Readonly; +}>; +export default function createHandler, U extends Record>({ name, allowedProps, config, transformProps, customNativeProps, }: CreateHandlerArgs): React.ComponentType>; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createNativeWrapper.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createNativeWrapper.d.ts new file mode 100644 index 00000000..2d1dbd89 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/createNativeWrapper.d.ts @@ -0,0 +1,3 @@ +import * as React from 'react'; +import { NativeViewGestureHandlerProps } from './NativeViewGestureHandler'; +export default function createNativeWrapper

(Component: React.ComponentType

, config?: Readonly): React.ForwardRefExoticComponent & React.RefAttributes>>; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerCommon.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerCommon.d.ts new file mode 100644 index 00000000..8c7e24c8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerCommon.d.ts @@ -0,0 +1,65 @@ +import * as React from 'react'; +import { State } from '../State'; +import { TouchEventType } from '../TouchEventType'; +import { ValueOf } from '../typeUtils'; +export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"]; +export declare const baseGestureHandlerWithMonitorProps: string[]; +export interface GestureEventPayload { + handlerTag: number; + numberOfPointers: number; + state: ValueOf; +} +export interface HandlerStateChangeEventPayload extends GestureEventPayload { + oldState: ValueOf; +} +export declare type HitSlop = number | Partial> | Record<'width' | 'left', number> | Record<'width' | 'right', number> | Record<'height' | 'top', number> | Record<'height' | 'bottom', number>; +export declare type UserSelect = 'none' | 'auto' | 'text'; +export interface GestureEvent> { + nativeEvent: Readonly; +} +export interface HandlerStateChangeEvent> { + nativeEvent: Readonly; +} +export declare type TouchData = { + id: number; + x: number; + y: number; + absoluteX: number; + absoluteY: number; +}; +export declare type GestureTouchEvent = { + handlerTag: number; + numberOfTouches: number; + state: ValueOf; + eventType: TouchEventType; + allTouches: TouchData[]; + changedTouches: TouchData[]; +}; +export declare type GestureUpdateEvent> = GestureEventPayload & GestureEventPayloadT; +export declare type GestureStateChangeEvent> = HandlerStateChangeEventPayload & GestureStateChangeEventPayloadT; +export declare type CommonGestureConfig = { + enabled?: boolean; + shouldCancelWhenOutside?: boolean; + hitSlop?: HitSlop; + userSelect?: UserSelect; +}; +export declare type BaseGestureHandlerProps = Record> = CommonGestureConfig & { + id?: string; + waitFor?: React.Ref | React.Ref[]; + simultaneousHandlers?: React.Ref | React.Ref[]; + testID?: string; + cancelsTouchesInView?: boolean; + onBegan?: (event: HandlerStateChangeEvent) => void; + onFailed?: (event: HandlerStateChangeEvent) => void; + onCancelled?: (event: HandlerStateChangeEvent) => void; + onActivated?: (event: HandlerStateChangeEvent) => void; + onEnded?: (event: HandlerStateChangeEvent) => void; + onGestureEvent?: (event: GestureEvent) => void; + onHandlerStateChange?: (event: HandlerStateChangeEvent) => void; + children?: React.ReactNode; +}; +export declare function filterConfig(props: Record, validProps: string[], defaults?: Record): { + [x: string]: unknown; +}; +export declare function findNodeHandle(node: null | number | React.Component | React.ComponentClass): null | number | React.Component | React.ComponentClass; +export declare function scheduleFlushOperations(): void; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts new file mode 100644 index 00000000..0645d0ee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts @@ -0,0 +1,42 @@ +import { BaseButtonProps, BorderlessButtonProps, RawButtonProps, RectButtonProps } from '../components/GestureButtons'; +import { GestureEvent, GestureEventPayload, HandlerStateChangeEvent, HandlerStateChangeEventPayload } from './gestureHandlerCommon'; +import { FlingGestureHandlerEventPayload, FlingGestureHandlerProps } from './FlingGestureHandler'; +import { ForceTouchGestureHandlerEventPayload, ForceTouchGestureHandlerProps } from './ForceTouchGestureHandler'; +import { LongPressGestureHandlerEventPayload, LongPressGestureHandlerProps } from './LongPressGestureHandler'; +import { PanGestureHandlerEventPayload, PanGestureHandlerProps } from './PanGestureHandler'; +import { PinchGestureHandlerEventPayload, PinchGestureHandlerProps } from './PinchGestureHandler'; +import { RotationGestureHandlerEventPayload, RotationGestureHandlerProps } from './RotationGestureHandler'; +import { TapGestureHandlerEventPayload, TapGestureHandlerProps } from './TapGestureHandler'; +import { NativeViewGestureHandlerPayload, NativeViewGestureHandlerProps } from './NativeViewGestureHandler'; +export declare type GestureHandlerGestureEventNativeEvent = GestureEventPayload; +export declare type GestureHandlerStateChangeNativeEvent = HandlerStateChangeEventPayload; +export declare type GestureHandlerGestureEvent = GestureEvent; +export declare type GestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type NativeViewGestureHandlerGestureEvent = GestureEvent; +export declare type NativeViewGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type TapGestureHandlerGestureEvent = GestureEvent; +export declare type TapGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type ForceTouchGestureHandlerGestureEvent = GestureEvent; +export declare type ForceTouchGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type LongPressGestureHandlerGestureEvent = GestureEvent; +export declare type LongPressGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type PanGestureHandlerGestureEvent = GestureEvent; +export declare type PanGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type PinchGestureHandlerGestureEvent = GestureEvent; +export declare type PinchGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type RotationGestureHandlerGestureEvent = GestureEvent; +export declare type RotationGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type FlingGestureHandlerGestureEvent = GestureEvent; +export declare type FlingGestureHandlerStateChangeEvent = HandlerStateChangeEvent; +export declare type NativeViewGestureHandlerProperties = NativeViewGestureHandlerProps; +export declare type TapGestureHandlerProperties = TapGestureHandlerProps; +export declare type LongPressGestureHandlerProperties = LongPressGestureHandlerProps; +export declare type PanGestureHandlerProperties = PanGestureHandlerProps; +export declare type PinchGestureHandlerProperties = PinchGestureHandlerProps; +export declare type RotationGestureHandlerProperties = RotationGestureHandlerProps; +export declare type FlingGestureHandlerProperties = FlingGestureHandlerProps; +export declare type ForceTouchGestureHandlerProperties = ForceTouchGestureHandlerProps; +export declare type RawButtonProperties = RawButtonProps; +export declare type BaseButtonProperties = BaseButtonProps; +export declare type RectButtonProperties = RectButtonProps; +export declare type BorderlessButtonProperties = BorderlessButtonProps; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/GestureDetector.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/GestureDetector.d.ts new file mode 100644 index 00000000..41d4d5bb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/GestureDetector.d.ts @@ -0,0 +1,19 @@ +import React from 'react'; +import { GestureType, HandlerCallbacks } from './gesture'; +import { SharedValue } from './reanimatedWrapper'; +import { UserSelect } from '../gestureHandlerCommon'; +import { ComposedGesture } from './gestureComposition'; +export declare type GestureConfigReference = { + config: GestureType[]; + animatedEventHandler: unknown; + animatedHandlers: SharedValue>[] | null> | null; + firstExecution: boolean; + useReanimatedHook: boolean; +}; +interface GestureDetectorProps { + gesture: ComposedGesture | GestureType; + userSelect?: UserSelect; + children?: React.ReactNode; +} +export declare const GestureDetector: (props: GestureDetectorProps) => JSX.Element; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/eventReceiver.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/eventReceiver.d.ts new file mode 100644 index 00000000..db324036 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/eventReceiver.d.ts @@ -0,0 +1,4 @@ +import { GestureTouchEvent, GestureUpdateEvent, GestureStateChangeEvent } from '../gestureHandlerCommon'; +export declare function onGestureHandlerEvent(event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent): void; +export declare function startListening(): void; +export declare function stopListening(): void; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/flingGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/flingGesture.d.ts new file mode 100644 index 00000000..4c8df93e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/flingGesture.d.ts @@ -0,0 +1,9 @@ +import { BaseGesture, BaseGestureConfig } from './gesture'; +import { FlingGestureConfig, FlingGestureHandlerEventPayload } from '../FlingGestureHandler'; +export declare class FlingGesture extends BaseGesture { + config: BaseGestureConfig & FlingGestureConfig; + constructor(); + numberOfPointers(pointers: number): this; + direction(direction: number): this; +} +export declare type FlingGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/forceTouchGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/forceTouchGesture.d.ts new file mode 100644 index 00000000..27691674 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/forceTouchGesture.d.ts @@ -0,0 +1,15 @@ +import { BaseGestureConfig, ContinousBaseGesture } from './gesture'; +import { ForceTouchGestureConfig, ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +export declare type ForceTouchGestureChangeEventPayload = { + forceChange: number; +}; +export declare class ForceTouchGesture extends ContinousBaseGesture { + config: BaseGestureConfig & ForceTouchGestureConfig; + constructor(); + minForce(force: number): this; + maxForce(force: number): this; + feedbackOnActivation(value: boolean): this; + onChange(callback: (event: GestureUpdateEvent>) => void): this; +} +export declare type ForceTouchGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gesture.d.ts new file mode 100644 index 00000000..24a0f311 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gesture.d.ts @@ -0,0 +1,107 @@ +import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler'; +import { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler'; +import { HitSlop, CommonGestureConfig, GestureTouchEvent, GestureStateChangeEvent, GestureUpdateEvent } from '../gestureHandlerCommon'; +import { GestureStateManagerType } from './gestureStateManager'; +import { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler'; +import { PanGestureHandlerEventPayload } from '../PanGestureHandler'; +import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler'; +import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler'; +import { TapGestureHandlerEventPayload } from '../TapGestureHandler'; +import { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler'; +export declare type GestureType = BaseGesture> | BaseGesture> | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture; +export declare type GestureRef = number | GestureType | React.RefObject | React.RefObject; +export interface BaseGestureConfig extends CommonGestureConfig, Record { + ref?: React.MutableRefObject; + requireToFail?: GestureRef[]; + simultaneousWith?: GestureRef[]; + needsPointerData?: boolean; + manualActivation?: boolean; + runOnJS?: boolean; + testId?: string; + cancelsTouchesInView?: boolean; +} +declare type TouchEventHandlerType = (event: GestureTouchEvent, stateManager: GestureStateManagerType) => void; +export declare type HandlerCallbacks> = { + gestureId: number; + handlerTag: number; + onBegin?: (event: GestureStateChangeEvent) => void; + onStart?: (event: GestureStateChangeEvent) => void; + onEnd?: (event: GestureStateChangeEvent, success: boolean) => void; + onFinalize?: (event: GestureStateChangeEvent, success: boolean) => void; + onUpdate?: (event: GestureUpdateEvent) => void; + onChange?: (event: any) => void; + onTouchesDown?: TouchEventHandlerType; + onTouchesMove?: TouchEventHandlerType; + onTouchesUp?: TouchEventHandlerType; + onTouchesCancelled?: TouchEventHandlerType; + changeEventCalculator?: (current: GestureUpdateEvent>, previous?: GestureUpdateEvent>) => GestureUpdateEvent>; + isWorklet: boolean[]; +}; +export declare const CALLBACK_TYPE: { + readonly UNDEFINED: 0; + readonly BEGAN: 1; + readonly START: 2; + readonly UPDATE: 3; + readonly CHANGE: 4; + readonly END: 5; + readonly FINALIZE: 6; + readonly TOUCHES_DOWN: 7; + readonly TOUCHES_MOVE: 8; + readonly TOUCHES_UP: 9; + readonly TOUCHES_CANCELLED: 10; +}; +export declare type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE]; +export declare abstract class Gesture { + /** + * Return array of gestures, providing the same interface for creating and updating + * handlers, no matter which object was used to create gesture instance. + */ + abstract toGestureArray(): GestureType[]; + /** + * Assign handlerTag to the gesture instance and set ref.current (if a ref is set) + */ + abstract initialize(): void; + /** + * Make sure that values of properties defining relations are arrays. Do any necessary + * preprocessing required to configure relations between handlers. Called just before + * updating the handler on the native side. + */ + abstract prepare(): void; +} +export declare abstract class BaseGesture> extends Gesture { + private gestureId; + handlerTag: number; + handlerName: string; + config: BaseGestureConfig; + handlers: HandlerCallbacks; + constructor(); + private addDependency; + withRef(ref: React.MutableRefObject): this; + protected isWorklet(callback: Function): boolean; + onBegin(callback: (event: GestureStateChangeEvent) => void): this; + onStart(callback: (event: GestureStateChangeEvent) => void): this; + onEnd(callback: (event: GestureStateChangeEvent, success: boolean) => void): this; + onFinalize(callback: (event: GestureStateChangeEvent, success: boolean) => void): this; + onTouchesDown(callback: TouchEventHandlerType): this; + onTouchesMove(callback: TouchEventHandlerType): this; + onTouchesUp(callback: TouchEventHandlerType): this; + onTouchesCancelled(callback: TouchEventHandlerType): this; + enabled(enabled: boolean): this; + shouldCancelWhenOutside(value: boolean): this; + hitSlop(hitSlop: HitSlop): this; + runOnJS(runOnJS: boolean): this; + simultaneousWithExternalGesture(...gestures: Exclude[]): this; + requireExternalGestureToFail(...gestures: Exclude[]): this; + withTestId(id: string): this; + cancelsTouchesInView(value: boolean): this; + initialize(): void; + toGestureArray(): GestureType[]; + prepare(): void; + get shouldUseReanimated(): boolean; +} +export declare abstract class ContinousBaseGesture, EventChangePayloadT extends Record> extends BaseGesture { + onUpdate(callback: (event: GestureUpdateEvent) => void): this; + onChange(callback: (event: GestureUpdateEvent) => void): this; + manualActivation(manualActivation: boolean): this; +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureComposition.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureComposition.d.ts new file mode 100644 index 00000000..cd9da9ca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureComposition.d.ts @@ -0,0 +1,21 @@ +import { Gesture, GestureType } from './gesture'; +export declare class ComposedGesture extends Gesture { + protected gestures: Gesture[]; + protected simultaneousGestures: GestureType[]; + protected requireGesturesToFail: GestureType[]; + constructor(...gestures: Gesture[]); + protected prepareSingleGesture(gesture: Gesture, simultaneousGestures: GestureType[], requireGesturesToFail: GestureType[]): void; + prepare(): void; + initialize(): void; + toGestureArray(): GestureType[]; +} +export declare class SimultaneousGesture extends ComposedGesture { + prepare(): void; +} +export declare class ExclusiveGesture extends ComposedGesture { + prepare(): void; +} +export declare type ComposedGestureType = InstanceType; +export declare type RaceGestureType = ComposedGestureType; +export declare type SimultaneousGestureType = InstanceType; +export declare type ExclusiveGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureObjects.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureObjects.d.ts new file mode 100644 index 00000000..73b3074f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureObjects.d.ts @@ -0,0 +1,39 @@ +import { FlingGesture } from './flingGesture'; +import { ForceTouchGesture } from './forceTouchGesture'; +import { Gesture } from './gesture'; +import { ComposedGesture, ExclusiveGesture, SimultaneousGesture } from './gestureComposition'; +import { LongPressGesture } from './longPressGesture'; +import { PanGesture } from './panGesture'; +import { PinchGesture } from './pinchGesture'; +import { RotationGesture } from './rotationGesture'; +import { TapGesture } from './tapGesture'; +import { NativeGesture } from './nativeGesture'; +import { ManualGesture } from './manualGesture'; +export declare const GestureObjects: { + Tap: () => TapGesture; + Pan: () => PanGesture; + Pinch: () => PinchGesture; + Rotation: () => RotationGesture; + Fling: () => FlingGesture; + LongPress: () => LongPressGesture; + ForceTouch: () => ForceTouchGesture; + Native: () => NativeGesture; + Manual: () => ManualGesture; + /** + * Builds a composed gesture consisting of gestures provided as parameters. + * The first one that becomes active cancels the rest of gestures. + */ + Race: (...gestures: Gesture[]) => ComposedGesture; + /** + * Builds a composed gesture that allows all base gestures to run simultaneously. + */ + Simultaneous(...gestures: Gesture[]): SimultaneousGesture; + /** + * Builds a composed gesture where only one of the provided gestures can become active. + * Priority is decided through the order of gestures: the first one has higher priority + * than the second one, second one has higher priority than the third one, and so on. + * For example, to make a gesture that recognizes both single and double tap you need + * to call Exclusive(doubleTap, singleTap). + */ + Exclusive(...gestures: Gesture[]): ExclusiveGesture; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.d.ts new file mode 100644 index 00000000..d2cbe651 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.d.ts @@ -0,0 +1,9 @@ +export interface GestureStateManagerType { + begin: () => void; + activate: () => void; + fail: () => void; + end: () => void; +} +export declare const GestureStateManager: { + create(handlerTag: number): GestureStateManagerType; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts new file mode 100644 index 00000000..596ba730 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts @@ -0,0 +1,4 @@ +import { GestureStateManagerType } from './gestureStateManager'; +export declare const GestureStateManager: { + create(handlerTag: number): GestureStateManagerType; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/longPressGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/longPressGesture.d.ts new file mode 100644 index 00000000..0d45ed99 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/longPressGesture.d.ts @@ -0,0 +1,9 @@ +import { BaseGesture, BaseGestureConfig } from './gesture'; +import { LongPressGestureConfig, LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler'; +export declare class LongPressGesture extends BaseGesture { + config: BaseGestureConfig & LongPressGestureConfig; + constructor(); + minDuration(duration: number): this; + maxDistance(distance: number): this; +} +export declare type LongPressGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/manualGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/manualGesture.d.ts new file mode 100644 index 00000000..c2f3e55f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/manualGesture.d.ts @@ -0,0 +1,7 @@ +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +import { ContinousBaseGesture } from './gesture'; +export declare class ManualGesture extends ContinousBaseGesture, Record> { + constructor(); + onChange(callback: (event: GestureUpdateEvent>) => void): this; +} +export declare type ManualGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/nativeGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/nativeGesture.d.ts new file mode 100644 index 00000000..e83fdbee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/nativeGesture.d.ts @@ -0,0 +1,9 @@ +import { BaseGestureConfig, BaseGesture } from './gesture'; +import { NativeViewGestureConfig, NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler'; +export declare class NativeGesture extends BaseGesture { + config: BaseGestureConfig & NativeViewGestureConfig; + constructor(); + shouldActivateOnStart(value: boolean): this; + disallowInterruption(value: boolean): this; +} +export declare type NativeGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/panGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/panGesture.d.ts new file mode 100644 index 00000000..91ea7477 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/panGesture.d.ts @@ -0,0 +1,26 @@ +import { BaseGestureConfig, ContinousBaseGesture } from './gesture'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +import { PanGestureConfig, PanGestureHandlerEventPayload } from '../PanGestureHandler'; +export declare type PanGestureChangeEventPayload = { + changeX: number; + changeY: number; +}; +export declare class PanGesture extends ContinousBaseGesture { + config: BaseGestureConfig & PanGestureConfig; + constructor(); + activeOffsetY(offset: number | number[]): this; + activeOffsetX(offset: number | number[]): this; + failOffsetY(offset: number | number[]): this; + failOffsetX(offset: number | number[]): this; + minPointers(minPointers: number): this; + maxPointers(maxPointers: number): this; + minDistance(distance: number): this; + minVelocity(velocity: number): this; + minVelocityX(velocity: number): this; + minVelocityY(velocity: number): this; + averageTouches(value: boolean): this; + enableTrackpadTwoFingerGesture(value: boolean): this; + activateAfterLongPress(duration: number): this; + onChange(callback: (event: GestureUpdateEvent) => void): this; +} +export declare type PanGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/pinchGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/pinchGesture.d.ts new file mode 100644 index 00000000..b31e7a22 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/pinchGesture.d.ts @@ -0,0 +1,11 @@ +import { ContinousBaseGesture } from './gesture'; +import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +export declare type PinchGestureChangeEventPayload = { + scaleChange: number; +}; +export declare class PinchGesture extends ContinousBaseGesture { + constructor(); + onChange(callback: (event: GestureUpdateEvent) => void): this; +} +export declare type PinchGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts new file mode 100644 index 00000000..3b0a1d80 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts @@ -0,0 +1,14 @@ +import { ComponentClass } from 'react'; +import { GestureUpdateEvent, GestureStateChangeEvent } from '../gestureHandlerCommon'; +export interface SharedValue { + value: T; +} +declare let Reanimated: { + default: { + createAnimatedComponent

(component: ComponentClass

, options?: unknown): ComponentClass

; + }; + useEvent: (callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void, events: string[], rebuild: boolean) => unknown; + useSharedValue: (value: T) => SharedValue; + setGestureState: (handlerTag: number, newState: number) => void; +}; +export { Reanimated }; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/rotationGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/rotationGesture.d.ts new file mode 100644 index 00000000..abaf6d8d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/rotationGesture.d.ts @@ -0,0 +1,12 @@ +import { ContinousBaseGesture } from './gesture'; +import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +declare type RotationGestureChangeEventPayload = { + rotationChange: number; +}; +export declare class RotationGesture extends ContinousBaseGesture { + constructor(); + onChange(callback: (event: GestureUpdateEvent) => void): this; +} +export declare type RotationGestureType = InstanceType; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/tapGesture.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/tapGesture.d.ts new file mode 100644 index 00000000..db643ccc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/gestures/tapGesture.d.ts @@ -0,0 +1,14 @@ +import { BaseGestureConfig, BaseGesture } from './gesture'; +import { TapGestureConfig, TapGestureHandlerEventPayload } from '../TapGestureHandler'; +export declare class TapGesture extends BaseGesture { + config: BaseGestureConfig & TapGestureConfig; + constructor(); + minPointers(minPointers: number): this; + numberOfTaps(count: number): this; + maxDistance(maxDist: number): this; + maxDuration(duration: number): this; + maxDelay(delay: number): this; + maxDeltaX(delta: number): this; + maxDeltaY(delta: number): this; +} +export declare type TapGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/handlersRegistry.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/handlersRegistry.d.ts new file mode 100644 index 00000000..8b1a5c40 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/handlers/handlersRegistry.d.ts @@ -0,0 +1,14 @@ +import { GestureType } from './gestures/gesture'; +import { GestureEvent, HandlerStateChangeEvent } from './gestureHandlerCommon'; +export declare const handlerIDToTag: Record; +export declare function getNextHandlerTag(): number; +export declare function registerHandler(handlerTag: number, handler: GestureType, testID?: string): void; +export declare function registerOldGestureHandler(handlerTag: number, handler: GestureHandlerCallbacks): void; +export declare function unregisterHandler(handlerTag: number, testID?: string): void; +export declare function findHandler(handlerTag: number): GestureType | undefined; +export declare function findOldGestureHandler(handlerTag: number): GestureHandlerCallbacks | undefined; +export declare function findHandlerByTestID(testID: string): import("./gestures/gesture").BaseGesture> | import("./gestures/gesture").BaseGesture> | import("./gestures/gesture").BaseGesture | import("./gestures/gesture").BaseGesture | import("./gestures/gesture").BaseGesture | import("./gestures/gesture").BaseGesture | import("./gestures/gesture").BaseGesture | import("./gestures/gesture").BaseGesture | import("./gestures/gesture").BaseGesture | null; +export interface GestureHandlerCallbacks { + onGestureEvent: (event: GestureEvent) => void; + onGestureStateChange: (event: HandlerStateChangeEvent) => void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/index.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/index.d.ts new file mode 100644 index 00000000..be3fca7a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/index.d.ts @@ -0,0 +1,48 @@ +export { Directions } from './Directions'; +export { State } from './State'; +export { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC'; +export { default as GestureHandlerRootView } from './GestureHandlerRootView'; +export type { GestureEvent, HandlerStateChangeEvent, GestureEventPayload, HandlerStateChangeEventPayload, GestureTouchEvent, TouchData, GestureUpdateEvent, GestureStateChangeEvent, } from './handlers/gestureHandlerCommon'; +export type { GestureType } from './handlers/gestures/gesture'; +export type { TapGestureHandlerEventPayload, TapGestureHandlerProps, } from './handlers/TapGestureHandler'; +export type { ForceTouchGestureHandlerEventPayload, ForceTouchGestureHandlerProps, } from './handlers/ForceTouchGestureHandler'; +export type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture'; +export type { LongPressGestureHandlerEventPayload, LongPressGestureHandlerProps, } from './handlers/LongPressGestureHandler'; +export type { PanGestureHandlerEventPayload, PanGestureHandlerProps, } from './handlers/PanGestureHandler'; +export type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture'; +export type { PinchGestureHandlerEventPayload, PinchGestureHandlerProps, } from './handlers/PinchGestureHandler'; +export type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture'; +export type { RotationGestureHandlerEventPayload, RotationGestureHandlerProps, } from './handlers/RotationGestureHandler'; +export type { FlingGestureHandlerEventPayload, FlingGestureHandlerProps, } from './handlers/FlingGestureHandler'; +export { TapGestureHandler } from './handlers/TapGestureHandler'; +export { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler'; +export { LongPressGestureHandler } from './handlers/LongPressGestureHandler'; +export { PanGestureHandler } from './handlers/PanGestureHandler'; +export { PinchGestureHandler } from './handlers/PinchGestureHandler'; +export { RotationGestureHandler } from './handlers/RotationGestureHandler'; +export { FlingGestureHandler } from './handlers/FlingGestureHandler'; +export { default as createNativeWrapper } from './handlers/createNativeWrapper'; +export type { NativeViewGestureHandlerPayload, NativeViewGestureHandlerProps, } from './handlers/NativeViewGestureHandler'; +export { GestureDetector } from './handlers/gestures/GestureDetector'; +export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects'; +export type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture'; +export type { PanGestureType as PanGesture } from './handlers/gestures/panGesture'; +export type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture'; +export type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture'; +export type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture'; +export type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture'; +export type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture'; +export type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture'; +export type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture'; +export type { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition'; +export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager'; +export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler'; +export type { RawButtonProps, BaseButtonProps, RectButtonProps, BorderlessButtonProps, } from './components/GestureButtons'; +export { RawButton, BaseButton, RectButton, BorderlessButton, } from './components/GestureButtons'; +export { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, } from './components/touchables'; +export { ScrollView, Switch, TextInput, DrawerLayoutAndroid, FlatList, RefreshControl, } from './components/GestureComponents'; +export type { GestureHandlerGestureEvent, GestureHandlerStateChangeEvent, GestureHandlerGestureEventNativeEvent, GestureHandlerStateChangeNativeEvent, NativeViewGestureHandlerGestureEvent, NativeViewGestureHandlerStateChangeEvent, TapGestureHandlerGestureEvent, TapGestureHandlerStateChangeEvent, ForceTouchGestureHandlerGestureEvent, ForceTouchGestureHandlerStateChangeEvent, LongPressGestureHandlerGestureEvent, LongPressGestureHandlerStateChangeEvent, PanGestureHandlerGestureEvent, PanGestureHandlerStateChangeEvent, PinchGestureHandlerGestureEvent, PinchGestureHandlerStateChangeEvent, RotationGestureHandlerGestureEvent, RotationGestureHandlerStateChangeEvent, FlingGestureHandlerGestureEvent, FlingGestureHandlerStateChangeEvent, NativeViewGestureHandlerProperties, TapGestureHandlerProperties, LongPressGestureHandlerProperties, PanGestureHandlerProperties, PinchGestureHandlerProperties, RotationGestureHandlerProperties, FlingGestureHandlerProperties, ForceTouchGestureHandlerProperties, RawButtonProperties, BaseButtonProperties, RectButtonProperties, BorderlessButtonProperties, } from './handlers/gestureHandlerTypesCompat'; +export { default as Swipeable } from './components/Swipeable'; +export type { DrawerLayoutProps, DrawerPosition, DrawerState, DrawerType, DrawerLockMode, DrawerKeyboardDismissMode, } from './components/DrawerLayout'; +export { default as DrawerLayout } from './components/DrawerLayout'; +export { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/init.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/init.d.ts new file mode 100644 index 00000000..79967186 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/init.d.ts @@ -0,0 +1,2 @@ +export declare function initialize(): void; +export declare function maybeInitializeFabric(): void; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/index.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/index.d.ts new file mode 100644 index 00000000..9e92b72d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/index.d.ts @@ -0,0 +1 @@ +export { getByGestureTestId, fireGestureHandler } from './jestUtils'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/jestUtils.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/jestUtils.d.ts new file mode 100644 index 00000000..271a4db1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/jestUtils/jestUtils.d.ts @@ -0,0 +1,28 @@ +import { ReactTestInstance } from 'react-test-renderer'; +import { FlingGestureHandler } from '../handlers/FlingGestureHandler'; +import { ForceTouchGestureHandler, ForceTouchGestureHandlerEventPayload } from '../handlers/ForceTouchGestureHandler'; +import { BaseGestureHandlerProps, GestureEvent, HandlerStateChangeEvent } from '../handlers/gestureHandlerCommon'; +import { FlingGesture } from '../handlers/gestures/flingGesture'; +import { ForceTouchGesture } from '../handlers/gestures/forceTouchGesture'; +import { BaseGesture, GestureType } from '../handlers/gestures/gesture'; +import { LongPressGesture } from '../handlers/gestures/longPressGesture'; +import { NativeGesture } from '../handlers/gestures/nativeGesture'; +import { PanGesture } from '../handlers/gestures/panGesture'; +import { PinchGesture } from '../handlers/gestures/pinchGesture'; +import { RotationGesture } from '../handlers/gestures/rotationGesture'; +import { TapGesture } from '../handlers/gestures/tapGesture'; +import { LongPressGestureHandler, LongPressGestureHandlerEventPayload } from '../handlers/LongPressGestureHandler'; +import { NativeViewGestureHandler, NativeViewGestureHandlerPayload } from '../handlers/NativeViewGestureHandler'; +import { PanGestureHandler, PanGestureHandlerEventPayload } from '../handlers/PanGestureHandler'; +import { PinchGestureHandler, PinchGestureHandlerEventPayload } from '../handlers/PinchGestureHandler'; +import { RotationGestureHandler, RotationGestureHandlerEventPayload } from '../handlers/RotationGestureHandler'; +import { TapGestureHandler, TapGestureHandlerEventPayload } from '../handlers/TapGestureHandler'; +declare type GestureHandlerTestEvent = Record> = (GestureEvent | HandlerStateChangeEvent)['nativeEvent']; +declare type AllGestures = TapGesture | PanGesture | LongPressGesture | RotationGesture | PinchGesture | FlingGesture | ForceTouchGesture | NativeGesture; +declare type AllHandlers = TapGestureHandler | PanGestureHandler | LongPressGestureHandler | RotationGestureHandler | PinchGestureHandler | FlingGestureHandler | ForceTouchGestureHandler | NativeViewGestureHandler; +declare type ClassComponentConstructor

= new (props: P) => React.Component; +declare type ExtractPayloadFromProps = T extends BaseGestureHandlerProps ? TPayload : never; +declare type ExtractConfig = T extends BaseGesture ? TGesturePayload : T extends ClassComponentConstructor ? ExtractPayloadFromProps : Record; +export declare function fireGestureHandler(componentOrGesture: ReactTestInstance | GestureType, eventList?: Partial>>[]): void; +export declare function getByGestureTestId(testID: string): BaseGesture> | BaseGesture> | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture | BaseGesture; +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/mocks.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/mocks.d.ts new file mode 100644 index 00000000..bc4bdb96 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/mocks.d.ts @@ -0,0 +1,44 @@ +import { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, ScrollView, FlatList, Switch, TextInput, DrawerLayoutAndroid, View } from 'react-native'; +declare const _default: { + readonly TouchableHighlight: typeof TouchableHighlight; + readonly TouchableNativeFeedback: typeof TouchableNativeFeedback; + readonly TouchableOpacity: typeof TouchableOpacity; + readonly TouchableWithoutFeedback: typeof TouchableWithoutFeedback; + readonly ScrollView: typeof ScrollView; + readonly FlatList: typeof FlatList; + readonly Switch: typeof Switch; + readonly TextInput: typeof TextInput; + readonly DrawerLayoutAndroid: typeof DrawerLayoutAndroid; + readonly NativeViewGestureHandler: typeof View; + readonly TapGestureHandler: typeof View; + readonly ForceTouchGestureHandler: typeof View; + readonly LongPressGestureHandler: typeof View; + readonly PinchGestureHandler: typeof View; + readonly RotationGestureHandler: typeof View; + readonly FlingGestureHandler: typeof View; + readonly RawButton: typeof TouchableNativeFeedback; + readonly BaseButton: typeof TouchableNativeFeedback; + readonly RectButton: typeof TouchableNativeFeedback; + readonly BorderlessButton: typeof TouchableNativeFeedback; + readonly PanGestureHandler: typeof View; + readonly attachGestureHandler: () => void; + readonly createGestureHandler: () => void; + readonly dropGestureHandler: () => void; + readonly updateGestureHandler: () => void; + readonly flushOperations: () => void; + readonly Directions: { + readonly RIGHT: 1; + readonly LEFT: 2; + readonly UP: 4; + readonly DOWN: 8; + }; + readonly State: { + readonly UNDETERMINED: 0; + readonly FAILED: 1; + readonly BEGAN: 2; + readonly CANCELLED: 3; + readonly ACTIVE: 4; + readonly END: 5; + }; +}; +export default _default; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/typeUtils.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/typeUtils.d.ts new file mode 100644 index 00000000..c00f6b93 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/typeUtils.d.ts @@ -0,0 +1 @@ +export declare type ValueOf = T[keyof T]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/utils.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/utils.d.ts new file mode 100644 index 00000000..de29ccf7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/utils.d.ts @@ -0,0 +1,13 @@ +export declare const REACT_NATIVE_VERSION: { + major: number; + minor: number; +}; +export declare function toArray(object: T | T[]): T[]; +export declare type withPrevAndCurrentMapFn = (previous: Transformed | null, current: T) => Transformed; +export declare function withPrevAndCurrent(array: T[], mapFn: withPrevAndCurrentMapFn): Transformed[]; +export declare function hasProperty(object: object, key: string): boolean; +export declare function isJestEnv(): boolean; +export declare function tagMessage(msg: string): string; +export declare function isFabric(): boolean; +export declare function shouldUseCodegenNativeComponent(): boolean; +export declare function isRemoteDebuggingEnabled(): boolean; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/constants.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/constants.d.ts new file mode 100644 index 00000000..c397708b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/constants.d.ts @@ -0,0 +1,7 @@ +export declare const DEFAULT_TOUCH_SLOP = 15; +export declare const Direction: { + RIGHT: number; + LEFT: number; + UP: number; + DOWN: number; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/RotationGestureDetector.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/RotationGestureDetector.d.ts new file mode 100644 index 00000000..b018702e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/RotationGestureDetector.d.ts @@ -0,0 +1,30 @@ +import { AdaptedEvent } from '../interfaces'; +import PointerTracker from '../tools/PointerTracker'; +export interface RotationGestureListener { + onRotationBegin: (detector: RotationGestureDetector) => boolean; + onRotation: (detector: RotationGestureDetector) => boolean; + onRotationEnd: (detector: RotationGestureDetector) => void; +} +export default class RotationGestureDetector implements RotationGestureListener { + onRotationBegin: (detector: RotationGestureDetector) => boolean; + onRotation: (detector: RotationGestureDetector) => boolean; + onRotationEnd: (detector: RotationGestureDetector) => void; + private currentTime; + private previousTime; + private previousAngle; + private rotation; + private anchorX; + private anchorY; + private isInProgress; + private keyPointers; + constructor(callbacks: RotationGestureListener); + private updateCurrent; + private finish; + private setKeyPointers; + onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean; + getTimeDelta(): number; + getAnchorX(): number; + getAnchorY(): number; + getRotation(): number; + reset(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/ScaleGestureDetector.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/ScaleGestureDetector.d.ts new file mode 100644 index 00000000..806c75ee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/detectors/ScaleGestureDetector.d.ts @@ -0,0 +1,29 @@ +import { AdaptedEvent } from '../interfaces'; +import PointerTracker from '../tools/PointerTracker'; +export interface ScaleGestureListener { + onScaleBegin: (detector: ScaleGestureDetector) => boolean; + onScale: (detector: ScaleGestureDetector) => boolean; + onScaleEnd: (detector: ScaleGestureDetector) => void; +} +export default class ScaleGestureDetector implements ScaleGestureListener { + onScaleBegin: (detector: ScaleGestureDetector) => boolean; + onScale: (detector: ScaleGestureDetector) => boolean; + onScaleEnd: (detector: ScaleGestureDetector) => void; + private focusX; + private focusY; + private currentSpan; + private prevSpan; + private initialSpan; + private currentTime; + private prevTime; + private inProgress; + private spanSlop; + private minSpan; + constructor(callbacks: ScaleGestureListener); + onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean; + getCurrentSpan(): number; + getFocusX(): number; + getFocusY(): number; + getTimeDelta(): number; + getScaleFactor(numOfPointers: number): number; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/FlingGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/FlingGestureHandler.d.ts new file mode 100644 index 00000000..78e0fa4a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/FlingGestureHandler.d.ts @@ -0,0 +1,34 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class FlingGestureHandler extends GestureHandler { + private numberOfPointersRequired; + private direction; + private maxDurationMs; + private minAcceptableDelta; + private delayTimeout; + private startX; + private startY; + private maxNumberOfPointersSimultaneously; + private keyPointer; + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected transformNativeEvent(): { + x: number; + y: number; + absoluteX: number; + absoluteY: number; + }; + private startFling; + private tryEndFling; + private endFling; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + private newPointerAction; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + private onUp; + protected onPointerCancel(event: AdaptedEvent): void; + activate(force?: boolean): void; + protected resetConfig(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/GestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/GestureHandler.d.ts new file mode 100644 index 00000000..efc5414c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/GestureHandler.d.ts @@ -0,0 +1,95 @@ +import { State } from '../../State'; +import { Config, AdaptedEvent, PointerType } from '../interfaces'; +import EventManager from '../tools/EventManager'; +import PointerTracker from '../tools/PointerTracker'; +export default abstract class GestureHandler { + private lastSentState; + protected currentState: State; + protected shouldCancellWhenOutside: boolean; + protected hasCustomActivationCriteria: boolean; + protected enabled: boolean; + private ref; + private propsRef; + private handlerTag; + protected config: Config; + protected view: HTMLElement; + protected eventManagers: EventManager[]; + protected tracker: PointerTracker; + protected activationIndex: number; + protected awaiting: boolean; + protected active: boolean; + protected shouldResetProgress: boolean; + protected pointerType: PointerType; + constructor(); + protected init(ref: number, propsRef: React.RefObject): void; + private setView; + private addEventManager; + protected onCancel(): void; + protected onReset(): void; + protected resetProgress(): void; + reset(): void; + moveToState(newState: State, sendIfDisabled?: boolean): void; + protected onStateChange(_newState: State, _oldState: State): void; + begin(): void; + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event + */ + fail(sendIfDisabled?: boolean): void; + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event + */ + cancel(sendIfDisabled?: boolean): void; + activate(_force?: boolean): void; + end(): void; + isAwaiting(): boolean; + setAwaiting(value: boolean): void; + isActive(): boolean; + setActive(value: boolean): void; + getShouldResetProgress(): boolean; + setShouldResetProgress(value: boolean): void; + getActivationIndex(): number; + setActivationIndex(value: number): void; + shouldWaitForHandlerFailure(handler: GestureHandler): boolean; + shouldRequireToWaitForFailure(handler: GestureHandler): boolean; + shouldRecognizeSimultaneously(handler: GestureHandler): boolean; + shouldBeCancelledByOther(handler: GestureHandler): boolean; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerOut(event: AdaptedEvent): void; + protected onPointerEnter(event: AdaptedEvent): void; + protected onPointerCancel(event: AdaptedEvent): void; + protected onPointerOutOfBounds(event: AdaptedEvent): void; + private tryToSendMoveEvent; + sendTouchEvent(event: AdaptedEvent): void; + sendEvent: (newState: State, oldState: State) => void; + private transformEventData; + private transformTouchEvent; + private cancelTouches; + protected transformNativeEvent(): {}; + updateGestureConfig({ enabled, ...props }: Config): void; + protected checkCustomActivationCriteria(criterias: string[]): void; + private validateHitSlops; + private checkHitSlop; + isPointerInBounds({ x, y }: { + x: number; + y: number; + }): boolean; + protected resetConfig(): void; + getTag(): number; + setTag(tag: number): void; + protected getConfig(): Config; + getShouldEnableGestureOnSetup(): boolean; + getView(): HTMLElement; + getEventManagers(): EventManager[]; + getTracker(): PointerTracker; + getTrackedPointersID(): number[]; + getState(): State; + isEnabled(): boolean; + private isFinished; + protected setShouldCancelWhenOutside(shouldCancel: boolean): void; + protected getShouldCancelWhenOutside(): boolean; + getPointerType(): PointerType; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/LongPressGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/LongPressGestureHandler.d.ts new file mode 100644 index 00000000..c2d0eeaf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/LongPressGestureHandler.d.ts @@ -0,0 +1,30 @@ +import { State } from '../../State'; +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class LongPressGestureHandler extends GestureHandler { + private minDurationMs; + private defaultMaxDistSq; + private maxDistSq; + private startX; + private startY; + private startTime; + private previousTime; + private activationTimeout; + init(ref: number, propsRef: React.RefObject): void; + protected transformNativeEvent(): { + x: number; + y: number; + absoluteX: number; + absoluteY: number; + duration: number; + }; + updateGestureConfig({ enabled, ...props }: Config): void; + protected resetConfig(): void; + protected onStateChange(_newState: State, _oldState: State): void; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + private tryBegin; + private tryActivate; + private checkDistanceFail; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/ManualGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/ManualGestureHandler.d.ts new file mode 100644 index 00000000..3f845cc5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/ManualGestureHandler.d.ts @@ -0,0 +1,13 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class ManualGestureHandler extends GestureHandler { + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerOutOfBounds(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + protected onPointerCancel(event: AdaptedEvent): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts new file mode 100644 index 00000000..5257e418 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts @@ -0,0 +1,25 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class NativeViewGestureHandler extends GestureHandler { + private buttonRole; + private shouldActivateOnStart; + private disallowInterruption; + private startX; + private startY; + private minDistSq; + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected resetConfig(): void; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + private newPointerAction; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerOut(): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + private onUp; + protected onPointerCancel(event: AdaptedEvent): void; + shouldRecognizeSimultaneously(handler: GestureHandler): boolean; + shouldBeCancelledByOther(_handler: GestureHandler): boolean; + disallowsInterruption(): boolean; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PanGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PanGestureHandler.d.ts new file mode 100644 index 00000000..63e105d6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PanGestureHandler.d.ts @@ -0,0 +1,60 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class PanGestureHandler extends GestureHandler { + private readonly customActivationProperties; + velocityX: number; + velocityY: number; + private minDistSq; + private activeOffsetXStart; + private activeOffsetXEnd; + private failOffsetXStart; + private failOffsetXEnd; + private activeOffsetYStart; + private activeOffsetYEnd; + private failOffsetYStart; + private failOffsetYEnd; + private minVelocityX; + private minVelocityY; + private minVelocitySq; + private minPointers; + private maxPointers; + private startX; + private startY; + private offsetX; + private offsetY; + private lastX; + private lastY; + private activateAfterLongPress; + private activationTimeout; + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected resetConfig(): void; + protected transformNativeEvent(): { + translationX: number; + translationY: number; + absoluteX: number; + absoluteY: number; + velocityX: number; + velocityY: number; + x: number; + y: number; + }; + private getTranslationX; + private getTranslationY; + private clearActivationTimeout; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerCancel(event: AdaptedEvent): void; + protected onPointerOutOfBounds(event: AdaptedEvent): void; + private shouldActivate; + private shouldFail; + private tryBegin; + private checkBegan; + activate(force?: boolean): void; + protected onCancel(): void; + protected onReset(): void; + protected resetProgress(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PinchGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PinchGestureHandler.d.ts new file mode 100644 index 00000000..29aa0276 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/PinchGestureHandler.d.ts @@ -0,0 +1,29 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class PinchGestureHandler extends GestureHandler { + private scale; + private velocity; + private startingSpan; + private spanSlop; + private scaleDetectorListener; + private scaleGestureDetector; + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected transformNativeEvent(): { + focalX: number; + focalY: number; + velocity: number; + scale: number; + }; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerOutOfBounds(event: AdaptedEvent): void; + protected onPointerCancel(event: AdaptedEvent): void; + private tryBegin; + activate(force?: boolean): void; + protected onReset(): void; + protected resetProgress(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/RotationGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/RotationGestureHandler.d.ts new file mode 100644 index 00000000..979ddc65 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/RotationGestureHandler.d.ts @@ -0,0 +1,30 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class RotationGestureHandler extends GestureHandler { + private rotation; + private velocity; + private cachedAnchorX; + private cachedAnchorY; + private rotationGestureListener; + private rotationGestureDetector; + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected transformNativeEvent(): { + rotation: number; + anchorX: number; + anchorY: number; + velocity: number; + }; + getAnchorX(): number; + getAnchorY(): number; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerOutOfBounds(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + protected onPointerCancel(event: AdaptedEvent): void; + protected tryBegin(): void; + activate(_force?: boolean): void; + protected onReset(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/TapGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/TapGestureHandler.d.ts new file mode 100644 index 00000000..6345eaf8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/handlers/TapGestureHandler.d.ts @@ -0,0 +1,46 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; +export default class TapGestureHandler extends GestureHandler { + private maxDeltaX; + private maxDeltaY; + private maxDistSq; + private maxDurationMs; + private maxDelayMs; + private numberOfTaps; + private minNumberOfPointers; + private currentMaxNumberOfPointers; + private startX; + private startY; + private offsetX; + private offsetY; + private lastX; + private lastY; + private waitTimeout; + private delayTimeout; + private tapsSoFar; + init(ref: number, propsRef: React.RefObject): void; + updateGestureConfig({ enabled, ...props }: Config): void; + protected resetConfig(): void; + protected transformNativeEvent(): { + x: number; + y: number; + absoluteX: number; + absoluteY: number; + }; + private clearTimeouts; + private startTap; + private endTap; + protected onPointerDown(event: AdaptedEvent): void; + protected onPointerAdd(event: AdaptedEvent): void; + protected onPointerUp(event: AdaptedEvent): void; + protected onPointerRemove(event: AdaptedEvent): void; + protected onPointerMove(event: AdaptedEvent): void; + protected onPointerOutOfBounds(event: AdaptedEvent): void; + protected onPointerCancel(event: AdaptedEvent): void; + private updateState; + private trySettingPosition; + private shouldFail; + activate(): void; + protected onCancel(): void; + protected resetProgress(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/interfaces.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/interfaces.d.ts new file mode 100644 index 00000000..e7b9dc50 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/interfaces.d.ts @@ -0,0 +1,139 @@ +import { UserSelect } from '../handlers/gestureHandlerCommon'; +import { Directions } from '../Directions'; +import { State } from '../State'; +export interface HitSlop { + left?: number; + right?: number; + top?: number; + bottom?: number; + horizontal?: number; + vertical?: number; + width?: number; + height?: number; +} +export interface Handler { + handlerTag: number; +} +declare type ConfigArgs = number | boolean | HitSlop | UserSelect | Directions | Handler[] | null | undefined; +export interface Config extends Record { + enabled?: boolean; + simultaneousHandlers?: Handler[] | null; + waitFor?: Handler[] | null; + hitSlop?: HitSlop; + shouldCancelWhenOutside?: boolean; + userSelect?: UserSelect; + activateAfterLongPress?: number; + failOffsetXStart?: number; + failOffsetYStart?: number; + failOffsetXEnd?: number; + failOffsetYEnd?: number; + activeOffsetXStart?: number; + activeOffsetXEnd?: number; + activeOffsetYStart?: number; + activeOffsetYEnd?: number; + minPointers?: number; + maxPointers?: number; + minDist?: number; + minDistSq?: number; + minVelocity?: number; + minVelocityX?: number; + minVelocityY?: number; + minVelocitySq?: number; + maxDist?: number; + maxDistSq?: number; + numberOfPointers?: number; + minDurationMs?: number; + numberOfTaps?: number; + maxDurationMs?: number; + maxDelayMs?: number; + maxDeltaX?: number; + maxDeltaY?: number; + shouldActivateOnStart?: boolean; + disallowInterruption?: boolean; + direction?: Directions; +} +declare type NativeEventArgs = number | State | boolean | undefined; +interface NativeEvent extends Record { + numberOfPointers: number; + state: State; + pointerInside: boolean | undefined; + handlerTag: number; + target: number; + oldState?: State; +} +export interface PointerData { + id: number; + x: number; + y: number; + absoluteX: number; + absoluteY: number; +} +declare type TouchNativeArgs = number | State | TouchEventType | PointerData[]; +interface NativeTouchEvent extends Record { + handlerTag: number; + state: State; + eventType: TouchEventType; + changedTouches: PointerData[]; + allTouches: PointerData[]; + numberOfTouches: number; +} +export interface ResultEvent extends Record { + nativeEvent: NativeEvent; + timeStamp: number; +} +export interface ResultTouchEvent extends Record { + nativeEvent: NativeTouchEvent; + timeStamp: number; +} +export interface PropsRef { + onGestureHandlerEvent: () => void; + onGestureHandlerStateChange: () => void; +} +export interface AdaptedEvent { + x: number; + y: number; + offsetX: number; + offsetY: number; + pointerId: number; + eventType: EventTypes; + pointerType: PointerType; + buttons: number; + time: number; + allTouches?: TouchList; + changedTouches?: TouchList; + touchEventType?: TouchEventType; +} +export declare enum MouseButtons { + NONE = 0, + LEFT = 1, + RIGHT = 2, + LEFT_RIGHT = 3, + SCROLL = 4, + SCROLL_LEFT = 5, + SCROLL_RIGHT = 6, + SCROLL_LEFT_RIGHT = 7 +} +export declare enum EventTypes { + DOWN = 0, + ADDITIONAL_POINTER_DOWN = 1, + UP = 2, + ADDITIONAL_POINTER_UP = 3, + MOVE = 4, + ENTER = 5, + OUT = 6, + CANCEL = 7 +} +export declare enum TouchEventType { + UNDETERMINED = 0, + DOWN = 1, + MOVE = 2, + UP = 3, + CANCELLED = 4 +} +export declare enum PointerType { + NONE = "none", + MOUSE = "mouse", + TOUCH = "touch", + PEN = "pen" +} +export {}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/EventManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/EventManager.d.ts new file mode 100644 index 00000000..20057439 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/EventManager.d.ts @@ -0,0 +1,30 @@ +import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces'; +export default abstract class EventManager { + protected readonly view: HTMLElement; + protected pointersInBounds: number[]; + protected activePointersCounter: number; + constructor(view: HTMLElement); + abstract setListeners(): void; + protected abstract mapEvent(event: Event, eventType: EventTypes, index?: number, touchEventType?: TouchEventType): AdaptedEvent; + protected onPointerDown(_event: AdaptedEvent): void; + protected onPointerAdd(_event: AdaptedEvent): void; + protected onPointerUp(_event: AdaptedEvent): void; + protected onPointerRemove(_event: AdaptedEvent): void; + protected onPointerMove(_event: AdaptedEvent): void; + protected onPointerOut(_event: AdaptedEvent): void; + protected onPointerEnter(_event: AdaptedEvent): void; + protected onPointerCancel(_event: AdaptedEvent): void; + protected onPointerOutOfBounds(_event: AdaptedEvent): void; + setOnPointerDown(callback: (event: AdaptedEvent) => void): void; + setOnPointerAdd(callback: (event: AdaptedEvent) => void): void; + setOnPointerUp(callback: (event: AdaptedEvent) => void): void; + setOnPointerRemove(callback: (event: AdaptedEvent) => void): void; + setOnPointerMove(callback: (event: AdaptedEvent) => void): void; + setOnPointerOut(callback: (event: AdaptedEvent) => void): void; + setOnPointerEnter(callback: (event: AdaptedEvent) => void): void; + setOnPointerCancel(callback: (event: AdaptedEvent) => void): void; + setOnPointerOutOfBounds(callback: (event: AdaptedEvent) => void): void; + protected markAsInBounds(pointerId: number): void; + protected markAsOutOfBounds(pointerId: number): void; + resetManager(): void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts new file mode 100644 index 00000000..6cebd58b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts @@ -0,0 +1,30 @@ +import { State } from '../../State'; +import GestureHandler from '../handlers/GestureHandler'; +export default class GestureHandlerOrchestrator { + private static instance; + private gestureHandlers; + private awaitingHandlers; + private handlersToCancel; + private handlingChangeSemaphore; + private activationIndex; + private constructor(); + private scheduleFinishedHandlersCleanup; + private cleanHandler; + removeHandlerFromOrchestrator(handler: GestureHandler): void; + private cleanupFinishedHandlers; + private hasOtherHandlerToWaitFor; + private tryActivate; + private shouldActivate; + private cleanupAwaitingHandlers; + onHandlerStateChange(handler: GestureHandler, newState: State, oldState: State, sendIfDisabled?: boolean): void; + private makeActive; + private addAwaitingHandler; + recordHandlerIfNotPresent(handler: GestureHandler): void; + private shouldHandlerWaitForOther; + private canRunSimultaneously; + private shouldHandlerBeCancelledBy; + private checkOverlap; + private isFinished; + cancelMouseAndPenGestures(currentHandler: GestureHandler): void; + static getInstance(): GestureHandlerOrchestrator; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/InteractionManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/InteractionManager.d.ts new file mode 100644 index 00000000..c2bae734 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/InteractionManager.d.ts @@ -0,0 +1,16 @@ +import GestureHandler from '../handlers/GestureHandler'; +import { Config } from '../interfaces'; +export default class InteractionManager { + private static instance; + private readonly waitForRelations; + private readonly simultaneousRelations; + private constructor(); + configureInteractions(handler: GestureHandler, config: Config): void; + shouldWaitForHandlerFailure(handler: GestureHandler, otherHandler: GestureHandler): boolean; + shouldRecognizeSimultaneously(handler: GestureHandler, otherHandler: GestureHandler): boolean; + shouldRequireHandlerToWaitForFailure(_handler: GestureHandler, _otherHandler: GestureHandler): boolean; + shouldHandlerBeCancelledBy(_handler: GestureHandler, _otherHandler: GestureHandler): boolean; + dropRelationsForHandlerWithTag(handlerTag: number): void; + reset(): void; + static getInstance(): InteractionManager; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/NodeManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/NodeManager.d.ts new file mode 100644 index 00000000..8b25f06e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/NodeManager.d.ts @@ -0,0 +1,11 @@ +import { ValueOf } from '../../typeUtils'; +import { Gestures } from '../../RNGestureHandlerModule.web'; +export default abstract class NodeManager { + private static gestures; + static getHandler(tag: number): import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default; + static createGestureHandler(handlerTag: number, handler: InstanceType>): void; + static dropGestureHandler(handlerTag: number): void; + static getNodes(): { + [x: number]: import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default; + }; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerEventManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerEventManager.d.ts new file mode 100644 index 00000000..837f84af --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerEventManager.d.ts @@ -0,0 +1,6 @@ +import { AdaptedEvent, EventTypes } from '../interfaces'; +import EventManager from './EventManager'; +export default class PointerEventManager extends EventManager { + setListeners(): void; + protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerTracker.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerTracker.d.ts new file mode 100644 index 00000000..8f8ed900 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/PointerTracker.d.ts @@ -0,0 +1,52 @@ +import { AdaptedEvent } from '../interfaces'; +export interface TrackerElement { + lastX: number; + lastY: number; + timeStamp: number; + velocityX: number; + velocityY: number; +} +export default class PointerTracker { + private trackedPointers; + private touchEventsIds; + private lastMovedPointerId; + private cachedAverages; + constructor(); + addToTracker(event: AdaptedEvent): void; + removeFromTracker(pointerId: number): void; + track(event: AdaptedEvent): void; + private mapTouchEventId; + private removeMappedTouchId; + getMappedTouchEventId(touchEventId: number): number; + getVelocityX(pointerId: number): number; + getVelocityY(pointerId: number): number; + /** + * Returns X coordinate of last moved pointer + */ + getLastX(): number; + /** + * + * @param pointerId + * Returns X coordinate of given pointer + */ + getLastX(pointerId: number): number; + /** + * Returns Y coordinate of last moved pointer + */ + getLastY(): number; + /** + * + * @param pointerId + * Returns Y coordinate of given pointer + */ + getLastY(pointerId: number): number; + getLastAvgX(): number; + getLastAvgY(): number; + getSumX(ignoredPointer?: number): number; + getSumY(ignoredPointer?: number): number; + getTrackedPointersCount(): number; + getTrackedPointersID(): number[]; + getData(): Map; + resetTracker(): void; + static shareCommonPointers(stPointers: number[], ndPointers: number[]): boolean; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/TouchEventManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/TouchEventManager.d.ts new file mode 100644 index 00000000..db7421ad --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/tools/TouchEventManager.d.ts @@ -0,0 +1,6 @@ +import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces'; +import EventManager from './EventManager'; +export default class TouchEventManager extends EventManager { + setListeners(): void; + protected mapEvent(event: TouchEvent, eventType: EventTypes, index: number, touchEventType: TouchEventType): AdaptedEvent; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/utils.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/utils.d.ts new file mode 100644 index 00000000..2acdf282 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web/utils.d.ts @@ -0,0 +1,4 @@ +export declare function isPointerInBounds(view: HTMLElement, { x, y }: { + x: number; + y: number; +}): boolean; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts new file mode 100644 index 00000000..d00353e8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts @@ -0,0 +1,20 @@ +import GestureHandler from './GestureHandler'; +declare abstract class DiscreteGestureHandler extends GestureHandler { + get isDiscrete(): boolean; + get shouldEnableGestureOnSetup(): boolean; + shouldFailUnderCustomCriteria({ x, y, deltaX, deltaY }: any, { maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside }: any): boolean; + transformNativeEvent({ center: { x, y } }: any): { + absoluteX: any; + absoluteY: any; + x: number; + y: number; + }; + isGestureEnabledForEvent({ minPointers, maxPointers, maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside, }: any, _recognizer: any, { maxPointers: pointerLength, center, deltaX, deltaY }: any): { + failed: boolean; + success?: undefined; + } | { + success: boolean; + failed?: undefined; + }; +} +export default DiscreteGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DraggingGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DraggingGestureHandler.d.ts new file mode 100644 index 00000000..dd34937b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/DraggingGestureHandler.d.ts @@ -0,0 +1,15 @@ +import GestureHandler, { HammerInputExt } from './GestureHandler'; +declare abstract class DraggingGestureHandler extends GestureHandler { + get shouldEnableGestureOnSetup(): boolean; + transformNativeEvent({ deltaX, deltaY, velocityX, velocityY, center: { x, y }, }: HammerInputExt): { + translationX: number; + translationY: number; + absoluteX: number; + absoluteY: number; + velocityX: number; + velocityY: number; + x: number; + y: number; + }; +} +export default DraggingGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/Errors.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/Errors.d.ts new file mode 100644 index 00000000..7ac1cfae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/Errors.d.ts @@ -0,0 +1,3 @@ +export declare class GesturePropError extends Error { + constructor(name: string, value: unknown, expectedType: string); +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/FlingGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/FlingGestureHandler.d.ts new file mode 100644 index 00000000..5538ebc6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/FlingGestureHandler.d.ts @@ -0,0 +1,43 @@ +import DraggingGestureHandler from './DraggingGestureHandler'; +import { HammerInputExt } from './GestureHandler'; +declare class FlingGestureHandler extends DraggingGestureHandler { + get name(): string; + get NativeGestureClass(): SwipeRecognizerStatic; + onGestureActivated(event: HammerInputExt): void; + onRawEvent(ev: HammerInputExt): void; + getHammerConfig(): { + pointers: any; + direction: number; + }; + getTargetDirections(direction: number): number[]; + getDirection(): number; + isGestureEnabledForEvent({ numberOfPointers }: any, _recognizer: any, { maxPointers: pointerLength }: any): { + failed: boolean; + success?: undefined; + } | { + success: boolean; + failed?: undefined; + }; + updateGestureConfig({ numberOfPointers, direction, ...props }: any): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; +} +export default FlingGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/GestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/GestureHandler.d.ts new file mode 100644 index 00000000..93d0b9dd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/GestureHandler.d.ts @@ -0,0 +1,145 @@ +import { findNodeHandle } from 'react-native'; +import { State } from '../State'; +import { EventMap } from './constants'; +export declare type HammerInputExt = Omit; +export declare type Config = Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; +}>; +declare abstract class GestureHandler { + handlerTag: any; + isGestureRunning: boolean; + view: number | null; + protected hasCustomActivationCriteria: boolean; + protected hasGestureFailed: boolean; + protected hammer: HammerManager | null; + protected initialRotation: number | null; + protected __initialX: any; + protected __initialY: any; + protected config: Config; + protected previousState: State; + private pendingGestures; + private oldState; + private lastSentState; + private gestureInstance; + private _stillWaiting; + private propsRef; + private ref; + abstract get name(): string; + get id(): string; + get isNative(): boolean; + get isDiscrete(): boolean; + get shouldEnableGestureOnSetup(): boolean; + constructor(); + getConfig(): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; + onWaitingEnded(_gesture: this): void; + removePendingGesture(id: string): void; + addPendingGesture(gesture: this): void; + isGestureEnabledForEvent(_config: any, _recognizer: any, _event: any): { + failed?: boolean; + success?: boolean; + }; + get NativeGestureClass(): RecognizerStatic; + updateHasCustomActivationCriteria(_config: Config): boolean; + clearSelfAsPending: () => void; + updateGestureConfig({ enabled, ...props }: { + [x: string]: any; + enabled?: boolean | undefined; + }): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; + destroy: () => void; + isPointInView: ({ x, y }: { + x: number; + y: number; + }) => boolean; + getState(type: keyof typeof EventMap): State; + transformEventData(event: HammerInputExt): { + nativeEvent: { + handlerTag: any; + target: any; + oldState: State | undefined; + numberOfPointers: number; + state: State; + pointerInside: boolean; + }; + timeStamp: number; + }; + transformNativeEvent(_event: HammerInputExt): {}; + sendEvent: (nativeEvent: HammerInputExt) => void; + cancelPendingGestures(event: HammerInputExt): void; + notifyPendingGestures(): void; + onGestureEnded(event: HammerInputExt): void; + forceInvalidate(event: HammerInputExt): void; + cancelEvent(event: HammerInputExt): void; + onRawEvent({ isFirst }: HammerInputExt): void; + shouldUseTouchEvents(config: Config): boolean; + setView(ref: Parameters['0'], propsRef: any): void; + setupEvents(): void; + onStart({ deltaX, deltaY, rotation }: HammerInputExt): void; + onGestureActivated(ev: HammerInputExt): void; + onSuccess(): void; + _getPendingGestures(): any[]; + getHammerConfig(): { + pointers: number | undefined; + }; + sync: () => void; + simulateCancelEvent(_inputData: any): void; + ensureConfig(config: Config): Required; +} +export default GestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts new file mode 100644 index 00000000..fa073d25 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts @@ -0,0 +1,40 @@ +import GestureHandler from './GestureHandler'; +/** + * The base class for **Rotation** and **Pinch** gesture handlers. + */ +declare abstract class IndiscreteGestureHandler extends GestureHandler { + get shouldEnableGestureOnSetup(): boolean; + updateGestureConfig({ minPointers, maxPointers, ...props }: { + [x: string]: any; + minPointers?: number | undefined; + maxPointers?: number | undefined; + }): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; + isGestureEnabledForEvent({ minPointers, maxPointers }: any, _recognizer: any, { maxPointers: pointerLength }: any): { + failed: boolean; + success?: undefined; + } | { + success: boolean; + failed?: undefined; + }; +} +export default IndiscreteGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/LongPressGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/LongPressGestureHandler.d.ts new file mode 100644 index 00000000..3d849efc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/LongPressGestureHandler.d.ts @@ -0,0 +1,38 @@ +import PressGestureHandler from './PressGestureHandler'; +import { Config } from './GestureHandler'; +import { HammerInputNames } from './constants'; +declare class LongPressGestureHandler extends PressGestureHandler { + get minDurationMs(): number; + get maxDist(): number | undefined; + updateHasCustomActivationCriteria({ maxDistSq }: Config): boolean; + getConfig(): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }> | { + shouldCancelWhenOutside: boolean; + maxDistSq: number; + }; + getHammerConfig(): { + time: number; + pointers: number | undefined; + }; + getState(type: keyof typeof HammerInputNames): 1 | 4 | 5; +} +export default LongPressGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts new file mode 100644 index 00000000..e64d3a15 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts @@ -0,0 +1,7 @@ +import { HammerInputExt } from './GestureHandler'; +import PressGestureHandler from './PressGestureHandler'; +declare class NativeViewGestureHandler extends PressGestureHandler { + get isNative(): boolean; + onRawEvent(ev: HammerInputExt): void; +} +export default NativeViewGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NodeManager.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NodeManager.d.ts new file mode 100644 index 00000000..9fcf4b3e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/NodeManager.d.ts @@ -0,0 +1,8 @@ +import { ValueOf } from '../typeUtils'; +import { HammerGestures } from '../RNGestureHandlerModule.web'; +export declare function getHandler(tag: number): import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./TapGestureHandler").default | import("./LongPressGestureHandler").default | import("./PinchGestureHandler").default | import("./RotationGestureHandler").default | import("./FlingGestureHandler").default; +export declare function createGestureHandler(handlerTag: number, handler: InstanceType>): void; +export declare function dropGestureHandler(handlerTag: number): void; +export declare function getNodes(): { + [x: number]: import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./TapGestureHandler").default | import("./LongPressGestureHandler").default | import("./PinchGestureHandler").default | import("./RotationGestureHandler").default | import("./FlingGestureHandler").default; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PanGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PanGestureHandler.d.ts new file mode 100644 index 00000000..fd533673 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PanGestureHandler.d.ts @@ -0,0 +1,56 @@ +import { EventMap } from './constants'; +import DraggingGestureHandler from './DraggingGestureHandler'; +import { State } from '../State'; +import { Config, HammerInputExt } from './GestureHandler'; +declare class PanGestureHandler extends DraggingGestureHandler { + get name(): string; + get NativeGestureClass(): PanRecognizerStatic; + getHammerConfig(): { + direction: number; + pointers: number | undefined; + }; + getState(type: keyof typeof EventMap): State; + getDirection(): number; + getConfig(): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; + shouldFailUnderCustomCriteria({ deltaX, deltaY }: HammerInputExt, criteria: any): boolean; + shouldActivateUnderCustomCriteria({ deltaX, deltaY, velocity }: any, criteria: any): boolean; + shouldMultiFingerPanFail({ pointerLength, scale, deltaRotation, }: { + deltaRotation: number; + pointerLength: number; + scale: number; + }): boolean; + updateHasCustomActivationCriteria(criteria: Config & { + minVelocityX?: number; + minVelocityY?: number; + }): boolean; + isGestureEnabledForEvent(props: any, _recognizer: any, inputData: HammerInputExt & { + deltaRotation: number; + }): { + failed: boolean; + success?: undefined; + } | { + success: boolean; + failed?: undefined; + }; +} +export default PanGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PinchGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PinchGestureHandler.d.ts new file mode 100644 index 00000000..d97ebeb3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PinchGestureHandler.d.ts @@ -0,0 +1,13 @@ +import { HammerInputExt } from './GestureHandler'; +import IndiscreteGestureHandler from './IndiscreteGestureHandler'; +declare class PinchGestureHandler extends IndiscreteGestureHandler { + get name(): string; + get NativeGestureClass(): PinchRecognizerStatic; + transformNativeEvent({ scale, velocity, center }: HammerInputExt): { + focalX: number; + focalY: number; + velocity: number; + scale: number; + }; +} +export default PinchGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PressGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PressGestureHandler.d.ts new file mode 100644 index 00000000..7bd911d3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/PressGestureHandler.d.ts @@ -0,0 +1,83 @@ +import { State } from '../State'; +import { HammerInputNames } from './constants'; +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { Config, HammerInputExt } from './GestureHandler'; +declare class PressGestureHandler extends DiscreteGestureHandler { + private visualFeedbackTimer; + private initialEvent; + get name(): string; + get minDurationMs(): any; + get maxDist(): number | undefined; + get NativeGestureClass(): PressRecognizerStatic; + shouldDelayTouches: boolean; + simulateCancelEvent(inputData: HammerInputExt): void; + updateHasCustomActivationCriteria({ shouldCancelWhenOutside, maxDistSq, }: Config & { + shouldCancelWhenOutside: boolean; + }): boolean; + getState(type: keyof typeof HammerInputNames): State; + getConfig(): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }> | { + shouldCancelWhenOutside: boolean; + maxDistSq: number; + }; + getHammerConfig(): { + time: any; + pointers: number | undefined; + }; + onGestureActivated(ev: HammerInputExt): void; + shouldDelayTouchForEvent({ pointerType }: HammerInputExt): boolean; + onGestureStart(ev: HammerInputExt): void; + sendGestureStartedEvent(ev: HammerInputExt): void; + forceInvalidate(event: HammerInputExt): void; + onRawEvent(ev: HammerInputExt): void; + updateGestureConfig({ shouldActivateOnStart, disallowInterruption, shouldCancelWhenOutside, minDurationMs, maxDist, minPointers, maxPointers, ...props }: { + [x: string]: any; + shouldActivateOnStart?: boolean | undefined; + disallowInterruption?: boolean | undefined; + shouldCancelWhenOutside?: boolean | undefined; + minDurationMs?: number | undefined; + maxDist?: number | undefined; + minPointers?: number | undefined; + maxPointers?: number | undefined; + }): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; +} +export default PressGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/RotationGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/RotationGestureHandler.d.ts new file mode 100644 index 00000000..88a59f4f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/RotationGestureHandler.d.ts @@ -0,0 +1,13 @@ +import { HammerInputExt } from './GestureHandler'; +import IndiscreteGestureHandler from './IndiscreteGestureHandler'; +declare class RotationGestureHandler extends IndiscreteGestureHandler { + get name(): string; + get NativeGestureClass(): RotateRecognizerStatic; + transformNativeEvent({ rotation, velocity, center }: HammerInputExt): { + rotation: number; + anchorX: number; + anchorY: number; + velocity: number; + }; +} +export default RotationGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/TapGestureHandler.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/TapGestureHandler.d.ts new file mode 100644 index 00000000..655136dc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/TapGestureHandler.d.ts @@ -0,0 +1,57 @@ +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { HammerInputExt } from './GestureHandler'; +declare class TapGestureHandler extends DiscreteGestureHandler { + private _shouldFireEndEvent; + private _timer; + private _multiTapTimer; + get name(): string; + get NativeGestureClass(): TapRecognizerStatic; + get maxDelayMs(): any; + simulateCancelEvent(inputData: HammerInputExt): void; + onGestureActivated(ev: HammerInputExt): void; + onSuccessfulTap: (ev: HammerInputExt) => void; + onRawEvent(ev: HammerInput): void; + getHammerConfig(): { + event: string; + taps: any; + interval: any; + time: any; + pointers: number | undefined; + }; + updateGestureConfig({ shouldCancelWhenOutside, maxDeltaX, maxDeltaY, numberOfTaps, minDurationMs, maxDelayMs, maxDurationMs, maxDist, minPointers, maxPointers, ...props }: { + [x: string]: any; + shouldCancelWhenOutside?: boolean | undefined; + maxDeltaX?: number | undefined; + maxDeltaY?: number | undefined; + numberOfTaps?: number | undefined; + minDurationMs?: number | undefined; + maxDelayMs?: number | undefined; + maxDurationMs?: number | undefined; + maxDist?: number | undefined; + minPointers?: number | undefined; + maxPointers?: number | undefined; + }): Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; + }>; + onGestureEnded(...props: any): void; + onWaitingEnded(_gesture: any): void; +} +export default TapGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/constants.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/constants.d.ts new file mode 100644 index 00000000..9860a369 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/constants.d.ts @@ -0,0 +1,39 @@ +export declare const CONTENT_TOUCHES_DELAY = 240; +export declare const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50; +export declare const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1; +export declare const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7; +export declare const DEG_RAD: number; +export declare const EventMap: { + readonly 1: 2; + readonly 2: 4; + readonly 4: 5; + readonly 8: 1; +}; +export declare const Direction: { + RIGHT: number; + LEFT: number; + UP: number; + DOWN: number; +}; +export declare const DirectionMap: { + 4: number; + 2: number; + 8: number; + 16: number; +}; +export declare const HammerInputNames: { + 1: string; + 2: string; + 4: string; + 8: string; +}; +export declare const HammerDirectionNames: { + 6: string; + 8: string; + 16: string; + 24: string; + 1: string; + 30: string; + 4: string; + 2: string; +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/utils.d.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/utils.d.ts new file mode 100644 index 00000000..4d502ca8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/lib/typescript/web_hammer/utils.d.ts @@ -0,0 +1,9 @@ +export declare const isnan: (v: unknown) => boolean; +export declare const isValidNumber: (v: unknown) => boolean; +export declare const TEST_MIN_IF_NOT_NAN: (value: number, limit: number) => boolean; +export declare const VEC_LEN_SQ: ({ x, y }?: { + x?: number | undefined; + y?: number | undefined; +}) => number; +export declare const TEST_MAX_IF_NOT_NAN: (value: number, max: number) => boolean; +export declare function fireAfterInterval(method: () => void, interval?: number | boolean): number | null; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/node_modules/.bin/react-native b/iut-expo-starter/node_modules/react-native-gesture-handler/node_modules/.bin/react-native new file mode 120000 index 00000000..415c9a27 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/node_modules/.bin/react-native @@ -0,0 +1 @@ +../../../react-native/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/package.json b/iut-expo-starter/node_modules/react-native-gesture-handler/package.json new file mode 100644 index 00000000..2c411d3d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/package.json @@ -0,0 +1,152 @@ +{ + "name": "react-native-gesture-handler", + "version": "2.9.0", + "description": "Experimental implementation of a new declarative API for gesture handling in react-native", + "scripts": { + "prepare": "bob build && husky install", + "test": "jest", + "build": "yarn tsc -p tsconfig.build.json", + "precommit": "lint-staged", + "release": "npm login && release-it", + "ts-check": "yarn tsc --noEmit", + "format:js": "prettier --write --list-different './{src,example,FabricExample}/**/*.{js,jsx,ts,tsx}'", + "format:android": "node ./scripts/format-android.js", + "format:ios": "find ios/ -iname *.h -o -iname *.m -o -iname *.cpp -o -iname *.mm | xargs clang-format -i", + "lint:js": "eslint --ext '.js,.ts,.tsx' src/ example/src FabricExample/src && yarn prettier --check './{src,example,FabricExample}/**/*.{js,jsx,ts,tsx}'", + "lint:js-root": "eslint --ext '.js,.ts,.tsx' src/ && yarn prettier --check './src/**/*.{js,jsx,ts,tsx}'", + "lint:android": "./android/gradlew -p android spotlessCheck -q" + }, + "react-native": "src/index.ts", + "main": "lib/commonjs/index.js", + "module": "lib/module/index.js", + "types": "lib/typescript/index.d.ts", + "files": [ + "src", + "lib", + "!**/__tests__", + "!**/__fixtures__", + "!**/__mocks__", + "android/build.gradle", + "android/gradle.properties", + "android/src/main/AndroidManifest.xml", + "android/src/main/java/", + "android/src/main/jni/", + "android/src/fabric/java", + "android/src/paper/java", + "android/common/src/main/java/", + "android/reanimated/src/main/java/", + "android/noreanimated/src/main/java/", + "ios/", + "Swipeable/", + "jest-utils/", + "DrawerLayout/", + "README.md", + "jestSetup.js", + "RNGestureHandler.podspec" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/software-mansion/react-native-gesture-handler.git" + }, + "author": { + "email": "krzys.magiera@gmail.com", + "name": "Krzysztof Magiera" + }, + "license": "MIT", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/software-mansion/react-native-gesture-handler/issues" + }, + "homepage": "https://github.com/software-mansion/react-native-gesture-handler#readme", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "jest": { + "preset": "react-native", + "modulePathIgnorePatterns": [ + "/lib/" + ] + }, + "devDependencies": { + "@babel/core": "^7.12.9", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-typescript": "^7.12.7", + "@babel/runtime": "^7.12.5", + "@testing-library/jest-native": "^4.0.4", + "@testing-library/react-native": "^9.0.0", + "@types/hammerjs": "^2.0.38", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/jest": "^27.0.3", + "@types/react": "^18.0.24", + "@types/react-test-renderer": "^17.0.0", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "babel-jest": "^26.6.3", + "clang-format": "^1.8.0", + "eslint": "^7.15.0", + "eslint-config-satya164": "^3.1.8", + "eslint-import-resolver-babel-module": "^5.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^26.0.0", + "expo": "^35.0.1", + "husky": "^8.0.1", + "jest": "^26.6.3", + "lint-staged": "^12.3.2", + "metro-react-native-babel-preset": "^0.64.0", + "prettier": "^2.7.1", + "react": "18.2.0", + "react-dom": "^16.12.0", + "react-native": "0.71.0", + "react-native-builder-bob": "^0.17.1", + "react-native-reanimated": "^2.3.1", + "react-native-web": "^0.11.7", + "react-test-renderer": "17.0.2", + "release-it": "^13.6.5", + "typescript": "^4.5.5" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "lint-staged": { + "./{src,example,FabricExample}/**/*.{ts,tsx}": "yarn format:js", + "android/**/*.kt": "yarn format:android", + "ios/**/*.{h,m,mm,cpp}": "yarn format:ios" + }, + "release-it": { + "hooks": { + "before:git:bump": [ + "# check if version corresponds to changes in native files \n if git diff --name-only ${latestVersion} HEAD | egrep \"(android/.*)|(ios/.*)\" -q; then egrep '\\.0$' -q <<< ${version}; else test $? -eq 1; fi" + ] + } + }, + "react-native-builder-bob": { + "source": "src", + "output": "lib", + "targets": [ + "commonjs", + "module", + [ + "typescript", + { + "project": "tsconfig.build.json" + } + ] + ] + }, + "eslintIgnore": [ + "node_modules/", + "lib/", + "src/fabric/*NativeComponent.js" + ], + "codegenConfig": { + "name": "rngesturehandler_codegen", + "type": "components", + "jsSrcsDir": "./src/fabric" + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/ActionType.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/ActionType.ts new file mode 100644 index 00000000..ac11a32d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/ActionType.ts @@ -0,0 +1,9 @@ +export const ActionType = { + REANIMATED_WORKLET: 1, + NATIVE_ANIMATED_EVENT: 2, + JS_FUNCTION_OLD_API: 3, + JS_FUNCTION_NEW_API: 4, +} as const; + +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +export type ActionType = typeof ActionType[keyof typeof ActionType]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/Directions.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/Directions.ts new file mode 100644 index 00000000..26631c64 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/Directions.ts @@ -0,0 +1,9 @@ +export const Directions = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8, +} as const; + +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +export type Directions = typeof Directions[keyof typeof Directions]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/EnableExperimentalWebImplementation.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/EnableExperimentalWebImplementation.ts new file mode 100644 index 00000000..7e13c48e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/EnableExperimentalWebImplementation.ts @@ -0,0 +1,27 @@ +import { Platform } from 'react-native'; + +let EXPERIMENTAL_WEB_IMPLEMENTATION = false; +let getWasCalled = false; + +export function enableExperimentalWebImplementation(shouldEnable = true): void { + if ( + Platform.OS !== 'web' || + EXPERIMENTAL_WEB_IMPLEMENTATION === shouldEnable + ) { + return; + } + + if (getWasCalled) { + console.error( + 'Some parts of this application have already started using old gesture handler implementation. No changes will be applied. You can try enabling new implementation earlier.' + ); + return; + } + + EXPERIMENTAL_WEB_IMPLEMENTATION = shouldEnable; +} + +export function isExperimentalWebImplementationEnabled(): boolean { + getWasCalled = true; + return EXPERIMENTAL_WEB_IMPLEMENTATION; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.android.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.android.tsx new file mode 100644 index 00000000..310886d1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.android.tsx @@ -0,0 +1,24 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +import * as React from 'react'; +import { PropsWithChildren } from 'react'; +import { requireNativeComponent, ViewProps } from 'react-native'; +import { maybeInitializeFabric } from './init'; +import { shouldUseCodegenNativeComponent } from './utils'; + +const GestureHandlerRootViewNativeComponent = shouldUseCodegenNativeComponent() + ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default + : requireNativeComponent('RNGestureHandlerRootView'); + +export interface GestureHandlerRootViewProps + extends PropsWithChildren {} + +export default function GestureHandlerRootView( + props: GestureHandlerRootViewProps +) { + // try initialize fabric on the first render, at this point we can + // reliably check if fabric is enabled (the function contains a flag + // to make sure it's called only once) + maybeInitializeFabric(); + + return ; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.tsx new file mode 100644 index 00000000..69e39485 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.tsx @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { PropsWithChildren } from 'react'; +import { View, ViewProps } from 'react-native'; +import { maybeInitializeFabric } from './init'; + +export interface GestureHandlerRootViewProps + extends PropsWithChildren {} + +export default function GestureHandlerRootView( + props: GestureHandlerRootViewProps +) { + // try initialize fabric on the first render, at this point we can + // reliably check if fabric is enabled (the function contains a flag + // to make sure it's called only once) + maybeInitializeFabric(); + + return ; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.web.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.web.tsx new file mode 100644 index 00000000..beb9c84e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.web.tsx @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { PropsWithChildren } from 'react'; +import { View, ViewProps } from 'react-native'; + +export interface GestureHandlerRootViewProps + extends PropsWithChildren {} + +export default function GestureHandlerRootView( + props: GestureHandlerRootViewProps +) { + return ; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.ts new file mode 100644 index 00000000..cf7ad645 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.ts @@ -0,0 +1,8 @@ +import { NativeModules, Platform } from 'react-native'; + +type PlatformConstants = { + forceTouchAvailable: boolean; +}; + +export default (NativeModules?.PlatformConstants ?? + Platform.constants) as PlatformConstants; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.web.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.web.ts new file mode 100644 index 00000000..1fcf6591 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/PlatformConstants.web.ts @@ -0,0 +1,5 @@ +export default { + get forceTouchAvailable() { + return false; + }, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.macos.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.macos.ts new file mode 100644 index 00000000..046cdf4e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.macos.ts @@ -0,0 +1,129 @@ +import { ActionType } from './ActionType'; +import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation'; + +//GestureHandlers +import InteractionManager from './web/tools/InteractionManager'; +import NodeManager from './web/tools/NodeManager'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; + +//Hammer Handlers +import * as HammerNodeManager from './web_hammer/NodeManager'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +import { Config } from './web/interfaces'; + +export const Gestures = { + NativeViewGestureHandler, + PanGestureHandler, + TapGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + ManualGestureHandler, +}; + +export const HammerGestures = { + NativeViewGestureHandler: HammerNativeViewGestureHandler, + PanGestureHandler: HammerPanGestureHandler, + TapGestureHandler: HammerTapGestureHandler, + LongPressGestureHandler: HammerLongPressGestureHandler, + PinchGestureHandler: HammerPinchGestureHandler, + RotationGestureHandler: HammerRotationGestureHandler, + FlingGestureHandler: HammerFlingGestureHandler, +}; + +export default { + handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) { + // NO-OP + }, + handleClearJSResponder() { + // NO-OP + }, + createGestureHandler( + handlerName: keyof typeof Gestures, + handlerTag: number, + config: T + ) { + if (isExperimentalWebImplementationEnabled()) { + if (!(handlerName in Gestures)) { + throw new Error( + `react-native-gesture-handler: ${handlerName} is not supported on web.` + ); + } + + const GestureClass = Gestures[handlerName]; + NodeManager.createGestureHandler(handlerTag, new GestureClass()); + InteractionManager.getInstance().configureInteractions( + NodeManager.getHandler(handlerTag), + config as unknown as Config + ); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error( + `react-native-gesture-handler: ${handlerName} is not supported on web.` + ); + } + + // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const GestureClass = HammerGestures[handlerName]; + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config as unknown as Config); + }, + attachGestureHandler( + handlerTag: number, + newView: number, + _actionType: ActionType, + propsRef: React.RefObject + ) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).init(newView, propsRef); + } else { + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + updateGestureHandler(handlerTag: number, newConfig: Config) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + + InteractionManager.getInstance().configureInteractions( + NodeManager.getHandler(handlerTag), + newConfig + ); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + getGestureHandlerNode(handlerTag: number) { + if (isExperimentalWebImplementationEnabled()) { + return NodeManager.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + dropGestureHandler(handlerTag: number) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {}, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.ts new file mode 100644 index 00000000..f777d1ee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.ts @@ -0,0 +1,50 @@ +import { NativeModules } from 'react-native'; +import { ActionType } from './ActionType'; +import { tagMessage } from './utils'; +const { RNGestureHandlerModule } = NativeModules; + +if (RNGestureHandlerModule == null) { + console.error( + tagMessage( + `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..). + + For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation` + .split('\n') + .map((line) => line.trim()) + .join('\n') + ) + ); +} + +if ( + RNGestureHandlerModule && + RNGestureHandlerModule.flushOperations === undefined +) { + RNGestureHandlerModule.flushOperations = () => { + // NO-OP if not defined + }; +} + +export type RNGestureHandlerModuleProps = { + handleSetJSResponder: (tag: number, blockNativeResponder: boolean) => void; + handleClearJSResponder: () => void; + createGestureHandler: ( + handlerName: string, + handlerTag: number, + config: Readonly> + ) => void; + attachGestureHandler: ( + handlerTag: number, + newView: number, + actionType: ActionType + ) => void; + updateGestureHandler: ( + handlerTag: number, + newConfig: Readonly> + ) => void; + dropGestureHandler: (handlerTag: number) => void; + install: () => void; + flushOperations: () => void; +}; + +export default RNGestureHandlerModule as RNGestureHandlerModuleProps; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.web.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.web.ts new file mode 100644 index 00000000..4f1cc085 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.web.ts @@ -0,0 +1,140 @@ +import React from 'react'; + +import { ActionType } from './ActionType'; +import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation'; + +//GestureHandlers +import InteractionManager from './web/tools/InteractionManager'; +import NodeManager from './web/tools/NodeManager'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; + +//Hammer Handlers +import * as HammerNodeManager from './web_hammer/NodeManager'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +import { Config } from './web/interfaces'; + +export const Gestures = { + NativeViewGestureHandler, + PanGestureHandler, + TapGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + ManualGestureHandler, +}; + +export const HammerGestures = { + NativeViewGestureHandler: HammerNativeViewGestureHandler, + PanGestureHandler: HammerPanGestureHandler, + TapGestureHandler: HammerTapGestureHandler, + LongPressGestureHandler: HammerLongPressGestureHandler, + PinchGestureHandler: HammerPinchGestureHandler, + RotationGestureHandler: HammerRotationGestureHandler, + FlingGestureHandler: HammerFlingGestureHandler, +}; + +export default { + handleSetJSResponder(tag: number, blockNativeResponder: boolean) { + console.warn('handleSetJSResponder: ', tag, blockNativeResponder); + }, + handleClearJSResponder() { + console.warn('handleClearJSResponder: '); + }, + createGestureHandler( + handlerName: keyof typeof Gestures, + handlerTag: number, + config: T + ) { + if (isExperimentalWebImplementationEnabled()) { + if (!(handlerName in Gestures)) { + throw new Error( + `react-native-gesture-handler: ${handlerName} is not supported on web.` + ); + } + + const GestureClass = Gestures[handlerName]; + NodeManager.createGestureHandler(handlerTag, new GestureClass()); + InteractionManager.getInstance().configureInteractions( + NodeManager.getHandler(handlerTag), + config as unknown as Config + ); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error( + `react-native-gesture-handler: ${handlerName} is not supported on web.` + ); + } + + // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const GestureClass = HammerGestures[handlerName]; + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config as unknown as Config); + }, + attachGestureHandler( + handlerTag: number, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + newView: any, + _actionType: ActionType, + propsRef: React.RefObject + ) { + if ( + !(newView instanceof HTMLElement || newView instanceof React.Component) + ) { + return; + } + + if (isExperimentalWebImplementationEnabled()) { + //@ts-ignore Types should be HTMLElement or React.Component + NodeManager.getHandler(handlerTag).init(newView, propsRef); + } else { + //@ts-ignore Types should be HTMLElement or React.Component + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + updateGestureHandler(handlerTag: number, newConfig: Config) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + + InteractionManager.getInstance().configureInteractions( + NodeManager.getHandler(handlerTag), + newConfig + ); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + getGestureHandlerNode(handlerTag: number) { + if (isExperimentalWebImplementationEnabled()) { + return NodeManager.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + dropGestureHandler(handlerTag: number) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {}, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.windows.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.windows.ts new file mode 100644 index 00000000..c1d23dd6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.windows.ts @@ -0,0 +1,140 @@ +import React from 'react'; + +import { ActionType } from './ActionType'; +import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation'; + +//GestureHandlers +import InteractionManager from './web/tools/InteractionManager'; +import NodeManager from './web/tools/NodeManager'; +import PanGestureHandler from './web/handlers/PanGestureHandler'; +import TapGestureHandler from './web/handlers/TapGestureHandler'; +import LongPressGestureHandler from './web/handlers/LongPressGestureHandler'; +import PinchGestureHandler from './web/handlers/PinchGestureHandler'; +import RotationGestureHandler from './web/handlers/RotationGestureHandler'; +import FlingGestureHandler from './web/handlers/FlingGestureHandler'; +import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler'; +import ManualGestureHandler from './web/handlers/ManualGestureHandler'; + +//Hammer Handlers +import * as HammerNodeManager from './web_hammer/NodeManager'; +import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler'; +import HammerPanGestureHandler from './web_hammer/PanGestureHandler'; +import HammerTapGestureHandler from './web_hammer/TapGestureHandler'; +import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler'; +import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler'; +import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler'; +import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler'; +import { Config } from './web/interfaces'; + +export const Gestures = { + NativeViewGestureHandler, + PanGestureHandler, + TapGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + ManualGestureHandler, +}; + +export const HammerGestures = { + NativeViewGestureHandler: HammerNativeViewGestureHandler, + PanGestureHandler: HammerPanGestureHandler, + TapGestureHandler: HammerTapGestureHandler, + LongPressGestureHandler: HammerLongPressGestureHandler, + PinchGestureHandler: HammerPinchGestureHandler, + RotationGestureHandler: HammerRotationGestureHandler, + FlingGestureHandler: HammerFlingGestureHandler, +}; + +export default { + handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) { + // NO-OP + }, + handleClearJSResponder() { + // NO-OP + }, + createGestureHandler( + handlerName: keyof typeof Gestures, + handlerTag: number, + config: T + ) { + if (isExperimentalWebImplementationEnabled()) { + if (!(handlerName in Gestures)) { + throw new Error( + `react-native-gesture-handler: ${handlerName} is not supported on web.` + ); + } + + const GestureClass = Gestures[handlerName]; + NodeManager.createGestureHandler(handlerTag, new GestureClass()); + InteractionManager.getInstance().configureInteractions( + NodeManager.getHandler(handlerTag), + config as unknown as Config + ); + } else { + if (!(handlerName in HammerGestures)) { + throw new Error( + `react-native-gesture-handler: ${handlerName} is not supported on web.` + ); + } + + // @ts-ignore If it doesn't exist, the error is thrown + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const GestureClass = HammerGestures[handlerName]; + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + HammerNodeManager.createGestureHandler(handlerTag, new GestureClass()); + } + + this.updateGestureHandler(handlerTag, config as unknown as Config); + }, + attachGestureHandler( + handlerTag: number, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + newView: any, + _actionType: ActionType, + propsRef: React.RefObject + ) { + if ( + !(newView instanceof HTMLElement || newView instanceof React.Component) + ) { + return; + } + + if (isExperimentalWebImplementationEnabled()) { + //@ts-ignore Types should be HTMLElement or React.Component + NodeManager.getHandler(handlerTag).init(newView, propsRef); + } else { + //@ts-ignore Types should be HTMLElement or React.Component + HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef); + } + }, + updateGestureHandler(handlerTag: number, newConfig: Config) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + + InteractionManager.getInstance().configureInteractions( + NodeManager.getHandler(handlerTag), + newConfig + ); + } else { + HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig); + } + }, + getGestureHandlerNode(handlerTag: number) { + if (isExperimentalWebImplementationEnabled()) { + return NodeManager.getHandler(handlerTag); + } else { + return HammerNodeManager.getHandler(handlerTag); + } + }, + dropGestureHandler(handlerTag: number) { + if (isExperimentalWebImplementationEnabled()) { + NodeManager.dropGestureHandler(handlerTag); + } else { + HammerNodeManager.dropGestureHandler(handlerTag); + } + }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + flushOperations() {}, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.ts new file mode 100644 index 00000000..7a585b64 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.ts @@ -0,0 +1,3 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.web.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.web.ts new file mode 100644 index 00000000..d46b8259 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/RNRenderer.web.ts @@ -0,0 +1,3 @@ +export const RNRenderer = { + findHostInstance_DEPRECATED: (_ref: any) => null, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/State.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/State.ts new file mode 100644 index 00000000..a68a62dc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/State.ts @@ -0,0 +1,13 @@ +// TODO use State from RNModule + +export const State = { + UNDETERMINED: 0, + FAILED: 1, + BEGAN: 2, + CANCELLED: 3, + ACTIVE: 4, + END: 5, +} as const; + +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +export type State = typeof State[keyof typeof State]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/TouchEventType.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/TouchEventType.ts new file mode 100644 index 00000000..99bc1ba3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/TouchEventType.ts @@ -0,0 +1,10 @@ +export const TouchEventType = { + UNDETERMINED: 0, + TOUCHES_DOWN: 1, + TOUCHES_MOVE: 2, + TOUCHES_UP: 3, + TOUCHES_CANCELLED: 4, +} as const; + +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value +export type TouchEventType = typeof TouchEventType[keyof typeof TouchEventType]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/DrawerLayout.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/DrawerLayout.tsx new file mode 100644 index 00000000..7853951e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/DrawerLayout.tsx @@ -0,0 +1,734 @@ +// This component is based on RN's DrawerLayoutAndroid API +// +// It perhaps deserves to be put in a separate repo, but since it relies on +// react-native-gesture-handler library which isn't very popular at the moment I +// decided to keep it here for the time being. It will allow us to move faster +// and fix issues that may arise in gesture handler library that could be found +// when using the drawer component + +import * as React from 'react'; +import { Component } from 'react'; +import invariant from 'invariant'; +import { + Animated, + StyleSheet, + View, + Keyboard, + StatusBar, + I18nManager, + StatusBarAnimation, + StyleProp, + ViewStyle, + LayoutChangeEvent, + NativeSyntheticEvent, +} from 'react-native'; + +import { + GestureEvent, + HandlerStateChangeEvent, + UserSelect, +} from '../handlers/gestureHandlerCommon'; +import { + PanGestureHandler, + PanGestureHandlerEventPayload, +} from '../handlers/PanGestureHandler'; +import { + TapGestureHandler, + TapGestureHandlerEventPayload, +} from '../handlers/TapGestureHandler'; +import { State } from '../State'; + +const DRAG_TOSS = 0.05; + +const IDLE: DrawerState = 'Idle'; +const DRAGGING: DrawerState = 'Dragging'; +const SETTLING: DrawerState = 'Settling'; + +export type DrawerPosition = 'left' | 'right'; + +export type DrawerState = 'Idle' | 'Dragging' | 'Settling'; + +export type DrawerType = 'front' | 'back' | 'slide'; + +export type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open'; + +export type DrawerKeyboardDismissMode = 'none' | 'on-drag'; + +// Animated.AnimatedInterpolation has been converted to a generic type +// in @types/react-native 0.70. This way we can maintain compatibility +// with all versions of @types/react-native` +type AnimatedInterpolation = ReturnType; +export interface DrawerLayoutProps { + /** + * This attribute is present in the standard implementation already and is one + * of the required params. Gesture handler version of DrawerLayout make it + * possible for the function passed as `renderNavigationView` to take an + * Animated value as a parameter that indicates the progress of drawer + * opening/closing animation (progress value is 0 when closed and 1 when + * opened). This can be used by the drawer component to animated its children + * while the drawer is opening or closing. + */ + renderNavigationView: ( + progressAnimatedValue: Animated.Value + ) => React.ReactNode; + + drawerPosition?: DrawerPosition; + + drawerWidth?: number; + + drawerBackgroundColor?: string; + + drawerLockMode?: DrawerLockMode; + + keyboardDismissMode?: DrawerKeyboardDismissMode; + + /** + * Called when the drawer is closed. + */ + onDrawerClose?: () => void; + + /** + * Called when the drawer is opened. + */ + onDrawerOpen?: () => void; + + /** + * Called when the status of the drawer changes. + */ + onDrawerStateChanged?: ( + newState: DrawerState, + drawerWillShow: boolean + ) => void; + useNativeAnimations?: boolean; + + drawerType?: DrawerType; + + /** + * Defines how far from the edge of the content view the gesture should + * activate. + */ + edgeWidth?: number; + + minSwipeDistance?: number; + + /** + * When set to true Drawer component will use + * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS + * status bar whenever the drawer is pulled or when its in an "open" state. + */ + hideStatusBar?: boolean; + + /** + * @default 'slide' + * + * Can be used when hideStatusBar is set to true and will select the animation + * used for hiding/showing the status bar. See + * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for + * more details + */ + statusBarAnimation?: StatusBarAnimation; + + /** + * @default black + * + * Color of a semi-transparent overlay to be displayed on top of the content + * view when drawer gets open. A solid color should be used as the opacity is + * added by the Drawer itself and the opacity of the overlay is animated (from + * 0% to 70%). + */ + overlayColor?: string; + + contentContainerStyle?: StyleProp; + + drawerContainerStyle?: StyleProp; + + /** + * Enables two-finger gestures on supported devices, for example iPads with + * trackpads. If not enabled the gesture will require click + drag, with + * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger + * the gesture. + */ + enableTrackpadTwoFingerGesture?: boolean; + + onDrawerSlide?: (position: number) => void; + + onGestureRef?: (ref: PanGestureHandler) => void; + + // implicit `children` prop has been removed in @types/react^18.0.0 + children?: + | React.ReactNode + | ((openValue?: AnimatedInterpolation) => React.ReactNode); + + /** + * @default 'none' + * Defines which userSelect property should be used. + * Values: 'none'|'text'|'auto' + */ + userSelect?: UserSelect; +} + +export type DrawerLayoutState = { + dragX: Animated.Value; + touchX: Animated.Value; + drawerTranslation: Animated.Value; + containerWidth: number; + drawerState: DrawerState; + drawerOpened: boolean; +}; + +export type DrawerMovementOption = { + velocity?: number; + speed?: number; +}; +export default class DrawerLayout extends Component< + DrawerLayoutProps, + DrawerLayoutState +> { + static defaultProps = { + drawerWidth: 200, + drawerPosition: 'left', + useNativeAnimations: true, + drawerType: 'front', + edgeWidth: 20, + minSwipeDistance: 3, + overlayColor: 'rgba(0, 0, 0, 0.7)', + drawerLockMode: 'unlocked', + enableTrackpadTwoFingerGesture: false, + }; + + constructor(props: DrawerLayoutProps) { + super(props); + + const dragX = new Animated.Value(0); + const touchX = new Animated.Value(0); + const drawerTranslation = new Animated.Value(0); + + this.state = { + dragX, + touchX, + drawerTranslation, + containerWidth: 0, + drawerState: IDLE, + drawerOpened: false, + }; + + this.updateAnimatedEvent(props, this.state); + } + + shouldComponentUpdate(props: DrawerLayoutProps, state: DrawerLayoutState) { + if ( + this.props.drawerPosition !== props.drawerPosition || + this.props.drawerWidth !== props.drawerWidth || + this.props.drawerType !== props.drawerType || + this.state.containerWidth !== state.containerWidth + ) { + this.updateAnimatedEvent(props, state); + } + + return true; + } + + private openValue?: AnimatedInterpolation; + private onGestureEvent?: ( + event: GestureEvent + ) => void; + private accessibilityIsModalView = React.createRef(); + private pointerEventsView = React.createRef(); + private panGestureHandler = React.createRef(); + private drawerShown = false; + + static positions = { + Left: 'left', + Right: 'right', + }; + + private updateAnimatedEvent = ( + props: DrawerLayoutProps, + state: DrawerLayoutState + ) => { + // Event definition is based on + const { drawerPosition, drawerWidth, drawerType } = props; + const { + dragX: dragXValue, + touchX: touchXValue, + drawerTranslation, + containerWidth, + } = state; + + let dragX = dragXValue; + let touchX = touchXValue; + + if (drawerPosition !== 'left') { + // Most of the code is written in a way to handle left-side drawer. In + // order to handle right-side drawer the only thing we need to do is to + // reverse events coming from gesture handler in a way they emulate + // left-side drawer gestures. E.g. dragX is simply -dragX, and touchX is + // calulcated by subtracing real touchX from the width of the container + // (such that when touch happens at the right edge the value is simply 0) + dragX = Animated.multiply( + new Animated.Value(-1), + dragXValue + ) as Animated.Value; // TODO(TS): (for all "as" in this file) make sure we can map this + touchX = Animated.add( + new Animated.Value(containerWidth), + Animated.multiply(new Animated.Value(-1), touchXValue) + ) as Animated.Value; // TODO(TS): make sure we can map this; + touchXValue.setValue(containerWidth); + } else { + touchXValue.setValue(0); + } + + // While closing the drawer when user starts gesture outside of its area (in greyed + // out part of the window), we want the drawer to follow only once finger reaches the + // edge of the drawer. + // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by + // dots. The touch gesture starts at '*' and moves left, touch path is indicated by + // an arrow pointing left + // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+ + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........| + // +---------------+ +---------------+ +---------------+ +---------------+ + // + // For the above to work properly we define animated value that will keep + // start position of the gesture. Then we use that value to calculate how + // much we need to subtract from the dragX. If the gesture started on the + // greyed out area we take the distance from the edge of the drawer to the + // start position. Otherwise we don't subtract at all and the drawer be + // pulled back as soon as you start the pan. + // + // This is used only when drawerType is "front" + // + let translationX = dragX; + if (drawerType === 'front') { + const startPositionX = Animated.add( + touchX, + Animated.multiply(new Animated.Value(-1), dragX) + ); + + const dragOffsetFromOnStartPosition = startPositionX.interpolate({ + inputRange: [drawerWidth! - 1, drawerWidth!, drawerWidth! + 1], + outputRange: [0, 0, 1], + }); + translationX = Animated.add( + dragX, + dragOffsetFromOnStartPosition + ) as Animated.Value; // TODO: as above + } + + this.openValue = Animated.add(translationX, drawerTranslation).interpolate({ + inputRange: [0, drawerWidth!], + outputRange: [0, 1], + extrapolate: 'clamp', + }); + + const gestureOptions: { + useNativeDriver: boolean; + // TODO: make sure it is correct + listener?: ( + ev: NativeSyntheticEvent + ) => void; + } = { + useNativeDriver: props.useNativeAnimations!, + }; + + if (this.props.onDrawerSlide) { + gestureOptions.listener = (ev) => { + const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX)); + const position = translationX / this.state.containerWidth; + + this.props.onDrawerSlide?.(position); + }; + } + + this.onGestureEvent = Animated.event( + [{ nativeEvent: { translationX: dragXValue, x: touchXValue } }], + gestureOptions + ); + }; + + private handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => { + this.setState({ containerWidth: nativeEvent.layout.width }); + }; + + private emitStateChanged = ( + newState: DrawerState, + drawerWillShow: boolean + ) => { + this.props.onDrawerStateChanged?.(newState, drawerWillShow); + }; + + private openingHandlerStateChange = ({ + nativeEvent, + }: HandlerStateChangeEvent) => { + if (nativeEvent.oldState === State.ACTIVE) { + this.handleRelease({ nativeEvent }); + } else if (nativeEvent.state === State.ACTIVE) { + this.emitStateChanged(DRAGGING, false); + this.setState({ drawerState: DRAGGING }); + if (this.props.keyboardDismissMode === 'on-drag') { + Keyboard.dismiss(); + } + if (this.props.hideStatusBar) { + StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide'); + } + } + }; + + private onTapHandlerStateChange = ({ + nativeEvent, + }: HandlerStateChangeEvent) => { + if ( + this.drawerShown && + nativeEvent.oldState === State.ACTIVE && + this.props.drawerLockMode !== 'locked-open' + ) { + this.closeDrawer(); + } + }; + + private handleRelease = ({ + nativeEvent, + }: HandlerStateChangeEvent) => { + const { drawerWidth, drawerPosition, drawerType } = this.props; + const { containerWidth } = this.state; + let { translationX: dragX, velocityX, x: touchX } = nativeEvent; + + if (drawerPosition !== 'left') { + // See description in _updateAnimatedEvent about why events are flipped + // for right-side drawer + dragX = -dragX; + touchX = containerWidth - touchX; + velocityX = -velocityX; + } + + const gestureStartX = touchX - dragX; + let dragOffsetBasedOnStart = 0; + + if (drawerType === 'front') { + dragOffsetBasedOnStart = + gestureStartX > drawerWidth! ? gestureStartX - drawerWidth! : 0; + } + + const startOffsetX = + dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth! : 0); + const projOffsetX = startOffsetX + DRAG_TOSS * velocityX; + + const shouldOpen = projOffsetX > drawerWidth! / 2; + + if (shouldOpen) { + this.animateDrawer(startOffsetX, drawerWidth!, velocityX); + } else { + this.animateDrawer(startOffsetX, 0, velocityX); + } + }; + + private updateShowing = (showing: boolean) => { + this.drawerShown = showing; + this.accessibilityIsModalView.current?.setNativeProps({ + accessibilityViewIsModal: showing, + }); + this.pointerEventsView.current?.setNativeProps({ + pointerEvents: showing ? 'auto' : 'none', + }); + const { drawerPosition, minSwipeDistance, edgeWidth } = this.props; + const fromLeft = drawerPosition === 'left'; + // gestureOrientation is 1 if the expected gesture is from left to right and + // -1 otherwise e.g. when drawer is on the left and is closed we expect left + // to right gesture, thus orientation will be 1. + const gestureOrientation = + (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1); + // When drawer is closed we want the hitSlop to be horizontally shorter than + // the container size by the value of SLOP. This will make it only activate + // when gesture happens not further than SLOP away from the edge + const hitSlop = fromLeft + ? { left: 0, width: showing ? undefined : edgeWidth } + : { right: 0, width: showing ? undefined : edgeWidth }; + // @ts-ignore internal API, maybe could be fixed in handler types + this.panGestureHandler.current?.setNativeProps({ + hitSlop, + activeOffsetX: gestureOrientation * minSwipeDistance!, + }); + }; + + private animateDrawer = ( + fromValue: number | null | undefined, + toValue: number, + velocity: number, + speed?: number + ) => { + this.state.dragX.setValue(0); + this.state.touchX.setValue( + this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth + ); + + if (fromValue != null) { + let nextFramePosition = fromValue; + if (this.props.useNativeAnimations) { + // When using native driver, we predict the next position of the + // animation because it takes one frame of a roundtrip to pass RELEASE + // event from native driver to JS before we can start animating. Without + // it, it is more noticable that the frame is dropped. + if (fromValue < toValue && velocity > 0) { + nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue); + } else if (fromValue > toValue && velocity < 0) { + nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue); + } + } + this.state.drawerTranslation.setValue(nextFramePosition); + } + + const willShow = toValue !== 0; + this.updateShowing(willShow); + this.emitStateChanged(SETTLING, willShow); + this.setState({ drawerState: SETTLING }); + if (this.props.hideStatusBar) { + StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide'); + } + Animated.spring(this.state.drawerTranslation, { + velocity, + bounciness: 0, + toValue, + useNativeDriver: this.props.useNativeAnimations!, + speed: speed ?? undefined, + }).start(({ finished }) => { + if (finished) { + this.emitStateChanged(IDLE, willShow); + this.setState({ drawerOpened: willShow }); + if (this.state.drawerState !== DRAGGING) { + // it's possilbe that user started drag while the drawer + // was settling, don't override state in this case + this.setState({ drawerState: IDLE }); + } + if (willShow) { + this.props.onDrawerOpen?.(); + } else { + this.props.onDrawerClose?.(); + } + } + }); + }; + + openDrawer = (options: DrawerMovementOption = {}) => { + this.animateDrawer( + // TODO: decide if it should be null or undefined is the proper value + undefined, + this.props.drawerWidth!, + options.velocity ? options.velocity : 0, + options.speed + ); + + // We need to force the update, otherwise the overlay is not rerendered and + // it would not be clickable + this.forceUpdate(); + }; + + closeDrawer = (options: DrawerMovementOption = {}) => { + // TODO: decide if it should be null or undefined is the proper value + this.animateDrawer( + undefined, + 0, + options.velocity ? options.velocity : 0, + options.speed + ); + + // We need to force the update, otherwise the overlay is not rerendered and + // it would be still clickable + this.forceUpdate(); + }; + + private renderOverlay = () => { + /* Overlay styles */ + invariant(this.openValue, 'should be set'); + let overlayOpacity; + + if (this.state.drawerState !== IDLE) { + overlayOpacity = this.openValue; + } else { + overlayOpacity = this.state.drawerOpened ? 1 : 0; + } + + const dynamicOverlayStyles = { + opacity: overlayOpacity, + backgroundColor: this.props.overlayColor, + }; + + return ( + + + + ); + }; + + private renderDrawer = () => { + const { + drawerBackgroundColor, + drawerWidth, + drawerPosition, + drawerType, + drawerContainerStyle, + contentContainerStyle, + } = this.props; + + const fromLeft = drawerPosition === 'left'; + const drawerSlide = drawerType !== 'back'; + const containerSlide = drawerType !== 'front'; + + // we rely on row and row-reverse flex directions to position the drawer + // properly. Apparently for RTL these are flipped which requires us to use + // the opposite setting for the drawer to appear from left or right + // according to the drawerPosition prop + const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft; + + const dynamicDrawerStyles = { + backgroundColor: drawerBackgroundColor, + width: drawerWidth, + }; + const openValue = this.openValue; + invariant(openValue, 'should be set'); + + let containerStyles; + if (containerSlide) { + const containerTranslateX = openValue.interpolate({ + inputRange: [0, 1], + outputRange: fromLeft ? [0, drawerWidth!] : [0, -drawerWidth!], + extrapolate: 'clamp', + }); + containerStyles = { + transform: [{ translateX: containerTranslateX }], + }; + } + + let drawerTranslateX: number | AnimatedInterpolation = 0; + if (drawerSlide) { + const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!; + if (this.state.drawerState !== IDLE) { + drawerTranslateX = openValue.interpolate({ + inputRange: [0, 1], + outputRange: [closedDrawerOffset, 0], + extrapolate: 'clamp', + }); + } else { + drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset; + } + } + const drawerStyles: { + transform: { translateX: number | AnimatedInterpolation }[]; + flexDirection: 'row-reverse' | 'row'; + } = { + transform: [{ translateX: drawerTranslateX }], + flexDirection: reverseContentDirection ? 'row-reverse' : 'row', + }; + + return ( + + + {typeof this.props.children === 'function' + ? this.props.children(this.openValue) + : this.props.children} + {this.renderOverlay()} + + + + {this.props.renderNavigationView(this.openValue as Animated.Value)} + + + + ); + }; + + private setPanGestureRef = (ref: PanGestureHandler) => { + // TODO(TS): make sure it is OK taken from + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842 + ( + this.panGestureHandler as React.MutableRefObject + ).current = ref; + this.props.onGestureRef?.(ref); + }; + + render() { + const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } = + this.props; + + const fromLeft = drawerPosition === 'left'; + + // gestureOrientation is 1 if the expected gesture is from left to right and + // -1 otherwise e.g. when drawer is on the left and is closed we expect left + // to right gesture, thus orientation will be 1. + const gestureOrientation = + (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1); + + // When drawer is closed we want the hitSlop to be horizontally shorter than + // the container size by the value of SLOP. This will make it only activate + // when gesture happens not further than SLOP away from the edge + const hitSlop = fromLeft + ? { left: 0, width: this.drawerShown ? undefined : edgeWidth } + : { right: 0, width: this.drawerShown ? undefined : edgeWidth }; + + return ( + + {this.renderDrawer()} + + ); + } +} + +const styles = StyleSheet.create({ + drawerContainer: { + ...StyleSheet.absoluteFillObject, + zIndex: 1001, + flexDirection: 'row', + }, + containerInFront: { + ...StyleSheet.absoluteFillObject, + zIndex: 1002, + }, + containerOnBack: { + ...StyleSheet.absoluteFillObject, + }, + main: { + flex: 1, + zIndex: 0, + overflow: 'hidden', + }, + overlay: { + ...StyleSheet.absoluteFillObject, + zIndex: 1000, + }, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureButtons.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureButtons.tsx new file mode 100644 index 00000000..475f68db --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureButtons.tsx @@ -0,0 +1,332 @@ +import * as React from 'react'; +import { + Animated, + Platform, + processColor, + StyleSheet, + StyleProp, + ViewStyle, +} from 'react-native'; + +import createNativeWrapper from '../handlers/createNativeWrapper'; +import GestureHandlerButton from './GestureHandlerButton'; +import { State } from '../State'; + +import { + GestureEvent, + HandlerStateChangeEvent, +} from '../handlers/gestureHandlerCommon'; +import { + NativeViewGestureHandlerPayload, + NativeViewGestureHandlerProps, +} from '../handlers/NativeViewGestureHandler'; + +export interface RawButtonProps extends NativeViewGestureHandlerProps { + /** + * Defines if more than one button could be pressed simultaneously. By default + * set true. + */ + exclusive?: boolean; + // TODO: we should transform props in `createNativeWrapper` + + /** + * Android only. + * + * Defines color of native ripple animation used since API level 21. + */ + rippleColor?: any; // it was present in BaseButtonProps before but is used here in code + + /** + * Android only. + * + * Defines radius of native ripple animation used since API level 21. + */ + rippleRadius?: number | null; + + /** + * Android only. + * + * Set this to true if you want the ripple animation to render outside the view bounds. + */ + borderless?: boolean; + + /** + * Android only. + * + * Defines whether the ripple animation should be drawn on the foreground of the view. + */ + foreground?: boolean; + + /** + * Android only. + * + * Set this to true if you don't want the system to play sound when the button is pressed. + */ + touchSoundDisabled?: boolean; +} + +export interface BaseButtonProps extends RawButtonProps { + /** + * Called when the button gets pressed (analogous to `onPress` in + * `TouchableHighlight` from RN core). + */ + onPress?: (pointerInside: boolean) => void; + + /** + * Called when the button gets pressed and is held for `delayLongPress` + * milliseconds. + */ + onLongPress?: () => void; + + /** + * Called when button changes from inactive to active and vice versa. It + * passes active state as a boolean variable as a first parameter for that + * method. + */ + onActiveStateChange?: (active: boolean) => void; + style?: StyleProp; + testID?: string; + + /** + * Delay, in milliseconds, after which the `onLongPress` callback gets called. + * Defaults to 600. + */ + delayLongPress?: number; +} + +export interface RectButtonProps extends BaseButtonProps { + /** + * Background color that will be dimmed when button is in active state. + */ + underlayColor?: string; + + /** + * iOS only. + * + * Opacity applied to the underlay when button is in active state. + */ + activeOpacity?: number; +} + +export interface BorderlessButtonProps extends BaseButtonProps { + /** + * iOS only. + * + * Opacity applied to the button when it is in an active state. + */ + activeOpacity?: number; +} + +export const RawButton = createNativeWrapper(GestureHandlerButton, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: false, +}); + +export class BaseButton extends React.Component { + static defaultProps = { + delayLongPress: 600, + }; + + private lastActive: boolean; + private longPressTimeout: ReturnType | undefined; + private longPressDetected: boolean; + + constructor(props: BaseButtonProps) { + super(props); + this.lastActive = false; + this.longPressDetected = false; + } + + private handleEvent = ({ + nativeEvent, + }: HandlerStateChangeEvent) => { + const { state, oldState, pointerInside } = nativeEvent; + const active = pointerInside && state === State.ACTIVE; + + if (active !== this.lastActive && this.props.onActiveStateChange) { + this.props.onActiveStateChange(active); + } + + if ( + !this.longPressDetected && + oldState === State.ACTIVE && + state !== State.CANCELLED && + this.lastActive && + this.props.onPress + ) { + this.props.onPress(active); + } + + if ( + !this.lastActive && + // NativeViewGestureHandler sends different events based on platform + state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) && + pointerInside + ) { + this.longPressDetected = false; + if (this.props.onLongPress) { + this.longPressTimeout = setTimeout( + this.onLongPress, + this.props.delayLongPress + ); + } + } else if ( + // cancel longpress timeout if it's set and the finger moved out of the view + state === State.ACTIVE && + !pointerInside && + this.longPressTimeout !== undefined + ) { + clearTimeout(this.longPressTimeout); + this.longPressTimeout = undefined; + } else if ( + // cancel longpress timeout if it's set and the gesture has finished + this.longPressTimeout !== undefined && + (state === State.END || + state === State.CANCELLED || + state === State.FAILED) + ) { + clearTimeout(this.longPressTimeout); + this.longPressTimeout = undefined; + } + + this.lastActive = active; + }; + + private onLongPress = () => { + this.longPressDetected = true; + this.props.onLongPress?.(); + }; + + // Normally, the parent would execute it's handler first, then forward the + // event to listeners. However, here our handler is virtually only forwarding + // events to listeners, so we reverse the order to keep the proper order of + // the callbacks (from "raw" ones to "processed"). + private onHandlerStateChange = ( + e: HandlerStateChangeEvent + ) => { + this.props.onHandlerStateChange?.(e); + this.handleEvent(e); + }; + + private onGestureEvent = ( + e: GestureEvent + ) => { + this.props.onGestureEvent?.(e); + this.handleEvent( + e as HandlerStateChangeEvent + ); // TODO: maybe it is not correct + }; + + render() { + const { rippleColor, ...rest } = this.props; + + return ( + + ); + } +} + +const AnimatedBaseButton = Animated.createAnimatedComponent(BaseButton); + +const btnStyles = StyleSheet.create({ + underlay: { + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + top: 0, + }, +}); + +export class RectButton extends React.Component { + static defaultProps = { + activeOpacity: 0.105, + underlayColor: 'black', + }; + + private opacity: Animated.Value; + + constructor(props: RectButtonProps) { + super(props); + this.opacity = new Animated.Value(0); + } + + private onActiveStateChange = (active: boolean) => { + if (Platform.OS !== 'android') { + this.opacity.setValue(active ? this.props.activeOpacity! : 0); + } + + this.props.onActiveStateChange?.(active); + }; + + render() { + const { children, style, ...rest } = this.props; + + const resolvedStyle = StyleSheet.flatten(style ?? {}); + + return ( + + + {children} + + ); + } +} + +export class BorderlessButton extends React.Component { + static defaultProps = { + activeOpacity: 0.3, + borderless: true, + }; + + private opacity: Animated.Value; + + constructor(props: BorderlessButtonProps) { + super(props); + this.opacity = new Animated.Value(1); + } + + private onActiveStateChange = (active: boolean) => { + if (Platform.OS !== 'android') { + this.opacity.setValue(active ? this.props.activeOpacity! : 1); + } + + this.props.onActiveStateChange?.(active); + }; + + render() { + const { children, style, ...rest } = this.props; + + return ( + + {children} + + ); + } +} + +export { default as PureNativeButton } from './GestureHandlerButton'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.tsx new file mode 100644 index 00000000..2a551b05 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.tsx @@ -0,0 +1,148 @@ +import * as React from 'react'; +import { + PropsWithChildren, + ForwardedRef, + RefAttributes, + ReactElement, +} from 'react'; +import { + ScrollView as RNScrollView, + ScrollViewProps as RNScrollViewProps, + Switch as RNSwitch, + SwitchProps as RNSwitchProps, + TextInput as RNTextInput, + TextInputProps as RNTextInputProps, + DrawerLayoutAndroid as RNDrawerLayoutAndroid, + DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps, + FlatList as RNFlatList, + FlatListProps as RNFlatListProps, + RefreshControl as RNRefreshControl, +} from 'react-native'; + +import createNativeWrapper from '../handlers/createNativeWrapper'; + +import { + NativeViewGestureHandlerProps, + nativeViewProps, +} from '../handlers/NativeViewGestureHandler'; + +import { toArray } from '../utils'; + +export const RefreshControl = createNativeWrapper(RNRefreshControl, { + disallowInterruption: true, + shouldCancelWhenOutside: false, +}); +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type RefreshControl = typeof RefreshControl & RNRefreshControl; + +const GHScrollView = createNativeWrapper>( + RNScrollView, + { + disallowInterruption: true, + shouldCancelWhenOutside: false, + } +); +export const ScrollView = React.forwardRef< + RNScrollView, + RNScrollViewProps & NativeViewGestureHandlerProps +>((props, ref) => { + const refreshControlGestureRef = React.useRef(null); + const { refreshControl, waitFor, ...rest } = props; + + return ( + + ); +}); +// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457 +// include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them. +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type ScrollView = typeof GHScrollView & RNScrollView; + +export const Switch = createNativeWrapper(RNSwitch, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: true, + disallowInterruption: true, +}); +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type Switch = typeof Switch & RNSwitch; + +export const TextInput = createNativeWrapper(RNTextInput); +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type TextInput = typeof TextInput & RNTextInput; + +export const DrawerLayoutAndroid = createNativeWrapper< + PropsWithChildren +>(RNDrawerLayoutAndroid, { disallowInterruption: true }); +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid & + RNDrawerLayoutAndroid; + +export const FlatList = React.forwardRef((props, ref) => { + const refreshControlGestureRef = React.useRef(null); + + const { waitFor, refreshControl, ...rest } = props; + + const flatListProps = {}; + const scrollViewProps = {}; + for (const [propName, value] of Object.entries(rest)) { + // https://github.com/microsoft/TypeScript/issues/26255 + if ((nativeViewProps as readonly string[]).includes(propName)) { + // @ts-ignore - this function cannot have generic type so we have to ignore this error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + scrollViewProps[propName] = value; + } else { + // @ts-ignore - this function cannot have generic type so we have to ignore this error + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + flatListProps[propName] = value; + } + } + + return ( + // @ts-ignore - this function cannot have generic type so we have to ignore this error + ( + + )} + // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref + refreshControl={ + refreshControl + ? React.cloneElement(refreshControl, { + // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS + ref: refreshControlGestureRef, + }) + : undefined + } + /> + ); +}) as ( + props: PropsWithChildren< + RNFlatListProps & + RefAttributes> & + NativeViewGestureHandlerProps + >, + ref: ForwardedRef> +) => ReactElement | null; +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type FlatList = typeof FlatList & RNFlatList; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.web.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.web.tsx new file mode 100644 index 00000000..c7ac5955 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureComponents.web.tsx @@ -0,0 +1,42 @@ +import * as React from 'react'; +import { + DrawerLayoutAndroid as RNDrawerLayoutAndroid, + FlatList as RNFlatList, + Switch as RNSwitch, + TextInput as RNTextInput, + ScrollView as RNScrollView, + FlatListProps, + View, +} from 'react-native'; + +import createNativeWrapper from '../handlers/createNativeWrapper'; + +export const ScrollView = createNativeWrapper(RNScrollView, { + disallowInterruption: false, +}); + +export const Switch = createNativeWrapper(RNSwitch, { + shouldCancelWhenOutside: false, + shouldActivateOnStart: true, + disallowInterruption: true, +}); +export const TextInput = createNativeWrapper(RNTextInput); +export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, { + disallowInterruption: true, +}); +// @ts-ignore -- TODO(TS) to investigate if it's needed +DrawerLayoutAndroid.positions = RNDrawerLayoutAndroid.positions; +// RefreshControl is implemented as a functional component, rendering a View +// NativeViewGestureHandler needs to set a ref on its child, which cannot be done +// on functional components +export const RefreshControl = createNativeWrapper(View); + +export const FlatList = React.forwardRef( + (props: FlatListProps, ref: any) => ( + } + /> + ) +); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.tsx new file mode 100644 index 00000000..aab837ea --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.tsx @@ -0,0 +1,10 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +import { HostComponent, requireNativeComponent } from 'react-native'; +import { RawButtonProps } from './GestureButtons'; +import { shouldUseCodegenNativeComponent } from '../utils'; + +const RNGestureHandlerButtonNativeComponent = shouldUseCodegenNativeComponent() + ? require('../fabric/RNGestureHandlerButtonNativeComponent').default + : requireNativeComponent('RNGestureHandlerButton'); + +export default RNGestureHandlerButtonNativeComponent as HostComponent; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.web.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.web.tsx new file mode 100644 index 00000000..4126c7cb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.web.tsx @@ -0,0 +1,6 @@ +import * as React from 'react'; +import { View } from 'react-native'; + +export default React.forwardRef((props, ref) => ( + +)); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/Swipeable.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/Swipeable.tsx new file mode 100644 index 00000000..d171e613 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/Swipeable.tsx @@ -0,0 +1,525 @@ +// Similarily to the DrawerLayout component this deserves to be put in a +// separate repo. Although, keeping it here for the time being will allow us to +// move faster and fix possible issues quicker + +import * as React from 'react'; +import { Component } from 'react'; +import { + Animated, + StyleSheet, + View, + I18nManager, + LayoutChangeEvent, + StyleProp, + ViewStyle, +} from 'react-native'; + +import { + GestureEvent, + HandlerStateChangeEvent, +} from '../handlers/gestureHandlerCommon'; +import { + PanGestureHandler, + PanGestureHandlerEventPayload, + PanGestureHandlerProps, +} from '../handlers/PanGestureHandler'; +import { + TapGestureHandler, + TapGestureHandlerEventPayload, +} from '../handlers/TapGestureHandler'; +import { State } from '../State'; + +const DRAG_TOSS = 0.05; + +type SwipeableExcludes = Exclude< + keyof PanGestureHandlerProps, + 'onGestureEvent' | 'onHandlerStateChange' +>; + +// Animated.AnimatedInterpolation has been converted to a generic type +// in @types/react-native 0.70. This way we can maintain compatibility +// with all versions of @types/react-native +type AnimatedInterpolation = ReturnType; + +export interface SwipeableProps + extends Pick { + /** + * Enables two-finger gestures on supported devices, for example iPads with + * trackpads. If not enabled the gesture will require click + drag, with + * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger + * the gesture. + */ + enableTrackpadTwoFingerGesture?: boolean; + + /** + * Specifies how much the visual interaction will be delayed compared to the + * gesture distance. e.g. value of 1 will indicate that the swipeable panel + * should exactly follow the gesture, 2 means it is going to be two times + * "slower". + */ + friction?: number; + + /** + * Distance from the left edge at which released panel will animate to the + * open state (or the open panel will animate into the closed state). By + * default it's a half of the panel's width. + */ + leftThreshold?: number; + + /** + * Distance from the right edge at which released panel will animate to the + * open state (or the open panel will animate into the closed state). By + * default it's a half of the panel's width. + */ + rightThreshold?: number; + + /** + * Value indicating if the swipeable panel can be pulled further than the left + * actions panel's width. It is set to true by default as long as the left + * panel render method is present. + */ + overshootLeft?: boolean; + + /** + * Value indicating if the swipeable panel can be pulled further than the + * right actions panel's width. It is set to true by default as long as the + * right panel render method is present. + */ + overshootRight?: boolean; + + /** + * Specifies how much the visual interaction will be delayed compared to the + * gesture distance at overshoot. Default value is 1, it mean no friction, for + * a native feel, try 8 or above. + */ + overshootFriction?: number; + + /** + * @deprecated Use `direction` argument of onSwipeableOpen() + * + * Called when left action panel gets open. + */ + onSwipeableLeftOpen?: () => void; + + /** + * @deprecated Use `direction` argument of onSwipeableOpen() + * + * Called when right action panel gets open. + */ + onSwipeableRightOpen?: () => void; + + /** + * Called when action panel gets open (either right or left). + */ + onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void; + + /** + * Called when action panel is closed. + */ + onSwipeableClose?: ( + direction: 'left' | 'right', + swipeable: Swipeable + ) => void; + + /** + * @deprecated Use `direction` argument of onSwipeableWillOpen() + * + * Called when left action panel starts animating on open. + */ + onSwipeableLeftWillOpen?: () => void; + + /** + * @deprecated Use `direction` argument of onSwipeableWillOpen() + * + * Called when right action panel starts animating on open. + */ + onSwipeableRightWillOpen?: () => void; + + /** + * Called when action panel starts animating on open (either right or left). + */ + onSwipeableWillOpen?: (direction: 'left' | 'right') => void; + + /** + * Called when action panel starts animating on close. + */ + onSwipeableWillClose?: (direction: 'left' | 'right') => void; + + /** + * + * This map describes the values to use as inputRange for extra interpolation: + * AnimatedValue: [startValue, endValue] + * + * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +] + * + * To support `rtl` flexbox layouts use `flexDirection` styling. + * */ + renderLeftActions?: ( + progressAnimatedValue: AnimatedInterpolation, + dragAnimatedValue: AnimatedInterpolation + ) => React.ReactNode; + /** + * + * This map describes the values to use as inputRange for extra interpolation: + * AnimatedValue: [startValue, endValue] + * + * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -] + * + * To support `rtl` flexbox layouts use `flexDirection` styling. + * */ + renderRightActions?: ( + progressAnimatedValue: AnimatedInterpolation, + dragAnimatedValue: AnimatedInterpolation, + swipeable: Swipeable + ) => React.ReactNode; + + useNativeAnimations?: boolean; + + animationOptions?: Record; + + /** + * Style object for the container (`Animated.View`), for example to override + * `overflow: 'hidden'`. + */ + containerStyle?: StyleProp; + + /** + * Style object for the children container (`Animated.View`), for example to + * apply `flex: 1` + */ + childrenContainerStyle?: StyleProp; +} + +type SwipeableState = { + dragX: Animated.Value; + rowTranslation: Animated.Value; + rowState: number; + leftWidth?: number; + rightOffset?: number; + rowWidth?: number; +}; + +export default class Swipeable extends Component< + SwipeableProps, + SwipeableState +> { + static defaultProps = { + friction: 1, + overshootFriction: 1, + useNativeAnimations: true, + }; + + constructor(props: SwipeableProps) { + super(props); + const dragX = new Animated.Value(0); + this.state = { + dragX, + rowTranslation: new Animated.Value(0), + rowState: 0, + leftWidth: undefined, + rightOffset: undefined, + rowWidth: undefined, + }; + this.updateAnimatedEvent(props, this.state); + + this.onGestureEvent = Animated.event( + [{ nativeEvent: { translationX: dragX } }], + { useNativeDriver: props.useNativeAnimations! } + ); + } + + shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) { + if ( + this.props.friction !== props.friction || + this.props.overshootLeft !== props.overshootLeft || + this.props.overshootRight !== props.overshootRight || + this.props.overshootFriction !== props.overshootFriction || + this.state.leftWidth !== state.leftWidth || + this.state.rightOffset !== state.rightOffset || + this.state.rowWidth !== state.rowWidth + ) { + this.updateAnimatedEvent(props, state); + } + + return true; + } + + private onGestureEvent?: ( + event: GestureEvent + ) => void; + private transX?: AnimatedInterpolation; + private showLeftAction?: AnimatedInterpolation | Animated.Value; + private leftActionTranslate?: AnimatedInterpolation; + private showRightAction?: AnimatedInterpolation | Animated.Value; + private rightActionTranslate?: AnimatedInterpolation; + + private updateAnimatedEvent = ( + props: SwipeableProps, + state: SwipeableState + ) => { + const { friction, overshootFriction } = props; + const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state; + const { rightOffset = rowWidth } = state; + const rightWidth = Math.max(0, rowWidth - rightOffset); + + const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } = + props; + + const transX = Animated.add( + rowTranslation, + dragX.interpolate({ + inputRange: [0, friction!], + outputRange: [0, 1], + }) + ).interpolate({ + inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1], + outputRange: [ + -rightWidth - (overshootRight ? 1 / overshootFriction! : 0), + -rightWidth, + leftWidth, + leftWidth + (overshootLeft ? 1 / overshootFriction! : 0), + ], + }); + this.transX = transX; + this.showLeftAction = + leftWidth > 0 + ? transX.interpolate({ + inputRange: [-1, 0, leftWidth], + outputRange: [0, 0, 1], + }) + : new Animated.Value(0); + this.leftActionTranslate = this.showLeftAction.interpolate({ + inputRange: [0, Number.MIN_VALUE], + outputRange: [-10000, 0], + extrapolate: 'clamp', + }); + this.showRightAction = + rightWidth > 0 + ? transX.interpolate({ + inputRange: [-rightWidth, 0, 1], + outputRange: [1, 0, 0], + }) + : new Animated.Value(0); + this.rightActionTranslate = this.showRightAction.interpolate({ + inputRange: [0, Number.MIN_VALUE], + outputRange: [-10000, 0], + extrapolate: 'clamp', + }); + }; + + private onTapHandlerStateChange = ({ + nativeEvent, + }: HandlerStateChangeEvent) => { + if (nativeEvent.oldState === State.ACTIVE) { + this.close(); + } + }; + + private onHandlerStateChange = ( + ev: HandlerStateChangeEvent + ) => { + if (ev.nativeEvent.oldState === State.ACTIVE) { + this.handleRelease(ev); + } + }; + + private handleRelease = ( + ev: HandlerStateChangeEvent + ) => { + const { velocityX, translationX: dragX } = ev.nativeEvent; + const { leftWidth = 0, rowWidth = 0, rowState } = this.state; + const { rightOffset = rowWidth } = this.state; + const rightWidth = rowWidth - rightOffset; + const { + friction, + leftThreshold = leftWidth / 2, + rightThreshold = rightWidth / 2, + } = this.props; + + const startOffsetX = this.currentOffset() + dragX / friction!; + const translationX = (dragX + DRAG_TOSS * velocityX) / friction!; + + let toValue = 0; + if (rowState === 0) { + if (translationX > leftThreshold) { + toValue = leftWidth; + } else if (translationX < -rightThreshold) { + toValue = -rightWidth; + } + } else if (rowState === 1) { + // swiped to left + if (translationX > -leftThreshold) { + toValue = leftWidth; + } + } else { + // swiped to right + if (translationX < rightThreshold) { + toValue = -rightWidth; + } + } + + this.animateRow(startOffsetX, toValue, velocityX / friction!); + }; + + private animateRow = ( + fromValue: number, + toValue: number, + velocityX?: + | number + | { + x: number; + y: number; + } + ) => { + const { dragX, rowTranslation } = this.state; + dragX.setValue(0); + rowTranslation.setValue(fromValue); + + this.setState({ rowState: Math.sign(toValue) }); + Animated.spring(rowTranslation, { + restSpeedThreshold: 1.7, + restDisplacementThreshold: 0.4, + velocity: velocityX, + bounciness: 0, + toValue, + useNativeDriver: this.props.useNativeAnimations!, + ...this.props.animationOptions, + }).start(({ finished }) => { + if (finished) { + if (toValue > 0) { + this.props.onSwipeableLeftOpen?.(); + this.props.onSwipeableOpen?.('left', this); + } else if (toValue < 0) { + this.props.onSwipeableRightOpen?.(); + this.props.onSwipeableOpen?.('right', this); + } else { + const closingDirection = fromValue > 0 ? 'left' : 'right'; + this.props.onSwipeableClose?.(closingDirection, this); + } + } + }); + if (toValue > 0) { + this.props.onSwipeableLeftWillOpen?.(); + this.props.onSwipeableWillOpen?.('left'); + } else if (toValue < 0) { + this.props.onSwipeableRightWillOpen?.(); + this.props.onSwipeableWillOpen?.('right'); + } else { + const closingDirection = fromValue > 0 ? 'left' : 'right'; + this.props.onSwipeableWillClose?.(closingDirection); + } + }; + + private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => { + this.setState({ rowWidth: nativeEvent.layout.width }); + }; + + private currentOffset = () => { + const { leftWidth = 0, rowWidth = 0, rowState } = this.state; + const { rightOffset = rowWidth } = this.state; + const rightWidth = rowWidth - rightOffset; + if (rowState === 1) { + return leftWidth; + } else if (rowState === -1) { + return -rightWidth; + } + return 0; + }; + + close = () => { + this.animateRow(this.currentOffset(), 0); + }; + + openLeft = () => { + const { leftWidth = 0 } = this.state; + this.animateRow(this.currentOffset(), leftWidth); + }; + + openRight = () => { + const { rowWidth = 0 } = this.state; + const { rightOffset = rowWidth } = this.state; + const rightWidth = rowWidth - rightOffset; + this.animateRow(this.currentOffset(), -rightWidth); + }; + + render() { + const { rowState } = this.state; + const { children, renderLeftActions, renderRightActions } = this.props; + + const left = renderLeftActions && ( + + {renderLeftActions(this.showLeftAction!, this.transX!)} + + this.setState({ leftWidth: nativeEvent.layout.x }) + } + /> + + ); + + const right = renderRightActions && ( + + {renderRightActions(this.showRightAction!, this.transX!, this)} + + this.setState({ rightOffset: nativeEvent.layout.x }) + } + /> + + ); + + return ( + + + {left} + {right} + + + {children} + + + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + overflow: 'hidden', + }, + leftActions: { + ...StyleSheet.absoluteFillObject, + flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row', + }, + rightActions: { + ...StyleSheet.absoluteFillObject, + flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse', + }, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/GenericTouchable.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/GenericTouchable.tsx new file mode 100644 index 00000000..0f566655 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/GenericTouchable.tsx @@ -0,0 +1,289 @@ +import * as React from 'react'; +import { Component } from 'react'; +import { + Animated, + Platform, + StyleProp, + ViewStyle, + TouchableWithoutFeedbackProps, +} from 'react-native'; + +import { State } from '../../State'; +import { BaseButton } from '../GestureButtons'; + +import { + GestureEvent, + HandlerStateChangeEvent, +} from '../../handlers/gestureHandlerCommon'; +import { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler'; +import { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android'; + +/** + * Each touchable is a states' machine which preforms transitions. + * On very beginning (and on the very end or recognition) touchable is + * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger + * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition + * finishes in UNDETERMINED state. + */ +export const TOUCHABLE_STATE = { + UNDETERMINED: 0, + BEGAN: 1, + MOVED_OUTSIDE: 2, +} as const; + +type TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE]; + +export interface GenericTouchableProps extends TouchableWithoutFeedbackProps { + // Decided to drop not used fields from RN's implementation. + // e.g. onBlur and onFocus as well as deprecated props. - TODO: this comment may be unuseful in this moment + + // TODO: in RN these events get native event parameter, which prolly could be used in our implementation too + onPress?: () => void; + onPressIn?: () => void; + onPressOut?: () => void; + onLongPress?: () => void; + + nativeID?: string; + shouldActivateOnStart?: boolean; + disallowInterruption?: boolean; + + containerStyle?: StyleProp; +} + +interface InternalProps { + extraButtonProps: TouchableNativeFeedbackExtraProps; + onStateChange?: (oldState: TouchableState, newState: TouchableState) => void; +} + +// TODO: maybe can be better +// TODO: all clearTimeout have ! added, maybe they shouldn't ? +type Timeout = ReturnType | null | undefined; + +/** + * GenericTouchable is not intented to be used as it is. + * Should be treated as a source for the rest of touchables + */ + +export default class GenericTouchable extends Component< + GenericTouchableProps & InternalProps +> { + static defaultProps = { + delayLongPress: 600, + extraButtonProps: { + rippleColor: 'transparent', + exclusive: true, + }, + }; + + // timeout handlers + pressInTimeout: Timeout; + pressOutTimeout: Timeout; + longPressTimeout: Timeout; + + // This flag is required since recognition of longPress implies not-invoking onPress + longPressDetected = false; + + pointerInside = true; + + // State of touchable + STATE: TouchableState = TOUCHABLE_STATE.UNDETERMINED; + + // handlePressIn in called on first touch on traveling inside component. + // Handles state transition with delay. + handlePressIn() { + if (this.props.delayPressIn) { + this.pressInTimeout = setTimeout(() => { + this.moveToState(TOUCHABLE_STATE.BEGAN); + this.pressInTimeout = null; + }, this.props.delayPressIn); + } else { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + if (this.props.onLongPress) { + const time = + (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0); + this.longPressTimeout = setTimeout(this.onLongPressDetected, time); + } + } + // handleMoveOutside in called on traveling outside component. + // Handles state transition with delay. + handleMoveOutside() { + if (this.props.delayPressOut) { + this.pressOutTimeout = + this.pressOutTimeout || + setTimeout(() => { + this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE); + this.pressOutTimeout = null; + }, this.props.delayPressOut); + } else { + this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE); + } + } + + // handleGoToUndetermined transits to UNDETERMINED state with proper delay + handleGoToUndetermined() { + clearTimeout(this.pressOutTimeout!); // TODO: maybe it can be undefined + if (this.props.delayPressOut) { + this.pressOutTimeout = setTimeout(() => { + if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + this.pressOutTimeout = null; + }, this.props.delayPressOut); + } else { + if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) { + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + } + } + + componentDidMount() { + this.reset(); + } + // reset timeout to prevent memory leaks. + reset() { + this.longPressDetected = false; + this.pointerInside = true; + clearTimeout(this.pressInTimeout!); + clearTimeout(this.pressOutTimeout!); + clearTimeout(this.longPressTimeout!); + this.pressOutTimeout = null; + this.longPressTimeout = null; + this.pressInTimeout = null; + } + + // All states' transitions are defined here. + moveToState(newState: TouchableState) { + if (newState === this.STATE) { + // Ignore dummy transitions + return; + } + if (newState === TOUCHABLE_STATE.BEGAN) { + // First touch and moving inside + this.props.onPressIn?.(); + } else if (newState === TOUCHABLE_STATE.MOVED_OUTSIDE) { + // Moving outside + this.props.onPressOut?.(); + } else if (newState === TOUCHABLE_STATE.UNDETERMINED) { + // Need to reset each time on transition to UNDETERMINED + this.reset(); + if (this.STATE === TOUCHABLE_STATE.BEGAN) { + // ... and if it happens inside button. + this.props.onPressOut?.(); + } + } + // Finally call lister (used by subclasses) + this.props.onStateChange?.(this.STATE, newState); + // ... and make transition. + this.STATE = newState; + } + + onGestureEvent = ({ + nativeEvent: { pointerInside }, + }: GestureEvent) => { + if (this.pointerInside !== pointerInside) { + if (pointerInside) { + this.onMoveIn(); + } else { + this.onMoveOut(); + } + } + this.pointerInside = pointerInside; + }; + + onHandlerStateChange = ({ + nativeEvent, + }: HandlerStateChangeEvent) => { + const { state } = nativeEvent; + if (state === State.CANCELLED || state === State.FAILED) { + // Need to handle case with external cancellation (e.g. by ScrollView) + this.moveToState(TOUCHABLE_STATE.UNDETERMINED); + } else if ( + // This platform check is an implication of slightly different behavior of handlers on different platform. + // And Android "Active" state is achieving on first move of a finger, not on press in. + // On iOS event on "Began" is not delivered. + state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) && + this.STATE === TOUCHABLE_STATE.UNDETERMINED + ) { + // Moving inside requires + this.handlePressIn(); + } else if (state === State.END) { + const shouldCallOnPress = + !this.longPressDetected && + this.STATE !== TOUCHABLE_STATE.MOVED_OUTSIDE && + this.pressOutTimeout === null; + this.handleGoToUndetermined(); + if (shouldCallOnPress) { + // Calls only inside component whether no long press was called previously + this.props.onPress?.(); + } + } + }; + + onLongPressDetected = () => { + this.longPressDetected = true; + // checked for in the caller of `onLongPressDetected`, but better to check twice + this.props.onLongPress?.(); + }; + + componentWillUnmount() { + // to prevent memory leaks + this.reset(); + } + + onMoveIn() { + if (this.STATE === TOUCHABLE_STATE.MOVED_OUTSIDE) { + // This call is not throttled with delays (like in RN's implementation). + this.moveToState(TOUCHABLE_STATE.BEGAN); + } + } + + onMoveOut() { + // long press should no longer be detected + clearTimeout(this.longPressTimeout!); + this.longPressTimeout = null; + if (this.STATE === TOUCHABLE_STATE.BEGAN) { + this.handleMoveOutside(); + } + } + + render() { + const coreProps = { + accessible: this.props.accessible !== false, + accessibilityLabel: this.props.accessibilityLabel, + accessibilityHint: this.props.accessibilityHint, + accessibilityRole: this.props.accessibilityRole, + // TODO: check if changed to no 's' correctly, also removed 2 props that are no longer available: `accessibilityComponentType` and `accessibilityTraits`, + // would be good to check if it is ok for sure, see: https://github.com/facebook/react-native/issues/24016 + accessibilityState: this.props.accessibilityState, + accessibilityActions: this.props.accessibilityActions, + onAccessibilityAction: this.props.onAccessibilityAction, + nativeID: this.props.nativeID, + onLayout: this.props.onLayout, + hitSlop: this.props.hitSlop, + }; + + return ( + + + {this.props.children} + + + ); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableHighlight.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableHighlight.tsx new file mode 100644 index 00000000..c3bacc13 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableHighlight.tsx @@ -0,0 +1,112 @@ +import * as React from 'react'; +import { Component } from 'react'; +import GenericTouchable, { + GenericTouchableProps, + TOUCHABLE_STATE, +} from './GenericTouchable'; +import { + StyleSheet, + View, + TouchableHighlightProps, + ColorValue, + ViewProps, +} from 'react-native'; + +interface State { + extraChildStyle: null | { + opacity?: number; + }; + extraUnderlayStyle: null | { + backgroundColor?: ColorValue; + }; +} + +/** + * TouchableHighlight follows RN's implementation + */ +export default class TouchableHighlight extends Component< + TouchableHighlightProps & GenericTouchableProps, + State +> { + static defaultProps = { + ...GenericTouchable.defaultProps, + activeOpacity: 0.85, + delayPressOut: 100, + underlayColor: 'black', + }; + + constructor(props: TouchableHighlightProps & GenericTouchableProps) { + super(props); + this.state = { + extraChildStyle: null, + extraUnderlayStyle: null, + }; + } + + // Copied from RN + showUnderlay = () => { + if (!this.hasPressHandler()) { + return; + } + this.setState({ + extraChildStyle: { + opacity: this.props.activeOpacity, + }, + extraUnderlayStyle: { + backgroundColor: this.props.underlayColor, + }, + }); + this.props.onShowUnderlay?.(); + }; + + hasPressHandler = () => + this.props.onPress || + this.props.onPressIn || + this.props.onPressOut || + this.props.onLongPress; + + hideUnderlay = () => { + this.setState({ + extraChildStyle: null, + extraUnderlayStyle: null, + }); + this.props.onHideUnderlay?.(); + }; + + renderChildren() { + if (!this.props.children) { + return ; + } + + const child = React.Children.only( + this.props.children + ) as React.ReactElement; // TODO: not sure if OK but fixes error + return React.cloneElement(child, { + style: StyleSheet.compose(child.props.style, this.state.extraChildStyle), + }); + } + + onStateChange = (_from: number, to: number) => { + if (to === TOUCHABLE_STATE.BEGAN) { + this.showUnderlay(); + } else if ( + to === TOUCHABLE_STATE.UNDETERMINED || + to === TOUCHABLE_STATE.MOVED_OUTSIDE + ) { + this.hideUnderlay(); + } + }; + + render() { + const { style = {}, ...rest } = this.props; + const { extraUnderlayStyle } = this.state; + return ( + + {this.renderChildren()} + + ); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.android.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.android.tsx new file mode 100644 index 00000000..69b92096 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.android.tsx @@ -0,0 +1,89 @@ +import { + Platform, + TouchableNativeFeedbackProps, + ColorValue, +} from 'react-native'; +import * as React from 'react'; +import { Component } from 'react'; +import GenericTouchable, { GenericTouchableProps } from './GenericTouchable'; + +export type TouchableNativeFeedbackExtraProps = { + borderless?: boolean; + rippleColor?: number | null; + rippleRadius?: number | null; + foreground?: boolean; +}; + +/** + * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback. + * There's small difference with handling long press ripple since RN's implementation calls + * ripple animation via bridge. This solution leaves all animations' handling for native components so + * it follows native behaviours. + */ +export default class TouchableNativeFeedback extends Component< + TouchableNativeFeedbackProps & GenericTouchableProps +> { + static defaultProps = { + ...GenericTouchable.defaultProps, + useForeground: true, + extraButtonProps: { + // Disable hiding ripple on Android + rippleColor: null, + }, + }; + + // could be taken as RNTouchableNativeFeedback.SelectableBackground etc. but the API may change + static SelectableBackground = (rippleRadius?: number) => ({ + type: 'ThemeAttrAndroid', + // I added `attribute` prop to clone the implementation of RN and be able to use only 2 types + attribute: 'selectableItemBackground', + rippleRadius, + }); + static SelectableBackgroundBorderless = (rippleRadius?: number) => ({ + type: 'ThemeAttrAndroid', + attribute: 'selectableItemBackgroundBorderless', + rippleRadius, + }); + static Ripple = ( + color: ColorValue, + borderless: boolean, + rippleRadius?: number + ) => ({ + type: 'RippleAndroid', + color, + borderless, + rippleRadius, + }); + + static canUseNativeForeground = () => Platform.Version >= 23; + + getExtraButtonProps() { + const extraProps: TouchableNativeFeedbackExtraProps = {}; + const { background } = this.props; + if (background) { + // I changed type values to match those used in RN + // TODO(TS): check if it works the same as previous implementation - looks like it works the same as RN component, so it should be ok + if (background.type === 'RippleAndroid') { + extraProps['borderless'] = background.borderless; + extraProps['rippleColor'] = background.color; + } else if (background.type === 'ThemeAttrAndroid') { + extraProps['borderless'] = + background.attribute === 'selectableItemBackgroundBorderless'; + } + // I moved it from above since it should be available in all options + extraProps['rippleRadius'] = background.rippleRadius; + } + extraProps['foreground'] = this.props.useForeground; + return extraProps; + } + render() { + const { style = {}, ...rest } = this.props; + return ( + + ); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.tsx new file mode 100644 index 00000000..ba409595 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.tsx @@ -0,0 +1,3 @@ +import { TouchableNativeFeedback } from 'react-native'; + +export default TouchableNativeFeedback; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableOpacity.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableOpacity.tsx new file mode 100644 index 00000000..7e1c9efb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableOpacity.tsx @@ -0,0 +1,74 @@ +import { + Animated, + Easing, + StyleSheet, + View, + TouchableOpacityProps, +} from 'react-native'; +import GenericTouchable, { + TOUCHABLE_STATE, + GenericTouchableProps, +} from './GenericTouchable'; +import * as React from 'react'; +import { Component } from 'react'; + +interface GHTouchableOpacityProps { + useNativeAnimations?: boolean; +} + +/** + * TouchableOpacity bases on timing animation which has been used in RN's core + */ +export default class TouchableOpacity extends Component< + TouchableOpacityProps & GenericTouchableProps & GHTouchableOpacityProps +> { + static defaultProps = { + ...GenericTouchable.defaultProps, + activeOpacity: 0.2, + }; + + // opacity is 1 one by default but could be overwritten + getChildStyleOpacityWithDefault = () => { + const childStyle = StyleSheet.flatten(this.props.style) || {}; + return childStyle.opacity == null ? 1 : childStyle.opacity; + }; + + opacity = new Animated.Value(this.getChildStyleOpacityWithDefault()); + + setOpacityTo = (value: number, duration: number) => { + Animated.timing(this.opacity, { + toValue: value, + duration: duration, + easing: Easing.inOut(Easing.quad), + useNativeDriver: this.props.useNativeAnimations ?? true, + }).start(); + }; + + onStateChange = (_from: number, to: number) => { + if (to === TOUCHABLE_STATE.BEGAN) { + this.setOpacityTo(this.props.activeOpacity!, 0); + } else if ( + to === TOUCHABLE_STATE.UNDETERMINED || + to === TOUCHABLE_STATE.MOVED_OUTSIDE + ) { + this.setOpacityTo(this.getChildStyleOpacityWithDefault(), 150); + } + }; + + render() { + const { style = {}, ...rest } = this.props; + return ( + + {this.props.children ? this.props.children : } + + ); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableWithoutFeedback.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableWithoutFeedback.tsx new file mode 100644 index 00000000..7ece5e65 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/TouchableWithoutFeedback.tsx @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { PropsWithChildren } from 'react'; +import GenericTouchable, { GenericTouchableProps } from './GenericTouchable'; + +const TouchableWithoutFeedback = React.forwardRef< + GenericTouchable, + PropsWithChildren +>((props, ref) => ); + +TouchableWithoutFeedback.defaultProps = GenericTouchable.defaultProps; + +export default TouchableWithoutFeedback; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/index.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/index.ts new file mode 100644 index 00000000..fa9ae12b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/components/touchables/index.ts @@ -0,0 +1,4 @@ +export { default as TouchableNativeFeedback } from './TouchableNativeFeedback'; +export { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback'; +export { default as TouchableOpacity } from './TouchableOpacity'; +export { default as TouchableHighlight } from './TouchableHighlight'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerButtonNativeComponent.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerButtonNativeComponent.ts new file mode 100644 index 00000000..496561eb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerButtonNativeComponent.ts @@ -0,0 +1,18 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +import type { + Int32, + WithDefault, +} from 'react-native/Libraries/Types/CodegenTypes'; +import type { ViewProps, ColorValue } from 'react-native'; + +interface NativeProps extends ViewProps { + exclusive?: WithDefault; + foreground?: boolean; + borderless?: boolean; + enabled?: WithDefault; + rippleColor?: ColorValue; + rippleRadius?: Int32; + touchSoundDisabled?: WithDefault; +} + +export default codegenNativeComponent('RNGestureHandlerButton'); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerRootViewNativeComponent.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerRootViewNativeComponent.ts new file mode 100644 index 00000000..e92061f1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/fabric/RNGestureHandlerRootViewNativeComponent.ts @@ -0,0 +1,6 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +import type { ViewProps } from 'react-native'; + +interface NativeProps extends ViewProps {} + +export default codegenNativeComponent('RNGestureHandlerRootView'); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/gestureHandlerRootHOC.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/gestureHandlerRootHOC.tsx new file mode 100644 index 00000000..d3cba7c4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/gestureHandlerRootHOC.tsx @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { StyleSheet, StyleProp, ViewStyle } from 'react-native'; +import hoistNonReactStatics from 'hoist-non-react-statics'; +import GestureHandlerRootView from './GestureHandlerRootView'; + +export default function gestureHandlerRootHOC< + P extends JSX.IntrinsicAttributes +>( + Component: React.ComponentType

, + containerStyles?: StyleProp +): React.ComponentType

{ + function Wrapper(props: P) { + return ( + + + + ); + } + + Wrapper.displayName = `gestureHandlerRootHOC(${ + Component.displayName || Component.name + })`; + + // @ts-ignore - hoistNonReactStatics uses old version of @types/react + hoistNonReactStatics(Wrapper, Component); + + return Wrapper; +} + +const styles = StyleSheet.create({ + container: { flex: 1 }, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.ts new file mode 100644 index 00000000..188ee484 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.ts @@ -0,0 +1,22 @@ +// Used by GestureDetector (unsupported on web at the moment) to check whether the +// attached view may get flattened on Fabric. This implementation causes errors +// on web due to the static resolution of `require` statements by webpack breaking +// the conditional importing. Solved by making .web file. +let findHostInstance_DEPRECATED: (ref: any) => void; + +export function getShadowNodeFromRef(ref: any) { + // load findHostInstance_DEPRECATED lazily because it may not be available before render + if (findHostInstance_DEPRECATED === undefined) { + try { + findHostInstance_DEPRECATED = + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED; + } catch (e) { + findHostInstance_DEPRECATED = (_ref: any) => null; + } + } + + // @ts-ignore Fabric + return findHostInstance_DEPRECATED(ref)._internalInstanceHandle.stateNode + .node; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.web.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.web.ts new file mode 100644 index 00000000..af1cf978 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/getShadowNodeFromRef.web.ts @@ -0,0 +1,7 @@ +// Used by GestureDetector (unsupported on web at the moment) to check whether the +// attached view may get flattened on Fabric. Original implementation causes errors +// on web due to the static resolution of `require` statements by webpack breaking +// the conditional importing. +export function getShadowNodeFromRef(_ref: any) { + return null; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/FlingGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/FlingGestureHandler.ts new file mode 100644 index 00000000..88e0d552 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/FlingGestureHandler.ts @@ -0,0 +1,59 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export const flingGestureHandlerProps = [ + 'numberOfPointers', + 'direction', +] as const; + +export type FlingGestureHandlerEventPayload = { + x: number; + y: number; + absoluteX: number; + absoluteY: number; +}; +export interface FlingGestureConfig { + /** + * Expressed allowed direction of movement. It's possible to pass one or many + * directions in one parameter: + * + * ```js + * direction={Directions.RIGHT | Directions.LEFT} + * ``` + * + * or + * + * ```js + * direction={Directions.DOWN} + * ``` + */ + direction?: number; + + /** + * Determine exact number of points required to handle the fling gesture. + */ + numberOfPointers?: number; +} + +export interface FlingGestureHandlerProps + extends BaseGestureHandlerProps, + FlingGestureConfig {} + +export const flingHandlerName = 'FlingGestureHandler'; + +export type FlingGestureHandler = typeof FlingGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const FlingGestureHandler = createHandler< + FlingGestureHandlerProps, + FlingGestureHandlerEventPayload +>({ + name: flingHandlerName, + allowedProps: [ + ...baseGestureHandlerProps, + ...flingGestureHandlerProps, + ] as const, + config: {}, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/ForceTouchGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/ForceTouchGestureHandler.ts new file mode 100644 index 00000000..0de04e92 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/ForceTouchGestureHandler.ts @@ -0,0 +1,90 @@ +import React, { PropsWithChildren } from 'react'; +import { tagMessage } from '../utils'; +import PlatformConstants from '../PlatformConstants'; +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export const forceTouchGestureHandlerProps = [ + 'minForce', + 'maxForce', + 'feedbackOnActivation', +] as const; + +// implicit `children` prop has been removed in @types/react^18.0.0 +class ForceTouchFallback extends React.Component> { + static forceTouchAvailable = false; + componentDidMount() { + console.warn( + tagMessage( + 'ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase' + ) + ); + } + render() { + return this.props.children; + } +} + +export type ForceTouchGestureHandlerEventPayload = { + x: number; + y: number; + absoluteX: number; + absoluteY: number; + + /** + * The pressure of a touch. + */ + force: number; +}; + +export interface ForceTouchGestureConfig { + /** + * + * A minimal pressure that is required before handler can activate. Should be a + * value from range `[0.0, 1.0]`. Default is `0.2`. + */ + minForce?: number; + + /** + * A maximal pressure that could be applied for handler. If the pressure is + * greater, handler fails. Should be a value from range `[0.0, 1.0]`. + */ + maxForce?: number; + + /** + * Boolean value defining if haptic feedback has to be performed on + * activation. + */ + feedbackOnActivation?: boolean; +} + +export interface ForceTouchGestureHandlerProps + extends BaseGestureHandlerProps, + ForceTouchGestureConfig {} + +export type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & { + forceTouchAvailable: boolean; +}; + +export const forceTouchHandlerName = 'ForceTouchGestureHandler'; + +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const ForceTouchGestureHandler = PlatformConstants?.forceTouchAvailable + ? createHandler< + ForceTouchGestureHandlerProps, + ForceTouchGestureHandlerEventPayload + >({ + name: forceTouchHandlerName, + allowedProps: [ + ...baseGestureHandlerProps, + ...forceTouchGestureHandlerProps, + ] as const, + config: {}, + }) + : ForceTouchFallback; + +(ForceTouchGestureHandler as ForceTouchGestureHandler).forceTouchAvailable = + PlatformConstants?.forceTouchAvailable || false; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/LongPressGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/LongPressGestureHandler.ts new file mode 100644 index 00000000..1cfaa7f8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/LongPressGestureHandler.ts @@ -0,0 +1,88 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export const longPressGestureHandlerProps = [ + 'minDurationMs', + 'maxDist', +] as const; + +export type LongPressGestureHandlerEventPayload = { + /** + * X coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the view attached to the handler. + */ + x: number; + + /** + * Y coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the view attached to the handler. + */ + y: number; + + /** + * X coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the window. It is recommended to use `absoluteX` instead of + * `x` in cases when the view attached to the handler can be transformed as an + * effect of the gesture. + */ + absoluteX: number; + + /** + * Y coordinate, expressed in points, of the current position of the pointer + * (finger or a leading pointer when there are multiple fingers placed) + * relative to the window. It is recommended to use `absoluteY` instead of + * `y` in cases when the view attached to the handler can be transformed as an + * effect of the gesture. + */ + absoluteY: number; + + /** + * Duration of the long press (time since the start of the event), expressed + * in milliseconds. + */ + duration: number; +}; + +export interface LongPressGestureConfig { + /** + * Minimum time, expressed in milliseconds, that a finger must remain pressed on + * the corresponding view. The default value is 500. + */ + minDurationMs?: number; + + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel during a long press gesture. If the finger travels + * further than the defined distance and the handler hasn't yet activated, it + * will fail to recognize the gesture. The default value is 10. + */ + maxDist?: number; +} + +export interface LongPressGestureHandlerProps + extends BaseGestureHandlerProps, + LongPressGestureConfig {} + +export const longPressHandlerName = 'LongPressGestureHandler'; + +export type LongPressGestureHandler = typeof LongPressGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const LongPressGestureHandler = createHandler< + LongPressGestureHandlerProps, + LongPressGestureHandlerEventPayload +>({ + name: longPressHandlerName, + allowedProps: [ + ...baseGestureHandlerProps, + ...longPressGestureHandlerProps, + ] as const, + config: { + shouldCancelWhenOutside: true, + }, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/NativeViewGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/NativeViewGestureHandler.ts new file mode 100644 index 00000000..acba7908 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/NativeViewGestureHandler.ts @@ -0,0 +1,55 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export const nativeViewGestureHandlerProps = [ + 'shouldActivateOnStart', + 'disallowInterruption', +] as const; + +export interface NativeViewGestureConfig { + /** + * Android only. + * + * Determines whether the handler should check for an existing touch event on + * instantiation. + */ + shouldActivateOnStart?: boolean; + + /** + * When `true`, cancels all other gesture handlers when this + * `NativeViewGestureHandler` receives an `ACTIVE` state event. + */ + disallowInterruption?: boolean; +} + +export interface NativeViewGestureHandlerProps + extends BaseGestureHandlerProps, + NativeViewGestureConfig {} + +export type NativeViewGestureHandlerPayload = { + /** + * True if gesture was performed inside of containing view, false otherwise. + */ + pointerInside: boolean; +}; + +export const nativeViewProps = [ + ...baseGestureHandlerProps, + ...nativeViewGestureHandlerProps, +] as const; + +export const nativeViewHandlerName = 'NativeViewGestureHandler'; + +export type NativeViewGestureHandler = typeof NativeViewGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const NativeViewGestureHandler = createHandler< + NativeViewGestureHandlerProps, + NativeViewGestureHandlerPayload +>({ + name: nativeViewHandlerName, + allowedProps: nativeViewProps, + config: {}, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PanGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PanGestureHandler.ts new file mode 100644 index 00000000..c596535f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PanGestureHandler.ts @@ -0,0 +1,325 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export const panGestureHandlerProps = [ + 'activeOffsetY', + 'activeOffsetX', + 'failOffsetY', + 'failOffsetX', + 'minDist', + 'minVelocity', + 'minVelocityX', + 'minVelocityY', + 'minPointers', + 'maxPointers', + 'avgTouches', + 'enableTrackpadTwoFingerGesture', + 'activateAfterLongPress', +] as const; + +export const panGestureHandlerCustomNativeProps = [ + 'activeOffsetYStart', + 'activeOffsetYEnd', + 'activeOffsetXStart', + 'activeOffsetXEnd', + 'failOffsetYStart', + 'failOffsetYEnd', + 'failOffsetXStart', + 'failOffsetXEnd', +] as const; + +export type PanGestureHandlerEventPayload = { + /** + * X coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the view + * attached to the handler. Expressed in point units. + */ + x: number; + + /** + * Y coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the view + * attached to the handler. Expressed in point units. + */ + y: number; + + /** + * X coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the window. + * The value is expressed in point units. It is recommended to use it instead + * of `x` in cases when the original view can be transformed as an effect of + * the gesture. + */ + absoluteX: number; + + /** + * Y coordinate of the current position of the pointer (finger or a leading + * pointer when there are multiple fingers placed) relative to the window. + * The value is expressed in point units. It is recommended to use it instead + * of `y` in cases when the original view can be transformed as an + * effect of the gesture. + */ + absoluteY: number; + + /** + * Translation of the pan gesture along X axis accumulated over the time of + * the gesture. The value is expressed in the point units. + */ + translationX: number; + + /** + * Translation of the pan gesture along Y axis accumulated over the time of + * the gesture. The value is expressed in the point units. + */ + translationY: number; + + /** + * Velocity of the pan gesture along the X axis in the current moment. The + * value is expressed in point units per second. + */ + velocityX: number; + + /** + * Velocity of the pan gesture along the Y axis in the current moment. The + * value is expressed in point units per second. + */ + velocityY: number; +}; + +interface CommonPanProperties { + /** + * Minimum distance the finger (or multiple finger) need to travel before the + * handler activates. Expressed in points. + */ + minDist?: number; + + /** + * Android only. + */ + avgTouches?: boolean; + + /** + * Enables two-finger gestures on supported devices, for example iPads with + * trackpads. If not enabled the gesture will require click + drag, with + * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger + * the gesture. + */ + enableTrackpadTwoFingerGesture?: boolean; + + /** + * A number of fingers that is required to be placed before handler can + * activate. Should be a higher or equal to 0 integer. + */ + minPointers?: number; + + /** + * When the given number of fingers is placed on the screen and handler hasn't + * yet activated it will fail recognizing the gesture. Should be a higher or + * equal to 0 integer. + */ + maxPointers?: number; + + minVelocity?: number; + minVelocityX?: number; + minVelocityY?: number; + activateAfterLongPress?: number; +} + +export interface PanGestureConfig extends CommonPanProperties { + activeOffsetYStart?: number; + activeOffsetYEnd?: number; + activeOffsetXStart?: number; + activeOffsetXEnd?: number; + failOffsetYStart?: number; + failOffsetYEnd?: number; + failOffsetXStart?: number; + failOffsetXEnd?: number; +} + +export interface PanGestureHandlerProps + extends BaseGestureHandlerProps, + CommonPanProperties { + /** + * Range along X axis (in points) where fingers travels without activation of + * handler. Moving outside of this range implies activation of handler. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + activeOffsetY?: number | number[]; + + /** + * Range along X axis (in points) where fingers travels without activation of + * handler. Moving outside of this range implies activation of handler. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + activeOffsetX?: number | number[]; + + /** + * When the finger moves outside this range (in points) along Y axis and + * handler hasn't yet activated it will fail recognizing the gesture. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + failOffsetY?: number | number[]; + + /** + * When the finger moves outside this range (in points) along X axis and + * handler hasn't yet activated it will fail recognizing the gesture. Range + * can be given as an array or a single number. If range is set as an array, + * first value must be lower or equal to 0, a the second one higher or equal + * to 0. If only one number `p` is given a range of `(-inf, p)` will be used + * if `p` is higher or equal to 0 and `(-p, inf)` otherwise. + */ + failOffsetX?: number | number[]; +} + +export const panHandlerName = 'PanGestureHandler'; + +export type PanGestureHandler = typeof PanGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const PanGestureHandler = createHandler< + PanGestureHandlerProps, + PanGestureHandlerEventPayload +>({ + name: panHandlerName, + allowedProps: [ + ...baseGestureHandlerProps, + ...panGestureHandlerProps, + ] as const, + config: {}, + transformProps: managePanProps, + customNativeProps: panGestureHandlerCustomNativeProps, +}); + +function validatePanGestureHandlerProps(props: PanGestureHandlerProps) { + if ( + Array.isArray(props.activeOffsetX) && + (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0) + ) { + throw new Error( + `First element of activeOffsetX should be negative, a the second one should be positive` + ); + } + + if ( + Array.isArray(props.activeOffsetY) && + (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0) + ) { + throw new Error( + `First element of activeOffsetY should be negative, a the second one should be positive` + ); + } + + if ( + Array.isArray(props.failOffsetX) && + (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0) + ) { + throw new Error( + `First element of failOffsetX should be negative, a the second one should be positive` + ); + } + + if ( + Array.isArray(props.failOffsetY) && + (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0) + ) { + throw new Error( + `First element of failOffsetY should be negative, a the second one should be positive` + ); + } + + if (props.minDist && (props.failOffsetX || props.failOffsetY)) { + throw new Error( + `It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead` + ); + } + + if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) { + throw new Error( + `It is not supported to use minDist with activeOffsetX or activeOffsetY` + ); + } +} + +function transformPanGestureHandlerProps(props: PanGestureHandlerProps) { + type InternalPanGHKeys = + | 'activeOffsetXStart' + | 'activeOffsetXEnd' + | 'failOffsetXStart' + | 'failOffsetXEnd' + | 'activeOffsetYStart' + | 'activeOffsetYEnd' + | 'failOffsetYStart' + | 'failOffsetYEnd'; + type PanGestureHandlerInternalProps = PanGestureHandlerProps & + Partial>; + + const res: PanGestureHandlerInternalProps = { ...props }; + + if (props.activeOffsetX !== undefined) { + delete res.activeOffsetX; + if (Array.isArray(props.activeOffsetX)) { + res.activeOffsetXStart = props.activeOffsetX[0]; + res.activeOffsetXEnd = props.activeOffsetX[1]; + } else if (props.activeOffsetX < 0) { + res.activeOffsetXStart = props.activeOffsetX; + } else { + res.activeOffsetXEnd = props.activeOffsetX; + } + } + + if (props.activeOffsetY !== undefined) { + delete res.activeOffsetY; + if (Array.isArray(props.activeOffsetY)) { + res.activeOffsetYStart = props.activeOffsetY[0]; + res.activeOffsetYEnd = props.activeOffsetY[1]; + } else if (props.activeOffsetY < 0) { + res.activeOffsetYStart = props.activeOffsetY; + } else { + res.activeOffsetYEnd = props.activeOffsetY; + } + } + + if (props.failOffsetX !== undefined) { + delete res.failOffsetX; + if (Array.isArray(props.failOffsetX)) { + res.failOffsetXStart = props.failOffsetX[0]; + res.failOffsetXEnd = props.failOffsetX[1]; + } else if (props.failOffsetX < 0) { + res.failOffsetXStart = props.failOffsetX; + } else { + res.failOffsetXEnd = props.failOffsetX; + } + } + + if (props.failOffsetY !== undefined) { + delete res.failOffsetY; + if (Array.isArray(props.failOffsetY)) { + res.failOffsetYStart = props.failOffsetY[0]; + res.failOffsetYEnd = props.failOffsetY[1]; + } else if (props.failOffsetY < 0) { + res.failOffsetYStart = props.failOffsetY; + } else { + res.failOffsetYEnd = props.failOffsetY; + } + } + + return res; +} + +export function managePanProps(props: PanGestureHandlerProps) { + if (__DEV__) { + validatePanGestureHandlerProps(props); + } + return transformPanGestureHandlerProps(props); +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PinchGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PinchGestureHandler.ts new file mode 100644 index 00000000..e588cbc2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PinchGestureHandler.ts @@ -0,0 +1,48 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export type PinchGestureHandlerEventPayload = { + /** + * The scale factor relative to the points of the two touches in screen + * coordinates. + */ + scale: number; + + /** + * Position expressed in points along X axis of center anchor point of + * gesture. + */ + focalX: number; + + /** + * Position expressed in points along Y axis of center anchor point of + * gesture. + */ + focalY: number; + + /** + * + * Velocity of the pan gesture the current moment. The value is expressed in + * point units per second. + */ + velocity: number; +}; + +export interface PinchGestureHandlerProps + extends BaseGestureHandlerProps {} + +export const pinchHandlerName = 'PinchGestureHandler'; + +export type PinchGestureHandler = typeof PinchGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const PinchGestureHandler = createHandler< + PinchGestureHandlerProps, + PinchGestureHandlerEventPayload +>({ + name: pinchHandlerName, + allowedProps: baseGestureHandlerProps, + config: {}, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.tsx new file mode 100644 index 00000000..44f8bcdb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.tsx @@ -0,0 +1,2 @@ +// @ts-ignore it's not exported so we need to import it from path +export { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.web.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.web.tsx new file mode 100644 index 00000000..73e56c2b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/PressabilityDebugView.web.tsx @@ -0,0 +1,4 @@ +// PressabilityDebugView is not implemented in react-native-web +export function PressabilityDebugView() { + return null; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/RotationGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/RotationGestureHandler.ts new file mode 100644 index 00000000..2a62135b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/RotationGestureHandler.ts @@ -0,0 +1,48 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export type RotationGestureHandlerEventPayload = { + /** + * Amount rotated, expressed in radians, from the gesture's focal point + * (anchor). + */ + rotation: number; + + /** + * X coordinate, expressed in points, of the gesture's central focal point + * (anchor). + */ + anchorX: number; + + /** + * Y coordinate, expressed in points, of the gesture's central focal point + * (anchor). + */ + anchorY: number; + + /** + * + * Instantaneous velocity, expressed in point units per second, of the + * gesture. + */ + velocity: number; +}; + +export interface RotationGestureHandlerProps + extends BaseGestureHandlerProps {} + +export const rotationHandlerName = 'RotationGestureHandler'; + +export type RotationGestureHandler = typeof RotationGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const RotationGestureHandler = createHandler< + RotationGestureHandlerProps, + RotationGestureHandlerEventPayload +>({ + name: rotationHandlerName, + allowedProps: baseGestureHandlerProps, + config: {}, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/TapGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/TapGestureHandler.ts new file mode 100644 index 00000000..9ea3a98b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/TapGestureHandler.ts @@ -0,0 +1,94 @@ +import createHandler from './createHandler'; +import { + BaseGestureHandlerProps, + baseGestureHandlerProps, +} from './gestureHandlerCommon'; + +export const tapGestureHandlerProps = [ + 'maxDurationMs', + 'maxDelayMs', + 'numberOfTaps', + 'maxDeltaX', + 'maxDeltaY', + 'maxDist', + 'minPointers', +] as const; + +export type TapGestureHandlerEventPayload = { + x: number; + y: number; + absoluteX: number; + absoluteY: number; +}; +export interface TapGestureConfig { + /** + * Minimum number of pointers (fingers) required to be placed before the + * handler activates. Should be a positive integer. + * The default value is 1. + */ + minPointers?: number; + + /** + * Maximum time, expressed in milliseconds, that defines how fast a finger + * must be released after a touch. The default value is 500. + */ + maxDurationMs?: number; + + /** + * Maximum time, expressed in milliseconds, that can pass before the next tap + * if many taps are required. The default value is 500. + */ + maxDelayMs?: number; + + /** + * Number of tap gestures required to activate the handler. The default value + * is 1. + */ + numberOfTaps?: number; + + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel along the X axis during a tap gesture. If the finger + * travels further than the defined distance along the X axis and the handler + * hasn't yet activated, it will fail to recognize the gesture. + */ + maxDeltaX?: number; + + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel along the Y axis during a tap gesture. If the finger + * travels further than the defined distance along the Y axis and the handler + * hasn't yet activated, it will fail to recognize the gesture. + */ + maxDeltaY?: number; + + /** + * Maximum distance, expressed in points, that defines how far the finger is + * allowed to travel during a tap gesture. If the finger travels further than + * the defined distance and the handler hasn't yet + * activated, it will fail to recognize the gesture. + */ + maxDist?: number; +} + +export interface TapGestureHandlerProps + extends BaseGestureHandlerProps, + TapGestureConfig {} + +export const tapHandlerName = 'TapGestureHandler'; + +export type TapGestureHandler = typeof TapGestureHandler; +// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file +export const TapGestureHandler = createHandler< + TapGestureHandlerProps, + TapGestureHandlerEventPayload +>({ + name: tapHandlerName, + allowedProps: [ + ...baseGestureHandlerProps, + ...tapGestureHandlerProps, + ] as const, + config: { + shouldCancelWhenOutside: true, + }, +}); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createHandler.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createHandler.tsx new file mode 100644 index 00000000..2e0d07c0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createHandler.tsx @@ -0,0 +1,519 @@ +import * as React from 'react'; +import { + Platform, + UIManager, + DeviceEventEmitter, + EmitterSubscription, +} from 'react-native'; +// @ts-ignore - it isn't typed by TS & don't have definitelyTyped types +import deepEqual from 'lodash/isEqual'; +import RNGestureHandlerModule from '../RNGestureHandlerModule'; +import type RNGestureHandlerModuleWeb from '../RNGestureHandlerModule.web'; +import { State } from '../State'; +import { + handlerIDToTag, + getNextHandlerTag, + registerOldGestureHandler, +} from './handlersRegistry'; + +import { + BaseGestureHandlerProps, + filterConfig, + GestureEvent, + HandlerStateChangeEvent, + findNodeHandle, + scheduleFlushOperations, +} from './gestureHandlerCommon'; +import { ValueOf } from '../typeUtils'; +import { isFabric, isJestEnv, tagMessage } from '../utils'; +import { ActionType } from '../ActionType'; +import { PressabilityDebugView } from './PressabilityDebugView'; + +const UIManagerAny = UIManager as any; + +const customGHEventsConfigFabricAndroid = { + topOnGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' }, + topOnGestureHandlerStateChange: { + registrationName: 'onGestureHandlerStateChange', + }, +}; + +const customGHEventsConfig = { + onGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' }, + onGestureHandlerStateChange: { + registrationName: 'onGestureHandlerStateChange', + }, + + // When using React Native Gesture Handler for Animated.event with useNativeDriver: true + // on Android with Fabric enabled, the native part still sends the native events to JS + // but prefixed with "top". We cannot simply rename the events above so they are prefixed + // with "top" instead of "on" because in such case Animated.events would not be registered. + // That's why we need to register another pair of event names. + // The incoming events will be queued but never handled. + // Without this piece of code below, you'll get the following JS error: + // Unsupported top level event type "topOnGestureHandlerEvent" dispatched + ...(isFabric() && + Platform.OS === 'android' && + customGHEventsConfigFabricAndroid), +}; + +// Add gesture specific events to genericDirectEventTypes object exported from UIManager +// native module. +// Once new event types are registered with react it is possible to dispatch these +// events to all kind of native views. +UIManagerAny.genericDirectEventTypes = { + ...UIManagerAny.genericDirectEventTypes, + ...customGHEventsConfig, +}; +// In newer versions of RN the `genericDirectEventTypes` is located in the object +// returned by UIManager.getViewManagerConfig('getConstants') or in older RN UIManager.getConstants(), we need to add it there as well to make +// it compatible with RN 61+ +const UIManagerConstants = + UIManagerAny.getViewManagerConfig?.('getConstants') ?? + UIManagerAny.getConstants?.(); + +if (UIManagerConstants) { + UIManagerConstants.genericDirectEventTypes = { + ...UIManagerConstants.genericDirectEventTypes, + ...customGHEventsConfig, + }; +} + +// Wrap JS responder calls and notify gesture handler manager +const { + setJSResponder: oldSetJSResponder = () => { + //no operation + }, + clearJSResponder: oldClearJSResponder = () => { + //no operation + }, +} = UIManagerAny; +UIManagerAny.setJSResponder = (tag: number, blockNativeResponder: boolean) => { + RNGestureHandlerModule.handleSetJSResponder(tag, blockNativeResponder); + oldSetJSResponder(tag, blockNativeResponder); +}; +UIManagerAny.clearJSResponder = () => { + RNGestureHandlerModule.handleClearJSResponder(); + oldClearJSResponder(); +}; + +let allowTouches = true; +const DEV_ON_ANDROID = __DEV__ && Platform.OS === 'android'; +// Toggled inspector blocks touch events in order to allow inspecting on Android +// This needs to be a global variable in order to set initial state for `allowTouches` property in Handler component +if (DEV_ON_ANDROID) { + DeviceEventEmitter.addListener('toggleElementInspector', () => { + allowTouches = !allowTouches; + }); +} + +type HandlerProps> = Readonly< + React.PropsWithChildren> +>; +function hasUnresolvedRefs>( + props: HandlerProps +) { + // TODO(TS) - add type for extract arg + const extract = (refs: any | any[]) => { + if (!Array.isArray(refs)) { + return refs && refs.current === null; + } + return refs.some((r) => r && r.current === null); + }; + return extract(props['simultaneousHandlers']) || extract(props['waitFor']); +} + +const stateToPropMappings = { + [State.UNDETERMINED]: undefined, + [State.BEGAN]: 'onBegan', + [State.FAILED]: 'onFailed', + [State.CANCELLED]: 'onCancelled', + [State.ACTIVE]: 'onActivated', + [State.END]: 'onEnded', +} as const; + +type CreateHandlerArgs> = + Readonly<{ + name: string; + allowedProps: Readonly[]>; + config: Readonly>; + transformProps?: (props: HandlerPropsT) => HandlerPropsT; + customNativeProps?: Readonly; + }>; + +// TODO(TS) fix event types +type InternalEventHandlers = { + onGestureHandlerEvent?: (event: any) => void; + onGestureHandlerStateChange?: (event: any) => void; +}; + +const UNRESOLVED_REFS_RETRY_LIMIT = 1; + +// TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties. +export default function createHandler< + T extends BaseGestureHandlerProps, + U extends Record +>({ + name, + allowedProps = [], + config = {}, + transformProps, + customNativeProps = [], +}: CreateHandlerArgs): React.ComponentType> { + interface HandlerState { + allowTouches: boolean; + } + class Handler extends React.Component< + T & InternalEventHandlers, + HandlerState + > { + static displayName = name; + + private handlerTag: number; + private config: Record; + private propsRef: React.MutableRefObject; + private viewNode: any; + private viewTag?: number; + private updateEnqueued: ReturnType | null = null; + private inspectorToggleListener?: EmitterSubscription; + + constructor(props: T & InternalEventHandlers) { + super(props); + this.handlerTag = getNextHandlerTag(); + this.config = {}; + this.propsRef = React.createRef(); + this.state = { allowTouches }; + if (props.id) { + if (handlerIDToTag[props.id] !== undefined) { + throw new Error(`Handler with ID "${props.id}" already registered`); + } + handlerIDToTag[props.id] = this.handlerTag; + } + } + + componentDidMount() { + const props: HandlerProps = this.props; + + if (DEV_ON_ANDROID) { + this.inspectorToggleListener = DeviceEventEmitter.addListener( + 'toggleElementInspector', + () => { + this.setState((_) => ({ allowTouches })); + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + } + ); + } + if (hasUnresolvedRefs(props)) { + // If there are unresolved refs (e.g. ".current" has not yet been set) + // passed as `simultaneousHandlers` or `waitFor`, we enqueue a call to + // _update method that will try to update native handler props using + // setImmediate. This makes it so update() function gets called after all + // react components are mounted and we expect the missing ref object to + // be resolved by then. + this.updateEnqueued = setImmediate(() => { + this.updateEnqueued = null; + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + }); + } + + this.createGestureHandler( + filterConfig( + transformProps ? transformProps(this.props) : this.props, + [...allowedProps, ...customNativeProps], + config + ) + ); + + this.attachGestureHandler(findNodeHandle(this.viewNode) as number); // TODO(TS) - check if this can be null + } + + componentDidUpdate() { + const viewTag = findNodeHandle(this.viewNode); + if (this.viewTag !== viewTag) { + this.attachGestureHandler(viewTag as number); // TODO(TS) - check interaction between _viewTag & findNodeHandle + } + this.update(UNRESOLVED_REFS_RETRY_LIMIT); + } + + componentWillUnmount() { + this.inspectorToggleListener?.remove(); + RNGestureHandlerModule.dropGestureHandler(this.handlerTag); + scheduleFlushOperations(); + if (this.updateEnqueued) { + clearImmediate(this.updateEnqueued); + } + // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context + const handlerID: string | undefined = this.props.id; + if (handlerID) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete handlerIDToTag[handlerID]; + } + } + + private onGestureHandlerEvent = (event: GestureEvent) => { + if (event.nativeEvent.handlerTag === this.handlerTag) { + if (typeof this.props.onGestureEvent === 'function') { + this.props.onGestureEvent?.(event); + } + } else { + this.props.onGestureHandlerEvent?.(event); + } + }; + + // TODO(TS) - make sure this is right type for event + private onGestureHandlerStateChange = ( + event: HandlerStateChangeEvent + ) => { + if (event.nativeEvent.handlerTag === this.handlerTag) { + if (typeof this.props.onHandlerStateChange === 'function') { + this.props.onHandlerStateChange?.(event); + } + + const state: ValueOf = event.nativeEvent.state; + const stateEventName = stateToPropMappings[state]; + const eventHandler = stateEventName && this.props[stateEventName]; + if (eventHandler && typeof eventHandler === 'function') { + eventHandler(event); + } + } else { + this.props.onGestureHandlerStateChange?.(event); + } + }; + + private refHandler = (node: any) => { + this.viewNode = node; + + const child = React.Children.only(this.props.children); + // TODO(TS) fix ref type + const { ref }: any = child; + if (ref !== null) { + if (typeof ref === 'function') { + ref(node); + } else { + ref.current = node; + } + } + }; + + private createGestureHandler = ( + newConfig: Readonly> + ) => { + this.config = newConfig; + + RNGestureHandlerModule.createGestureHandler( + name, + this.handlerTag, + newConfig + ); + }; + + private attachGestureHandler = (newViewTag: number) => { + this.viewTag = newViewTag; + + if (Platform.OS === 'web') { + // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch + ( + RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler + )( + this.handlerTag, + newViewTag, + ActionType.JS_FUNCTION_OLD_API, // ignored on web + this.propsRef + ); + } else { + registerOldGestureHandler(this.handlerTag, { + onGestureEvent: this.onGestureHandlerEvent, + onGestureStateChange: this.onGestureHandlerStateChange, + }); + + const actionType = (() => { + if ( + this.props?.onGestureEvent && + 'current' in this.props.onGestureEvent + ) { + // Reanimated worklet + return ActionType.REANIMATED_WORKLET; + } else if ( + this.props?.onGestureEvent && + '__isNative' in this.props.onGestureEvent + ) { + // Animated.event with useNativeDriver: true + return ActionType.NATIVE_ANIMATED_EVENT; + } else { + // JS callback or Animated.event with useNativeDriver: false + return ActionType.JS_FUNCTION_OLD_API; + } + })(); + + RNGestureHandlerModule.attachGestureHandler( + this.handlerTag, + newViewTag, + actionType + ); + } + + scheduleFlushOperations(); + }; + + private updateGestureHandler = ( + newConfig: Readonly> + ) => { + this.config = newConfig; + + RNGestureHandlerModule.updateGestureHandler(this.handlerTag, newConfig); + scheduleFlushOperations(); + }; + + private update(remainingTries: number) { + const props: HandlerProps = this.props; + + // When ref is set via a function i.e. `ref={(r) => refObject.current = r}` instead of + // `ref={refObject}` it's possible that it won't be resolved in time. Seems like trying + // again is easy enough fix. + if (hasUnresolvedRefs(props) && remainingTries > 0) { + this.updateEnqueued = setImmediate(() => { + this.updateEnqueued = null; + this.update(remainingTries - 1); + }); + } else { + const newConfig = filterConfig( + transformProps ? transformProps(this.props) : this.props, + [...allowedProps, ...customNativeProps], + config + ); + if (!deepEqual(this.config, newConfig)) { + this.updateGestureHandler(newConfig); + } + } + } + + setNativeProps(updates: any) { + const mergedProps = { ...this.props, ...updates }; + const newConfig = filterConfig( + transformProps ? transformProps(mergedProps) : mergedProps, + [...allowedProps, ...customNativeProps], + config + ); + this.updateGestureHandler(newConfig); + } + + render() { + let gestureEventHandler = this.onGestureHandlerEvent; + // Another instance of https://github.com/microsoft/TypeScript/issues/13995 + type OnGestureEventHandlers = { + onGestureEvent?: BaseGestureHandlerProps['onGestureEvent']; + onGestureHandlerEvent?: InternalEventHandlers['onGestureHandlerEvent']; + }; + const { onGestureEvent, onGestureHandlerEvent }: OnGestureEventHandlers = + this.props; + if (onGestureEvent && typeof onGestureEvent !== 'function') { + // If it's not a method it should be an native Animated.event + // object. We set it directly as the handler for the view + // In this case nested handlers are not going to be supported + if (onGestureHandlerEvent) { + throw new Error( + 'Nesting touch handlers with native animated driver is not supported yet' + ); + } + gestureEventHandler = onGestureEvent; + } else { + if ( + onGestureHandlerEvent && + typeof onGestureHandlerEvent !== 'function' + ) { + throw new Error( + 'Nesting touch handlers with native animated driver is not supported yet' + ); + } + } + + let gestureStateEventHandler = this.onGestureHandlerStateChange; + // Another instance of https://github.com/microsoft/TypeScript/issues/13995 + type OnGestureStateChangeHandlers = { + onHandlerStateChange?: BaseGestureHandlerProps['onHandlerStateChange']; + onGestureHandlerStateChange?: InternalEventHandlers['onGestureHandlerStateChange']; + }; + const { + onHandlerStateChange, + onGestureHandlerStateChange, + }: OnGestureStateChangeHandlers = this.props; + if (onHandlerStateChange && typeof onHandlerStateChange !== 'function') { + // If it's not a method it should be an native Animated.event + // object. We set it directly as the handler for the view + // In this case nested handlers are not going to be supported + if (onGestureHandlerStateChange) { + throw new Error( + 'Nesting touch handlers with native animated driver is not supported yet' + ); + } + gestureStateEventHandler = onHandlerStateChange; + } else { + if ( + onGestureHandlerStateChange && + typeof onGestureHandlerStateChange !== 'function' + ) { + throw new Error( + 'Nesting touch handlers with native animated driver is not supported yet' + ); + } + } + const events = { + onGestureHandlerEvent: this.state.allowTouches + ? gestureEventHandler + : undefined, + onGestureHandlerStateChange: this.state.allowTouches + ? gestureStateEventHandler + : undefined, + }; + + this.propsRef.current = events; + + let child: any = null; + try { + child = React.Children.only(this.props.children); + } catch (e) { + throw new Error( + tagMessage( + `${name} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.` + ) + ); + } + + let grandChildren = child.props.children; + if ( + __DEV__ && + child.type && + (child.type === 'RNGestureHandlerButton' || + child.type.name === 'View' || + child.type.displayName === 'View') + ) { + grandChildren = React.Children.toArray(grandChildren); + grandChildren.push( + + ); + } + + return React.cloneElement( + child, + { + ref: this.refHandler, + collapsable: false, + ...(isJestEnv() + ? { + handlerType: name, + handlerTag: this.handlerTag, + } + : {}), + testID: this.props.testID ?? child.props.testID, + ...events, + }, + grandChildren + ); + } + } + return Handler; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createNativeWrapper.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createNativeWrapper.tsx new file mode 100644 index 00000000..8dfc32c2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/createNativeWrapper.tsx @@ -0,0 +1,80 @@ +import * as React from 'react'; +import { useImperativeHandle, useRef } from 'react'; + +import { + NativeViewGestureHandler, + NativeViewGestureHandlerProps, + nativeViewProps, +} from './NativeViewGestureHandler'; + +/* + * This array should consist of: + * - All keys in propTypes from NativeGestureHandler + * (and all keys in GestureHandlerPropTypes) + * - 'onGestureHandlerEvent' + * - 'onGestureHandlerStateChange' + */ +const NATIVE_WRAPPER_PROPS_FILTER = [ + ...nativeViewProps, + 'onGestureHandlerEvent', + 'onGestureHandlerStateChange', +] as const; + +export default function createNativeWrapper

( + Component: React.ComponentType

, + config: Readonly = {} +) { + const ComponentWrapper = React.forwardRef< + React.ComponentType, + P & NativeViewGestureHandlerProps + >((props, ref) => { + // filter out props that should be passed to gesture handler wrapper + const gestureHandlerProps = Object.keys(props).reduce( + (res, key) => { + // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info + const allowedKeys: readonly string[] = NATIVE_WRAPPER_PROPS_FILTER; + if (allowedKeys.includes(key)) { + // @ts-ignore FIXME(TS) + res[key] = props[key]; + } + return res; + }, + { ...config } // watch out not to modify config + ); + const _ref = useRef>(); + const _gestureHandlerRef = useRef>(); + useImperativeHandle( + ref, + // @ts-ignore TODO(TS) decide how nulls work in this context + () => { + const node = _gestureHandlerRef.current; + // add handlerTag for relations config + if (_ref.current && node) { + // @ts-ignore FIXME(TS) think about createHandler return type + _ref.current.handlerTag = node.handlerTag; + return _ref.current; + } + return null; + }, + [_ref, _gestureHandlerRef] + ); + return ( + + + + ); + }); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + ComponentWrapper.displayName = + Component?.displayName || + // @ts-ignore if render doesn't exist it will return undefined and go further + Component?.render?.name || + (typeof Component === 'string' && Component) || + 'ComponentWrapper'; + + return ComponentWrapper; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerCommon.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerCommon.ts new file mode 100644 index 00000000..c3285631 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerCommon.ts @@ -0,0 +1,206 @@ +// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class. +// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof +// e.g. React.createRef -> React.createRef. +// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference. +import * as React from 'react'; +import { Platform, findNodeHandle as findNodeHandleRN } from 'react-native'; + +import { State } from '../State'; +import { TouchEventType } from '../TouchEventType'; +import { ValueOf } from '../typeUtils'; +import { handlerIDToTag } from './handlersRegistry'; +import { toArray } from '../utils'; +import RNGestureHandlerModule from '../RNGestureHandlerModule'; + +const commonProps = [ + 'id', + 'enabled', + 'shouldCancelWhenOutside', + 'hitSlop', + 'cancelsTouchesInView', + 'userSelect', +] as const; + +const componentInteractionProps = ['waitFor', 'simultaneousHandlers'] as const; + +export const baseGestureHandlerProps = [ + ...commonProps, + ...componentInteractionProps, + 'onBegan', + 'onFailed', + 'onCancelled', + 'onActivated', + 'onEnded', + 'onGestureEvent', + 'onHandlerStateChange', +] as const; + +export const baseGestureHandlerWithMonitorProps = [ + ...commonProps, + 'needsPointerData', + 'manualActivation', +]; + +export interface GestureEventPayload { + handlerTag: number; + numberOfPointers: number; + state: ValueOf; +} +export interface HandlerStateChangeEventPayload extends GestureEventPayload { + oldState: ValueOf; +} + +export type HitSlop = + | number + | Partial< + Record< + 'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal', + number + > + > + | Record<'width' | 'left', number> + | Record<'width' | 'right', number> + | Record<'height' | 'top', number> + | Record<'height' | 'bottom', number>; + +export type UserSelect = 'none' | 'auto' | 'text'; + +//TODO(TS) events in handlers + +export interface GestureEvent> { + nativeEvent: Readonly; +} +export interface HandlerStateChangeEvent< + ExtraEventPayloadT = Record +> { + nativeEvent: Readonly; +} + +export type TouchData = { + id: number; + x: number; + y: number; + absoluteX: number; + absoluteY: number; +}; + +export type GestureTouchEvent = { + handlerTag: number; + numberOfTouches: number; + state: ValueOf; + eventType: TouchEventType; + allTouches: TouchData[]; + changedTouches: TouchData[]; +}; + +export type GestureUpdateEvent> = + GestureEventPayload & GestureEventPayloadT; + +export type GestureStateChangeEvent< + GestureStateChangeEventPayloadT = Record +> = HandlerStateChangeEventPayload & GestureStateChangeEventPayloadT; + +export type CommonGestureConfig = { + enabled?: boolean; + shouldCancelWhenOutside?: boolean; + hitSlop?: HitSlop; + userSelect?: UserSelect; +}; + +// Events payloads are types instead of interfaces due to TS limitation. +// See https://github.com/microsoft/TypeScript/issues/15300 for more info. +export type BaseGestureHandlerProps< + ExtraEventPayloadT extends Record = Record +> = CommonGestureConfig & { + id?: string; + waitFor?: React.Ref | React.Ref[]; + simultaneousHandlers?: React.Ref | React.Ref[]; + testID?: string; + cancelsTouchesInView?: boolean; + // TODO(TS) - fix event types + onBegan?: (event: HandlerStateChangeEvent) => void; + onFailed?: (event: HandlerStateChangeEvent) => void; + onCancelled?: (event: HandlerStateChangeEvent) => void; + onActivated?: (event: HandlerStateChangeEvent) => void; + onEnded?: (event: HandlerStateChangeEvent) => void; + + //TODO(TS) consider using NativeSyntheticEvent + onGestureEvent?: (event: GestureEvent) => void; + onHandlerStateChange?: ( + event: HandlerStateChangeEvent + ) => void; + // implicit `children` prop has been removed in @types/react^18.0.0 + children?: React.ReactNode; +}; + +function isConfigParam(param: unknown, name: string) { + // param !== Object(param) returns false if `param` is a function + // or an object and returns true if `param` is null + return ( + param !== undefined && + (param !== Object(param) || + !('__isNative' in (param as Record))) && + name !== 'onHandlerStateChange' && + name !== 'onGestureEvent' + ); +} + +export function filterConfig( + props: Record, + validProps: string[], + defaults: Record = {} +) { + const filteredConfig = { ...defaults }; + for (const key of validProps) { + let value = props[key]; + if (isConfigParam(value, key)) { + if (key === 'simultaneousHandlers' || key === 'waitFor') { + value = transformIntoHandlerTags(props[key]); + } else if (key === 'hitSlop' && typeof value !== 'object') { + value = { top: value, left: value, bottom: value, right: value }; + } + filteredConfig[key] = value; + } + } + return filteredConfig; +} + +function transformIntoHandlerTags(handlerIDs: any) { + handlerIDs = toArray(handlerIDs); + + if (Platform.OS === 'web') { + return handlerIDs + .map(({ current }: { current: any }) => current) + .filter((handle: any) => handle); + } + // converts handler string IDs into their numeric tags + return handlerIDs + .map( + (handlerID: any) => + handlerIDToTag[handlerID] || handlerID.current?.handlerTag || -1 + ) + .filter((handlerTag: number) => handlerTag > 0); +} + +export function findNodeHandle( + node: null | number | React.Component | React.ComponentClass +): null | number | React.Component | React.ComponentClass { + if (Platform.OS === 'web') { + return node; + } + return findNodeHandleRN(node); +} + +let scheduledFlushOperationsId: ReturnType< + typeof requestAnimationFrame +> | null = null; + +export function scheduleFlushOperations() { + if (scheduledFlushOperationsId === null) { + scheduledFlushOperationsId = requestAnimationFrame(() => { + RNGestureHandlerModule.flushOperations(); + + scheduledFlushOperationsId = null; + }); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerTypesCompat.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerTypesCompat.ts new file mode 100644 index 00000000..5065cb3b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestureHandlerTypesCompat.ts @@ -0,0 +1,106 @@ +import { + BaseButtonProps, + BorderlessButtonProps, + RawButtonProps, + RectButtonProps, +} from '../components/GestureButtons'; +import { + GestureEvent, + GestureEventPayload, + HandlerStateChangeEvent, + HandlerStateChangeEventPayload, +} from './gestureHandlerCommon'; +import { + FlingGestureHandlerEventPayload, + FlingGestureHandlerProps, +} from './FlingGestureHandler'; +import { + ForceTouchGestureHandlerEventPayload, + ForceTouchGestureHandlerProps, +} from './ForceTouchGestureHandler'; +import { + LongPressGestureHandlerEventPayload, + LongPressGestureHandlerProps, +} from './LongPressGestureHandler'; +import { + PanGestureHandlerEventPayload, + PanGestureHandlerProps, +} from './PanGestureHandler'; +import { + PinchGestureHandlerEventPayload, + PinchGestureHandlerProps, +} from './PinchGestureHandler'; +import { + RotationGestureHandlerEventPayload, + RotationGestureHandlerProps, +} from './RotationGestureHandler'; +import { + TapGestureHandlerEventPayload, + TapGestureHandlerProps, +} from './TapGestureHandler'; +import { + NativeViewGestureHandlerPayload, + NativeViewGestureHandlerProps, +} from './NativeViewGestureHandler'; + +// events +export type GestureHandlerGestureEventNativeEvent = GestureEventPayload; +export type GestureHandlerStateChangeNativeEvent = + HandlerStateChangeEventPayload; +export type GestureHandlerGestureEvent = GestureEvent; +export type GestureHandlerStateChangeEvent = HandlerStateChangeEvent; +// gesture handlers events +export type NativeViewGestureHandlerGestureEvent = + GestureEvent; +export type NativeViewGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type TapGestureHandlerGestureEvent = + GestureEvent; +export type TapGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type ForceTouchGestureHandlerGestureEvent = + GestureEvent; +export type ForceTouchGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type LongPressGestureHandlerGestureEvent = + GestureEvent; +export type LongPressGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type PanGestureHandlerGestureEvent = + GestureEvent; +export type PanGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type PinchGestureHandlerGestureEvent = + GestureEvent; +export type PinchGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type RotationGestureHandlerGestureEvent = + GestureEvent; +export type RotationGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +export type FlingGestureHandlerGestureEvent = + GestureEvent; +export type FlingGestureHandlerStateChangeEvent = + HandlerStateChangeEvent; + +// handlers properties +export type NativeViewGestureHandlerProperties = NativeViewGestureHandlerProps; +export type TapGestureHandlerProperties = TapGestureHandlerProps; +export type LongPressGestureHandlerProperties = LongPressGestureHandlerProps; +export type PanGestureHandlerProperties = PanGestureHandlerProps; +export type PinchGestureHandlerProperties = PinchGestureHandlerProps; +export type RotationGestureHandlerProperties = RotationGestureHandlerProps; +export type FlingGestureHandlerProperties = FlingGestureHandlerProps; +export type ForceTouchGestureHandlerProperties = ForceTouchGestureHandlerProps; +// button props +export type RawButtonProperties = RawButtonProps; +export type BaseButtonProperties = BaseButtonProps; +export type RectButtonProperties = RectButtonProps; +export type BorderlessButtonProperties = BorderlessButtonProps; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/GestureDetector.tsx b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/GestureDetector.tsx new file mode 100644 index 00000000..1be80d76 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/GestureDetector.tsx @@ -0,0 +1,801 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { + GestureType, + HandlerCallbacks, + BaseGesture, + GestureRef, + CALLBACK_TYPE, +} from './gesture'; +import { Reanimated, SharedValue } from './reanimatedWrapper'; +import { registerHandler, unregisterHandler } from '../handlersRegistry'; +import RNGestureHandlerModule from '../../RNGestureHandlerModule'; +import { + baseGestureHandlerWithMonitorProps, + filterConfig, + findNodeHandle, + GestureTouchEvent, + GestureUpdateEvent, + GestureStateChangeEvent, + HandlerStateChangeEvent, + scheduleFlushOperations, + UserSelect, +} from '../gestureHandlerCommon'; +import { + GestureStateManager, + GestureStateManagerType, +} from './gestureStateManager'; +import { flingGestureHandlerProps } from '../FlingGestureHandler'; +import { forceTouchGestureHandlerProps } from '../ForceTouchGestureHandler'; +import { longPressGestureHandlerProps } from '../LongPressGestureHandler'; +import { + panGestureHandlerProps, + panGestureHandlerCustomNativeProps, +} from '../PanGestureHandler'; +import { tapGestureHandlerProps } from '../TapGestureHandler'; +import { State } from '../../State'; +import { TouchEventType } from '../../TouchEventType'; +import { ComposedGesture } from './gestureComposition'; +import { ActionType } from '../../ActionType'; +import { isFabric, REACT_NATIVE_VERSION, tagMessage } from '../../utils'; +import { getShadowNodeFromRef } from '../../getShadowNodeFromRef'; +import { Platform } from 'react-native'; +import type RNGestureHandlerModuleWeb from '../../RNGestureHandlerModule.web'; +import { onGestureHandlerEvent } from './eventReceiver'; +import { RNRenderer } from '../../RNRenderer'; +import { isExperimentalWebImplementationEnabled } from '../../EnableExperimentalWebImplementation'; + +declare const global: { + isFormsStackingContext: (node: unknown) => boolean | null; // JSI function +}; + +const ALLOWED_PROPS = [ + ...baseGestureHandlerWithMonitorProps, + ...tapGestureHandlerProps, + ...panGestureHandlerProps, + ...panGestureHandlerCustomNativeProps, + ...longPressGestureHandlerProps, + ...forceTouchGestureHandlerProps, + ...flingGestureHandlerProps, +]; + +export type GestureConfigReference = { + config: GestureType[]; + animatedEventHandler: unknown; + animatedHandlers: SharedValue< + HandlerCallbacks>[] | null + > | null; + firstExecution: boolean; + useReanimatedHook: boolean; +}; + +function convertToHandlerTag(ref: GestureRef): number { + if (typeof ref === 'number') { + return ref; + } else if (ref instanceof BaseGesture) { + return ref.handlerTag; + } else { + // @ts-ignore in this case it should be a ref either to gesture object or + // a gesture handler component, in both cases handlerTag property exists + return ref.current?.handlerTag ?? -1; + } +} + +function extractValidHandlerTags(interactionGroup: GestureRef[] | undefined) { + return ( + interactionGroup?.map(convertToHandlerTag)?.filter((tag) => tag > 0) ?? [] + ); +} + +function dropHandlers(preparedGesture: GestureConfigReference) { + for (const handler of preparedGesture.config) { + RNGestureHandlerModule.dropGestureHandler(handler.handlerTag); + + unregisterHandler(handler.handlerTag, handler.config.testId); + } + + scheduleFlushOperations(); +} + +function checkGestureCallbacksForWorklets(gesture: GestureType) { + // if a gesture is explicitly marked to run on the JS thread there is no need to check + // if callbacks are worklets as the user is aware they will be ran on the JS thread + if (gesture.config.runOnJS) { + return; + } + + const areSomeNotWorklets = gesture.handlers.isWorklet.includes(false); + const areSomeWorklets = gesture.handlers.isWorklet.includes(true); + + // if some of the callbacks are worklets and some are not, and the gesture is not + // explicitly marked with `.runOnJS(true)` show an error + if (areSomeNotWorklets && areSomeWorklets) { + console.error( + tagMessage( + `Some of the callbacks in the gesture are worklets and some are not. Either make sure that all calbacks are marked as 'worklet' if you wish to run them on the UI thread or use '.runOnJS(true)' modifier on the gesture explicitly to run all callbacks on the JS thread.` + ) + ); + } +} + +interface WebEventHandler { + onGestureHandlerEvent: (event: HandlerStateChangeEvent) => void; + onGestureHandlerStateChange?: ( + event: HandlerStateChangeEvent + ) => void; +} + +interface AttachHandlersConfig { + preparedGesture: GestureConfigReference; + gestureConfig: ComposedGesture | GestureType; + gesture: GestureType[]; + viewTag: number; + webEventHandlersRef: React.RefObject; + mountedRef: React.RefObject; +} + +function attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + viewTag, + webEventHandlersRef, + mountedRef, +}: AttachHandlersConfig) { + if (!preparedGesture.firstExecution) { + gestureConfig.initialize(); + } else { + preparedGesture.firstExecution = false; + } + + // use setImmediate to extract handlerTags, because all refs should be initialized + // when it's ran + setImmediate(() => { + if (!mountedRef.current) { + return; + } + gestureConfig.prepare(); + }); + + for (const handler of gesture) { + checkGestureCallbacksForWorklets(handler); + RNGestureHandlerModule.createGestureHandler( + handler.handlerName, + handler.handlerTag, + filterConfig(handler.config, ALLOWED_PROPS) + ); + + registerHandler(handler.handlerTag, handler, handler.config.testId); + } + + // use setImmediate to extract handlerTags, because all refs should be initialized + // when it's ran + setImmediate(() => { + if (!mountedRef.current) { + return; + } + for (const handler of gesture) { + let requireToFail: number[] = []; + if (handler.config.requireToFail) { + requireToFail = extractValidHandlerTags(handler.config.requireToFail); + } + + let simultaneousWith: number[] = []; + if (handler.config.simultaneousWith) { + simultaneousWith = extractValidHandlerTags( + handler.config.simultaneousWith + ); + } + + RNGestureHandlerModule.updateGestureHandler( + handler.handlerTag, + filterConfig(handler.config, ALLOWED_PROPS, { + simultaneousHandlers: simultaneousWith, + waitFor: requireToFail, + }) + ); + } + + scheduleFlushOperations(); + }); + + preparedGesture.config = gesture; + + for (const gesture of preparedGesture.config) { + const actionType = gesture.shouldUseReanimated + ? ActionType.REANIMATED_WORKLET + : ActionType.JS_FUNCTION_NEW_API; + + if (Platform.OS === 'web') { + ( + RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler + )( + gesture.handlerTag, + viewTag, + ActionType.JS_FUNCTION_OLD_API, // ignored on web + webEventHandlersRef + ); + } else { + RNGestureHandlerModule.attachGestureHandler( + gesture.handlerTag, + viewTag, + actionType + ); + } + } + + if (preparedGesture.animatedHandlers) { + const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated; + + preparedGesture.animatedHandlers.value = gesture + .filter(isAnimatedGesture) + .map((g) => g.handlers) as unknown as HandlerCallbacks< + Record + >[]; + } +} + +function updateHandlers( + preparedGesture: GestureConfigReference, + gestureConfig: ComposedGesture | GestureType, + gesture: GestureType[], + mountedRef: React.RefObject +) { + gestureConfig.prepare(); + + for (let i = 0; i < gesture.length; i++) { + const handler = preparedGesture.config[i]; + checkGestureCallbacksForWorklets(handler); + + // only update handlerTag when it's actually different, it may be the same + // if gesture config object is wrapped with useMemo + if (gesture[i].handlerTag !== handler.handlerTag) { + gesture[i].handlerTag = handler.handlerTag; + gesture[i].handlers.handlerTag = handler.handlerTag; + } + } + + // use setImmediate to extract handlerTags, because when it's ran, all refs should be updated + // and handlerTags in BaseGesture references should be updated in the loop above (we need to wait + // in case of external relations) + setImmediate(() => { + if (!mountedRef.current) { + return; + } + for (let i = 0; i < gesture.length; i++) { + const handler = preparedGesture.config[i]; + + handler.config = gesture[i].config; + handler.handlers = gesture[i].handlers; + + const requireToFail = extractValidHandlerTags( + handler.config.requireToFail + ); + + const simultaneousWith = extractValidHandlerTags( + handler.config.simultaneousWith + ); + + RNGestureHandlerModule.updateGestureHandler( + handler.handlerTag, + filterConfig(handler.config, ALLOWED_PROPS, { + simultaneousHandlers: simultaneousWith, + waitFor: requireToFail, + }) + ); + + registerHandler(handler.handlerTag, handler, handler.config.testId); + } + + if (preparedGesture.animatedHandlers) { + const previousHandlersValue = + preparedGesture.animatedHandlers.value ?? []; + const newHandlersValue = preparedGesture.config + .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI + .map((g) => g.handlers) as unknown as HandlerCallbacks< + Record + >[]; + + // if amount of gesture configs changes, we need to update the callbacks in shared value + let shouldUpdateSharedValue = + previousHandlersValue.length !== newHandlersValue.length; + + if (!shouldUpdateSharedValue) { + // if the amount is the same, we need to check if any of the configs inside has changed + for (let i = 0; i < newHandlersValue.length; i++) { + if ( + // we can use the `gestureId` prop as it's unique for every config instance + newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId + ) { + shouldUpdateSharedValue = true; + break; + } + } + } + + if (shouldUpdateSharedValue) { + preparedGesture.animatedHandlers.value = newHandlersValue; + } + } + + scheduleFlushOperations(); + }); +} + +function needsToReattach( + preparedGesture: GestureConfigReference, + gesture: GestureType[] +) { + if (gesture.length !== preparedGesture.config.length) { + return true; + } + for (let i = 0; i < gesture.length; i++) { + if ( + gesture[i].handlerName !== preparedGesture.config[i].handlerName || + gesture[i].shouldUseReanimated !== + preparedGesture.config[i].shouldUseReanimated + ) { + return true; + } + } + + return false; +} + +function isStateChangeEvent( + event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent +): event is GestureStateChangeEvent { + 'worklet'; + // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point + return event.oldState != null; +} + +function isTouchEvent( + event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent +): event is GestureTouchEvent { + 'worklet'; + return event.eventType != null; +} + +function getHandler( + type: CALLBACK_TYPE, + gesture: HandlerCallbacks> +) { + 'worklet'; + switch (type) { + case CALLBACK_TYPE.BEGAN: + return gesture.onBegin; + case CALLBACK_TYPE.START: + return gesture.onStart; + case CALLBACK_TYPE.UPDATE: + return gesture.onUpdate; + case CALLBACK_TYPE.CHANGE: + return gesture.onChange; + case CALLBACK_TYPE.END: + return gesture.onEnd; + case CALLBACK_TYPE.FINALIZE: + return gesture.onFinalize; + case CALLBACK_TYPE.TOUCHES_DOWN: + return gesture.onTouchesDown; + case CALLBACK_TYPE.TOUCHES_MOVE: + return gesture.onTouchesMove; + case CALLBACK_TYPE.TOUCHES_UP: + return gesture.onTouchesUp; + case CALLBACK_TYPE.TOUCHES_CANCELLED: + return gesture.onTouchesCancelled; + } +} + +function touchEventTypeToCallbackType( + eventType: TouchEventType +): CALLBACK_TYPE { + 'worklet'; + switch (eventType) { + case TouchEventType.TOUCHES_DOWN: + return CALLBACK_TYPE.TOUCHES_DOWN; + case TouchEventType.TOUCHES_MOVE: + return CALLBACK_TYPE.TOUCHES_MOVE; + case TouchEventType.TOUCHES_UP: + return CALLBACK_TYPE.TOUCHES_UP; + case TouchEventType.TOUCHES_CANCELLED: + return CALLBACK_TYPE.TOUCHES_CANCELLED; + } + return CALLBACK_TYPE.UNDEFINED; +} + +function runWorklet( + type: CALLBACK_TYPE, + gesture: HandlerCallbacks>, + event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent, + ...args: any[] +) { + 'worklet'; + const handler = getHandler(type, gesture); + if (gesture.isWorklet[type]) { + // @ts-ignore Logic below makes sure the correct event is send to the + // correct handler. + handler?.(event, ...args); + } else if (handler) { + console.warn(tagMessage('Animated gesture callback must be a worklet')); + } +} + +function useAnimatedGesture( + preparedGesture: GestureConfigReference, + needsRebuild: boolean +) { + if (!Reanimated) { + return; + } + + // Hooks are called conditionally, but the condition is whether the + // react-native-reanimated is installed, which shouldn't change while running + // eslint-disable-next-line react-hooks/rules-of-hooks + const sharedHandlersCallbacks = Reanimated.useSharedValue< + HandlerCallbacks>[] | null + >(null); + + // eslint-disable-next-line react-hooks/rules-of-hooks + const lastUpdateEvent = Reanimated.useSharedValue< + (GestureUpdateEvent | undefined)[] + >([]); + + // not every gesture needs a state controller, init them lazily + const stateControllers: GestureStateManagerType[] = []; + + const callback = ( + event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent + ) => { + 'worklet'; + + const currentCallback = sharedHandlersCallbacks.value; + if (!currentCallback) { + return; + } + + for (let i = 0; i < currentCallback.length; i++) { + const gesture = currentCallback[i]; + + if (event.handlerTag === gesture.handlerTag) { + if (isStateChangeEvent(event)) { + if ( + event.oldState === State.UNDETERMINED && + event.state === State.BEGAN + ) { + runWorklet(CALLBACK_TYPE.BEGAN, gesture, event); + } else if ( + (event.oldState === State.BEGAN || + event.oldState === State.UNDETERMINED) && + event.state === State.ACTIVE + ) { + runWorklet(CALLBACK_TYPE.START, gesture, event); + lastUpdateEvent.value[gesture.handlerTag] = undefined; + } else if ( + event.oldState !== event.state && + event.state === State.END + ) { + if (event.oldState === State.ACTIVE) { + runWorklet(CALLBACK_TYPE.END, gesture, event, true); + } + runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, true); + } else if ( + (event.state === State.FAILED || event.state === State.CANCELLED) && + event.state !== event.oldState + ) { + if (event.oldState === State.ACTIVE) { + runWorklet(CALLBACK_TYPE.END, gesture, event, false); + } + runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false); + } + } else if (isTouchEvent(event)) { + if (!stateControllers[i]) { + stateControllers[i] = GestureStateManager.create(event.handlerTag); + } + + if (event.eventType !== TouchEventType.UNDETERMINED) { + runWorklet( + touchEventTypeToCallbackType(event.eventType), + gesture, + event, + stateControllers[i] + ); + } + } else { + runWorklet(CALLBACK_TYPE.UPDATE, gesture, event); + + if (gesture.onChange && gesture.changeEventCalculator) { + runWorklet( + CALLBACK_TYPE.CHANGE, + gesture, + gesture.changeEventCalculator?.( + event, + lastUpdateEvent.value[gesture.handlerTag] + ) + ); + + lastUpdateEvent.value[gesture.handlerTag] = event; + } + } + } + } + }; + + // eslint-disable-next-line react-hooks/rules-of-hooks + const event = Reanimated.useEvent( + callback, + ['onGestureHandlerStateChange', 'onGestureHandlerEvent'], + needsRebuild + ); + + preparedGesture.animatedEventHandler = event; + preparedGesture.animatedHandlers = sharedHandlersCallbacks; +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function validateDetectorChildren(ref: any) { + // finds the first native view under the Wrap component and traverses the fiber tree upwards + // to check whether there is more than one native view as a pseudo-direct child of GestureDetector + // i.e. this is not ok: + // Wrap + // | + // / \ + // / \ + // / \ + // / \ + // NativeView NativeView + // + // but this is fine: + // Wrap + // | + // NativeView + // | + // / \ + // / \ + // / \ + // / \ + // NativeView NativeView + if (__DEV__ && Platform.OS !== 'web') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const wrapType = + REACT_NATIVE_VERSION.minor > 63 || REACT_NATIVE_VERSION.major > 0 + ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + ref._reactInternals.elementType + : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + ref._reactInternalFiber.elementType; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + let instance = + RNRenderer.findHostInstance_DEPRECATED( + ref + )._internalFiberInstanceHandleDEV; + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + while (instance && instance.elementType !== wrapType) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (instance.sibling) { + throw new Error( + 'GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a or .' + ); + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + instance = instance.return; + } + } +} + +const applyUserSelectProp = ( + userSelect: UserSelect, + gesture: ComposedGesture | GestureType +): void => { + for (const g of gesture.toGestureArray()) { + g.config.userSelect = userSelect; + } +}; + +interface GestureDetectorProps { + gesture: ComposedGesture | GestureType; + userSelect?: UserSelect; + children?: React.ReactNode; +} +interface GestureDetectorState { + firstRender: boolean; + viewRef: React.Component | null; + previousViewTag: number; + forceReattach: boolean; +} +export const GestureDetector = (props: GestureDetectorProps) => { + const gestureConfig = props.gesture; + + if (props.userSelect) { + applyUserSelectProp(props.userSelect, gestureConfig); + } + + const gesture = gestureConfig.toGestureArray(); + const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated); + + // store state in ref to prevent unnecessary renders + const state = useRef({ + firstRender: true, + viewRef: null, + previousViewTag: -1, + forceReattach: false, + }).current; + const mountedRef = useRef(false); + const webEventHandlersRef = useRef({ + onGestureHandlerEvent: (e: HandlerStateChangeEvent) => { + onGestureHandlerEvent(e.nativeEvent); + }, + onGestureHandlerStateChange: isExperimentalWebImplementationEnabled() + ? (e: HandlerStateChangeEvent) => { + onGestureHandlerEvent(e.nativeEvent); + } + : undefined, + }); + + const [renderState, setRenderState] = useState(false); + function forceRender() { + setRenderState(!renderState); + } + + const preparedGesture = React.useRef({ + config: gesture, + animatedEventHandler: null, + animatedHandlers: null, + firstExecution: true, + useReanimatedHook: useReanimatedHook, + }).current; + + if (useReanimatedHook !== preparedGesture.useReanimatedHook) { + throw new Error( + tagMessage( + 'You cannot change the thread the callbacks are ran on while the app is running' + ) + ); + } + + function onHandlersUpdate(skipConfigUpdate?: boolean) { + // if the underlying view has changed we need to reattach handlers to the new view + const viewTag = findNodeHandle(state.viewRef) as number; + const forceReattach = viewTag !== state.previousViewTag; + + if (forceReattach || needsToReattach(preparedGesture, gesture)) { + validateDetectorChildren(state.viewRef); + dropHandlers(preparedGesture); + attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + webEventHandlersRef, + viewTag, + mountedRef, + }); + + state.previousViewTag = viewTag; + state.forceReattach = forceReattach; + if (forceReattach) { + forceRender(); + } + } else if (!skipConfigUpdate) { + updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef); + } + } + + // Reanimated event should be rebuilt only when gestures are reattached, otherwise + // config update will be enough as all necessary items are stored in shared values anyway + const needsToRebuildReanimatedEvent = + preparedGesture.firstExecution || + needsToReattach(preparedGesture, gesture) || + state.forceReattach; + + state.forceReattach = false; + + if (preparedGesture.firstExecution) { + gestureConfig.initialize(); + } + + if (useReanimatedHook) { + // Whether animatedGesture or gesture is used shouldn't change while the app is running + // eslint-disable-next-line react-hooks/rules-of-hooks + useAnimatedGesture(preparedGesture, needsToRebuildReanimatedEvent); + } + + useEffect(() => { + const viewTag = findNodeHandle(state.viewRef) as number; + state.firstRender = true; + mountedRef.current = true; + + validateDetectorChildren(state.viewRef); + + attachHandlers({ + preparedGesture, + gestureConfig, + gesture, + webEventHandlersRef, + viewTag, + mountedRef, + }); + + return () => { + mountedRef.current = false; + dropHandlers(preparedGesture); + }; + }, []); + + useEffect(() => { + if (!state.firstRender) { + onHandlersUpdate(); + } else { + state.firstRender = false; + } + }, [props]); + + const refFunction = (ref: unknown) => { + if (ref !== null) { + // @ts-ignore Just setting the view ref + state.viewRef = ref; + + // if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed + if (state.previousViewTag === -1) { + state.previousViewTag = findNodeHandle(state.viewRef) as number; + } + + // pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers + // in case the view has changed, while config update would be handled be the `useEffect` above + onHandlersUpdate(true); + + if (isFabric()) { + const node = getShadowNodeFromRef(ref); + if (global.isFormsStackingContext(node) === false) { + console.error( + tagMessage( + 'GestureDetector has received a child that may get view-flattened. ' + + '\nTo prevent it from misbehaving you need to wrap the child with a ``.' + ) + ); + } + } + } + }; + + if (useReanimatedHook) { + return ( + + {props.children} + + ); + } else { + return {props.children}; + } +}; + +class Wrap extends React.Component<{ + onGestureHandlerEvent?: unknown; + // implicit `children` prop has been removed in @types/react^18.0.0 + children?: React.ReactNode; +}> { + render() { + try { + // I don't think that fighting with types over such a simple function is worth it + // The only thing it does is add 'collapsable: false' to the child component + // to make sure it is in the native view hierarchy so the detector can find + // correct viewTag to attach to. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const child: any = React.Children.only(this.props.children); + return React.cloneElement( + child, + { collapsable: false }, + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + child.props.children + ); + } catch (e) { + throw new Error( + tagMessage( + `GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.` + ) + ); + } + } +} + +const AnimatedWrap = Reanimated?.default?.createAnimatedComponent(Wrap) ?? Wrap; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/eventReceiver.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/eventReceiver.ts new file mode 100644 index 00000000..10ebdd7d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/eventReceiver.ts @@ -0,0 +1,155 @@ +import { DeviceEventEmitter, EmitterSubscription } from 'react-native'; +import { State } from '../../State'; +import { TouchEventType } from '../../TouchEventType'; +import { + GestureTouchEvent, + GestureUpdateEvent, + GestureStateChangeEvent, +} from '../gestureHandlerCommon'; +import { findHandler, findOldGestureHandler } from '../handlersRegistry'; +import { BaseGesture } from './gesture'; +import { + GestureStateManager, + GestureStateManagerType, +} from './gestureStateManager'; + +let gestureHandlerEventSubscription: EmitterSubscription | null = null; +let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null = + null; + +const gestureStateManagers: Map = new Map< + number, + GestureStateManagerType +>(); + +const lastUpdateEvent: (GestureUpdateEvent | undefined)[] = []; + +function isStateChangeEvent( + event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent +): event is GestureStateChangeEvent { + // @ts-ignore oldState doesn't exist on GestureTouchEvent and that's the point + return event.oldState != null; +} + +function isTouchEvent( + event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent +): event is GestureTouchEvent { + return event.eventType != null; +} + +export function onGestureHandlerEvent( + event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent +) { + const handler = findHandler(event.handlerTag) as BaseGesture< + Record + >; + + if (handler) { + if (isStateChangeEvent(event)) { + if ( + event.oldState === State.UNDETERMINED && + event.state === State.BEGAN + ) { + handler.handlers.onBegin?.(event); + } else if ( + (event.oldState === State.BEGAN || + event.oldState === State.UNDETERMINED) && + event.state === State.ACTIVE + ) { + handler.handlers.onStart?.(event); + lastUpdateEvent[handler.handlers.handlerTag] = event; + } else if (event.oldState !== event.state && event.state === State.END) { + if (event.oldState === State.ACTIVE) { + handler.handlers.onEnd?.(event, true); + } + handler.handlers.onFinalize?.(event, true); + lastUpdateEvent[handler.handlers.handlerTag] = undefined; + } else if ( + (event.state === State.FAILED || event.state === State.CANCELLED) && + event.oldState !== event.state + ) { + if (event.oldState === State.ACTIVE) { + handler.handlers.onEnd?.(event, false); + } + handler.handlers.onFinalize?.(event, false); + gestureStateManagers.delete(event.handlerTag); + lastUpdateEvent[handler.handlers.handlerTag] = undefined; + } + } else if (isTouchEvent(event)) { + if (!gestureStateManagers.has(event.handlerTag)) { + gestureStateManagers.set( + event.handlerTag, + GestureStateManager.create(event.handlerTag) + ); + } + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const manager = gestureStateManagers.get(event.handlerTag)!; + + switch (event.eventType) { + case TouchEventType.TOUCHES_DOWN: + handler.handlers?.onTouchesDown?.(event, manager); + break; + case TouchEventType.TOUCHES_MOVE: + handler.handlers?.onTouchesMove?.(event, manager); + break; + case TouchEventType.TOUCHES_UP: + handler.handlers?.onTouchesUp?.(event, manager); + break; + case TouchEventType.TOUCHES_CANCELLED: + handler.handlers?.onTouchesCancelled?.(event, manager); + break; + } + } else { + handler.handlers.onUpdate?.(event); + + if (handler.handlers.onChange && handler.handlers.changeEventCalculator) { + handler.handlers.onChange?.( + handler.handlers.changeEventCalculator?.( + event, + lastUpdateEvent[handler.handlers.handlerTag] + ) + ); + + lastUpdateEvent[handler.handlers.handlerTag] = event; + } + } + } else { + const oldHandler = findOldGestureHandler(event.handlerTag); + if (oldHandler) { + const nativeEvent = { nativeEvent: event }; + if (isStateChangeEvent(event)) { + oldHandler.onGestureStateChange(nativeEvent); + } else { + oldHandler.onGestureEvent(nativeEvent); + } + return; + } + } +} + +export function startListening() { + stopListening(); + + gestureHandlerEventSubscription = DeviceEventEmitter.addListener( + 'onGestureHandlerEvent', + onGestureHandlerEvent + ); + + gestureHandlerStateChangeEventSubscription = DeviceEventEmitter.addListener( + 'onGestureHandlerStateChange', + onGestureHandlerEvent + ); +} + +export function stopListening() { + if (gestureHandlerEventSubscription) { + gestureHandlerEventSubscription.remove(); + gestureHandlerEventSubscription = null; + } + + if (gestureHandlerStateChangeEventSubscription) { + gestureHandlerStateChangeEventSubscription.remove(); + gestureHandlerStateChangeEventSubscription = null; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/flingGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/flingGesture.ts new file mode 100644 index 00000000..579e62b6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/flingGesture.ts @@ -0,0 +1,27 @@ +import { BaseGesture, BaseGestureConfig } from './gesture'; +import { + FlingGestureConfig, + FlingGestureHandlerEventPayload, +} from '../FlingGestureHandler'; + +export class FlingGesture extends BaseGesture { + public config: BaseGestureConfig & FlingGestureConfig = {}; + + constructor() { + super(); + + this.handlerName = 'FlingGestureHandler'; + } + + numberOfPointers(pointers: number) { + this.config.numberOfPointers = pointers; + return this; + } + + direction(direction: number) { + this.config.direction = direction; + return this; + } +} + +export type FlingGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/forceTouchGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/forceTouchGesture.ts new file mode 100644 index 00000000..1977f144 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/forceTouchGesture.ts @@ -0,0 +1,74 @@ +import { BaseGestureConfig, ContinousBaseGesture } from './gesture'; +import { + ForceTouchGestureConfig, + ForceTouchGestureHandlerEventPayload, +} from '../ForceTouchGestureHandler'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; + +export type ForceTouchGestureChangeEventPayload = { + forceChange: number; +}; + +function changeEventCalculator( + current: GestureUpdateEvent, + previous?: GestureUpdateEvent +) { + 'worklet'; + let changePayload: ForceTouchGestureChangeEventPayload; + if (previous === undefined) { + changePayload = { + forceChange: current.force, + }; + } else { + changePayload = { + forceChange: current.force - previous.force, + }; + } + + return { ...current, ...changePayload }; +} + +export class ForceTouchGesture extends ContinousBaseGesture< + ForceTouchGestureHandlerEventPayload, + ForceTouchGestureChangeEventPayload +> { + public config: BaseGestureConfig & ForceTouchGestureConfig = {}; + + constructor() { + super(); + + this.handlerName = 'ForceTouchGestureHandler'; + } + + minForce(force: number) { + this.config.minForce = force; + return this; + } + + maxForce(force: number) { + this.config.maxForce = force; + return this; + } + + feedbackOnActivation(value: boolean) { + this.config.feedbackOnActivation = value; + return this; + } + + onChange( + callback: ( + event: GestureUpdateEvent< + GestureUpdateEvent< + ForceTouchGestureHandlerEventPayload & + ForceTouchGestureChangeEventPayload + > + > + ) => void + ) { + // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } +} + +export type ForceTouchGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gesture.ts new file mode 100644 index 00000000..9f00793d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gesture.ts @@ -0,0 +1,335 @@ +import { FlingGestureHandlerEventPayload } from '../FlingGestureHandler'; +import { ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler'; +import { + HitSlop, + CommonGestureConfig, + GestureTouchEvent, + GestureStateChangeEvent, + GestureUpdateEvent, +} from '../gestureHandlerCommon'; +import { getNextHandlerTag } from '../handlersRegistry'; +import { GestureStateManagerType } from './gestureStateManager'; +import { LongPressGestureHandlerEventPayload } from '../LongPressGestureHandler'; +import { PanGestureHandlerEventPayload } from '../PanGestureHandler'; +import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler'; +import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler'; +import { TapGestureHandlerEventPayload } from '../TapGestureHandler'; +import { NativeViewGestureHandlerPayload } from '../NativeViewGestureHandler'; +import { isRemoteDebuggingEnabled } from '../../utils'; + +export type GestureType = + | BaseGesture> + | BaseGesture> + | BaseGesture + | BaseGesture + | BaseGesture + | BaseGesture + | BaseGesture + | BaseGesture + | BaseGesture + | BaseGesture; + +export type GestureRef = + | number + | GestureType + | React.RefObject + | React.RefObject; // allow adding a ref to a gesture handler +export interface BaseGestureConfig + extends CommonGestureConfig, + Record { + ref?: React.MutableRefObject; + requireToFail?: GestureRef[]; + simultaneousWith?: GestureRef[]; + needsPointerData?: boolean; + manualActivation?: boolean; + runOnJS?: boolean; + testId?: string; + cancelsTouchesInView?: boolean; +} + +type TouchEventHandlerType = ( + event: GestureTouchEvent, + stateManager: GestureStateManagerType +) => void; + +export type HandlerCallbacks> = { + gestureId: number; + handlerTag: number; + onBegin?: (event: GestureStateChangeEvent) => void; + onStart?: (event: GestureStateChangeEvent) => void; + onEnd?: ( + event: GestureStateChangeEvent, + success: boolean + ) => void; + onFinalize?: ( + event: GestureStateChangeEvent, + success: boolean + ) => void; + onUpdate?: (event: GestureUpdateEvent) => void; + onChange?: (event: any) => void; + onTouchesDown?: TouchEventHandlerType; + onTouchesMove?: TouchEventHandlerType; + onTouchesUp?: TouchEventHandlerType; + onTouchesCancelled?: TouchEventHandlerType; + changeEventCalculator?: ( + current: GestureUpdateEvent>, + previous?: GestureUpdateEvent> + ) => GestureUpdateEvent>; + isWorklet: boolean[]; +}; + +export const CALLBACK_TYPE = { + UNDEFINED: 0, + BEGAN: 1, + START: 2, + UPDATE: 3, + CHANGE: 4, + END: 5, + FINALIZE: 6, + TOUCHES_DOWN: 7, + TOUCHES_MOVE: 8, + TOUCHES_UP: 9, + TOUCHES_CANCELLED: 10, +} as const; + +// Allow using CALLBACK_TYPE as object and type +// eslint-disable-next-line @typescript-eslint/no-redeclare +export type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE]; + +export abstract class Gesture { + /** + * Return array of gestures, providing the same interface for creating and updating + * handlers, no matter which object was used to create gesture instance. + */ + abstract toGestureArray(): GestureType[]; + + /** + * Assign handlerTag to the gesture instance and set ref.current (if a ref is set) + */ + abstract initialize(): void; + + /** + * Make sure that values of properties defining relations are arrays. Do any necessary + * preprocessing required to configure relations between handlers. Called just before + * updating the handler on the native side. + */ + abstract prepare(): void; +} + +let nextGestureId = 0; +export abstract class BaseGesture< + EventPayloadT extends Record +> extends Gesture { + private gestureId = -1; + public handlerTag = -1; + public handlerName = ''; + public config: BaseGestureConfig = {}; + public handlers: HandlerCallbacks = { + gestureId: -1, + handlerTag: -1, + isWorklet: [], + }; + + constructor() { + super(); + + // Used to check whether the gesture config has been updated when wrapping it + // with `useMemo`. Since every config will have a unique id, when the dependencies + // don't change, the config won't be recreated and the id will stay the same. + // If the id is different, it means that the config has changed and the gesture + // needs to be updated. + this.gestureId = nextGestureId++; + this.handlers.gestureId = this.gestureId; + } + + private addDependency( + key: 'simultaneousWith' | 'requireToFail', + gesture: Exclude + ) { + const value = this.config[key]; + this.config[key] = value + ? Array().concat(value, gesture) + : [gesture]; + } + + withRef(ref: React.MutableRefObject) { + this.config.ref = ref; + return this; + } + + // eslint-disable-next-line @typescript-eslint/ban-types + protected isWorklet(callback: Function) { + //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + return callback.__workletHash !== undefined; + } + + onBegin(callback: (event: GestureStateChangeEvent) => void) { + this.handlers.onBegin = callback; + this.handlers.isWorklet[CALLBACK_TYPE.BEGAN] = this.isWorklet(callback); + return this; + } + + onStart(callback: (event: GestureStateChangeEvent) => void) { + this.handlers.onStart = callback; + this.handlers.isWorklet[CALLBACK_TYPE.START] = this.isWorklet(callback); + return this; + } + + onEnd( + callback: ( + event: GestureStateChangeEvent, + success: boolean + ) => void + ) { + this.handlers.onEnd = callback; + //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + this.handlers.isWorklet[CALLBACK_TYPE.END] = this.isWorklet(callback); + return this; + } + + onFinalize( + callback: ( + event: GestureStateChangeEvent, + success: boolean + ) => void + ) { + this.handlers.onFinalize = callback; + //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false + this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback); + return this; + } + + onTouchesDown(callback: TouchEventHandlerType) { + this.config.needsPointerData = true; + this.handlers.onTouchesDown = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] = + this.isWorklet(callback); + + return this; + } + + onTouchesMove(callback: TouchEventHandlerType) { + this.config.needsPointerData = true; + this.handlers.onTouchesMove = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] = + this.isWorklet(callback); + + return this; + } + + onTouchesUp(callback: TouchEventHandlerType) { + this.config.needsPointerData = true; + this.handlers.onTouchesUp = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] = + this.isWorklet(callback); + + return this; + } + + onTouchesCancelled(callback: TouchEventHandlerType) { + this.config.needsPointerData = true; + this.handlers.onTouchesCancelled = callback; + this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] = + this.isWorklet(callback); + + return this; + } + + enabled(enabled: boolean) { + this.config.enabled = enabled; + return this; + } + + shouldCancelWhenOutside(value: boolean) { + this.config.shouldCancelWhenOutside = value; + return this; + } + + hitSlop(hitSlop: HitSlop) { + this.config.hitSlop = hitSlop; + return this; + } + + runOnJS(runOnJS: boolean) { + this.config.runOnJS = runOnJS; + return this; + } + + simultaneousWithExternalGesture(...gestures: Exclude[]) { + for (const gesture of gestures) { + this.addDependency('simultaneousWith', gesture); + } + return this; + } + + requireExternalGestureToFail(...gestures: Exclude[]) { + for (const gesture of gestures) { + this.addDependency('requireToFail', gesture); + } + return this; + } + + withTestId(id: string) { + this.config.testId = id; + return this; + } + + cancelsTouchesInView(value: boolean) { + this.config.cancelsTouchesInView = value; + return this; + } + + initialize() { + this.handlerTag = getNextHandlerTag(); + + this.handlers = { ...this.handlers, handlerTag: this.handlerTag }; + + if (this.config.ref) { + this.config.ref.current = this as GestureType; + } + } + + toGestureArray(): GestureType[] { + return [this as GestureType]; + } + + // eslint-disable-next-line @typescript-eslint/no-empty-function + prepare() {} + + get shouldUseReanimated(): boolean { + // use Reanimated when runOnJS isn't set explicitly, + // and all defined callbacks are worklets, + // and remote debugging is disabled + return ( + this.config.runOnJS !== true && + !this.handlers.isWorklet.includes(false) && + !isRemoteDebuggingEnabled() + ); + } +} + +export abstract class ContinousBaseGesture< + EventPayloadT extends Record, + EventChangePayloadT extends Record +> extends BaseGesture { + onUpdate(callback: (event: GestureUpdateEvent) => void) { + this.handlers.onUpdate = callback; + this.handlers.isWorklet[CALLBACK_TYPE.UPDATE] = this.isWorklet(callback); + return this; + } + + onChange( + callback: ( + event: GestureUpdateEvent + ) => void + ) { + this.handlers.onChange = callback; + this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback); + return this; + } + + manualActivation(manualActivation: boolean) { + this.config.manualActivation = manualActivation; + return this; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureComposition.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureComposition.ts new file mode 100644 index 00000000..cea793aa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureComposition.ts @@ -0,0 +1,122 @@ +import { BaseGesture, Gesture, GestureRef, GestureType } from './gesture'; + +function extendRelation( + currentRelation: GestureRef[] | undefined, + extendWith: GestureType[] +) { + if (currentRelation === undefined) { + return [...extendWith]; + } else { + return [...currentRelation, ...extendWith]; + } +} + +export class ComposedGesture extends Gesture { + protected gestures: Gesture[] = []; + protected simultaneousGestures: GestureType[] = []; + protected requireGesturesToFail: GestureType[] = []; + + constructor(...gestures: Gesture[]) { + super(); + this.gestures = gestures; + } + + protected prepareSingleGesture( + gesture: Gesture, + simultaneousGestures: GestureType[], + requireGesturesToFail: GestureType[] + ) { + if (gesture instanceof BaseGesture) { + const newConfig = { ...gesture.config }; + + newConfig.simultaneousWith = extendRelation( + newConfig.simultaneousWith, + simultaneousGestures + ); + newConfig.requireToFail = extendRelation( + newConfig.requireToFail, + requireGesturesToFail + ); + + gesture.config = newConfig; + } else if (gesture instanceof ComposedGesture) { + gesture.simultaneousGestures = simultaneousGestures; + gesture.requireGesturesToFail = requireGesturesToFail; + gesture.prepare(); + } + } + + prepare() { + for (const gesture of this.gestures) { + this.prepareSingleGesture( + gesture, + this.simultaneousGestures, + this.requireGesturesToFail + ); + } + } + + initialize() { + for (const gesture of this.gestures) { + gesture.initialize(); + } + } + + toGestureArray(): GestureType[] { + return this.gestures.flatMap((gesture) => gesture.toGestureArray()); + } +} + +export class SimultaneousGesture extends ComposedGesture { + prepare() { + // this piece of magic works something like this: + // for every gesture in the array + const simultaneousArrays = this.gestures.map((gesture) => + // we take the array it's in + this.gestures + // and make a copy without it + .filter((x) => x !== gesture) + // then we flatmap the result to get list of raw (not composed) gestures + // this way we don't make the gestures simultaneous with themselves, which is + // important when the gesture is `ExclusiveGesture` - we don't want to make + // exclusive gestures simultaneous + .flatMap((x) => x.toGestureArray()) + ); + + for (let i = 0; i < this.gestures.length; i++) { + this.prepareSingleGesture( + this.gestures[i], + simultaneousArrays[i], + this.requireGesturesToFail + ); + } + } +} + +export class ExclusiveGesture extends ComposedGesture { + prepare() { + // transforms the array of gestures into array of grouped raw (not composed) gestures + // i.e. [gesture1, gesture2, ComposedGesture(gesture3, gesture4)] -> [[gesture1], [gesture2], [gesture3, gesture4]] + const gestureArrays = this.gestures.map((gesture) => + gesture.toGestureArray() + ); + + let requireToFail: GestureType[] = []; + + for (let i = 0; i < this.gestures.length; i++) { + this.prepareSingleGesture( + this.gestures[i], + this.simultaneousGestures, + this.requireGesturesToFail.concat(requireToFail) + ); + + // every group gets to wait for all groups before it + requireToFail = requireToFail.concat(gestureArrays[i]); + } + } +} + +export type ComposedGestureType = InstanceType; +export type RaceGestureType = ComposedGestureType; +export type SimultaneousGestureType = InstanceType; +export type ExclusiveGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureObjects.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureObjects.ts new file mode 100644 index 00000000..ed9048a7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureObjects.ts @@ -0,0 +1,79 @@ +import { FlingGesture } from './flingGesture'; +import { ForceTouchGesture } from './forceTouchGesture'; +import { Gesture } from './gesture'; +import { + ComposedGesture, + ExclusiveGesture, + SimultaneousGesture, +} from './gestureComposition'; +import { LongPressGesture } from './longPressGesture'; +import { PanGesture } from './panGesture'; +import { PinchGesture } from './pinchGesture'; +import { RotationGesture } from './rotationGesture'; +import { TapGesture } from './tapGesture'; +import { NativeGesture } from './nativeGesture'; +import { ManualGesture } from './manualGesture'; + +export const GestureObjects = { + Tap: () => { + return new TapGesture(); + }, + + Pan: () => { + return new PanGesture(); + }, + + Pinch: () => { + return new PinchGesture(); + }, + + Rotation: () => { + return new RotationGesture(); + }, + + Fling: () => { + return new FlingGesture(); + }, + + LongPress: () => { + return new LongPressGesture(); + }, + + ForceTouch: () => { + return new ForceTouchGesture(); + }, + + Native: () => { + return new NativeGesture(); + }, + + Manual: () => { + return new ManualGesture(); + }, + + /** + * Builds a composed gesture consisting of gestures provided as parameters. + * The first one that becomes active cancels the rest of gestures. + */ + Race: (...gestures: Gesture[]) => { + return new ComposedGesture(...gestures); + }, + + /** + * Builds a composed gesture that allows all base gestures to run simultaneously. + */ + Simultaneous(...gestures: Gesture[]) { + return new SimultaneousGesture(...gestures); + }, + + /** + * Builds a composed gesture where only one of the provided gestures can become active. + * Priority is decided through the order of gestures: the first one has higher priority + * than the second one, second one has higher priority than the third one, and so on. + * For example, to make a gesture that recognizes both single and double tap you need + * to call Exclusive(doubleTap, singleTap). + */ + Exclusive(...gestures: Gesture[]) { + return new ExclusiveGesture(...gestures); + }, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts new file mode 100644 index 00000000..35ff56ac --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts @@ -0,0 +1,62 @@ +import { Reanimated } from './reanimatedWrapper'; +import { State } from '../../State'; +import { tagMessage } from '../../utils'; + +export interface GestureStateManagerType { + begin: () => void; + activate: () => void; + fail: () => void; + end: () => void; +} + +const warningMessage = tagMessage( + 'react-native-reanimated is required in order to use synchronous state management' +); + +// check if reanimated module is available, but look for useSharedValue as conditional +// require of reanimated can sometimes return content of `utils.ts` file (?) +const REANIMATED_AVAILABLE = Reanimated?.useSharedValue !== undefined; +const setGestureState = Reanimated?.setGestureState; + +export const GestureStateManager = { + create(handlerTag: number): GestureStateManagerType { + 'worklet'; + return { + begin: () => { + 'worklet'; + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.BEGAN); + } else { + console.warn(warningMessage); + } + }, + + activate: () => { + 'worklet'; + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.ACTIVE); + } else { + console.warn(warningMessage); + } + }, + + fail: () => { + 'worklet'; + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.FAILED); + } else { + console.warn(warningMessage); + } + }, + + end: () => { + 'worklet'; + if (REANIMATED_AVAILABLE) { + setGestureState(handlerTag, State.END); + } else { + console.warn(warningMessage); + } + }, + }; + }, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.web.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.web.ts new file mode 100644 index 00000000..c4ede40b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.web.ts @@ -0,0 +1,24 @@ +import NodeManager from '../../web/tools/NodeManager'; +import { GestureStateManagerType } from './gestureStateManager'; + +export const GestureStateManager = { + create(handlerTag: number): GestureStateManagerType { + return { + begin: () => { + NodeManager.getHandler(handlerTag).begin(); + }, + + activate: () => { + NodeManager.getHandler(handlerTag).activate(); + }, + + fail: () => { + NodeManager.getHandler(handlerTag).fail(); + }, + + end: () => { + NodeManager.getHandler(handlerTag).end(); + }, + }; + }, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/longPressGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/longPressGesture.ts new file mode 100644 index 00000000..9ad2a94d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/longPressGesture.ts @@ -0,0 +1,28 @@ +import { BaseGesture, BaseGestureConfig } from './gesture'; +import { + LongPressGestureConfig, + LongPressGestureHandlerEventPayload, +} from '../LongPressGestureHandler'; + +export class LongPressGesture extends BaseGesture { + public config: BaseGestureConfig & LongPressGestureConfig = {}; + + constructor() { + super(); + + this.handlerName = 'LongPressGestureHandler'; + this.shouldCancelWhenOutside(true); + } + + minDuration(duration: number) { + this.config.minDurationMs = duration; + return this; + } + + maxDistance(distance: number) { + this.config.maxDist = distance; + return this; + } +} + +export type LongPressGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/manualGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/manualGesture.ts new file mode 100644 index 00000000..f08ded6f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/manualGesture.ts @@ -0,0 +1,31 @@ +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +import { ContinousBaseGesture } from './gesture'; + +function changeEventCalculator( + current: GestureUpdateEvent>, + _previous?: GestureUpdateEvent> +) { + 'worklet'; + return current; +} + +export class ManualGesture extends ContinousBaseGesture< + Record, + Record +> { + constructor() { + super(); + + this.handlerName = 'ManualGestureHandler'; + } + + onChange( + callback: (event: GestureUpdateEvent>) => void + ) { + // @ts-ignore TS being overprotective, Record is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } +} + +export type ManualGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/nativeGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/nativeGesture.ts new file mode 100644 index 00000000..4d309f49 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/nativeGesture.ts @@ -0,0 +1,27 @@ +import { BaseGestureConfig, BaseGesture } from './gesture'; +import { + NativeViewGestureConfig, + NativeViewGestureHandlerPayload, +} from '../NativeViewGestureHandler'; + +export class NativeGesture extends BaseGesture { + public config: BaseGestureConfig & NativeViewGestureConfig = {}; + + constructor() { + super(); + + this.handlerName = 'NativeViewGestureHandler'; + } + + shouldActivateOnStart(value: boolean) { + this.config.shouldActivateOnStart = value; + return this; + } + + disallowInterruption(value: boolean) { + this.config.disallowInterruption = value; + return this; + } +} + +export type NativeGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/panGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/panGesture.ts new file mode 100644 index 00000000..7b782943 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/panGesture.ts @@ -0,0 +1,152 @@ +import { BaseGestureConfig, ContinousBaseGesture } from './gesture'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; +import { + PanGestureConfig, + PanGestureHandlerEventPayload, +} from '../PanGestureHandler'; + +export type PanGestureChangeEventPayload = { + changeX: number; + changeY: number; +}; + +function changeEventCalculator( + current: GestureUpdateEvent, + previous?: GestureUpdateEvent +) { + 'worklet'; + let changePayload: PanGestureChangeEventPayload; + if (previous === undefined) { + changePayload = { + changeX: current.translationX, + changeY: current.translationY, + }; + } else { + changePayload = { + changeX: current.translationX - previous.translationX, + changeY: current.translationY - previous.translationY, + }; + } + + return { ...current, ...changePayload }; +} + +export class PanGesture extends ContinousBaseGesture< + PanGestureHandlerEventPayload, + PanGestureChangeEventPayload +> { + public config: BaseGestureConfig & PanGestureConfig = {}; + + constructor() { + super(); + + this.handlerName = 'PanGestureHandler'; + } + + activeOffsetY(offset: number | number[]) { + if (Array.isArray(offset)) { + this.config.activeOffsetYStart = offset[0]; + this.config.activeOffsetYEnd = offset[1]; + } else if (offset < 0) { + this.config.activeOffsetYStart = offset; + } else { + this.config.activeOffsetYEnd = offset; + } + return this; + } + + activeOffsetX(offset: number | number[]) { + if (Array.isArray(offset)) { + this.config.activeOffsetXStart = offset[0]; + this.config.activeOffsetXEnd = offset[1]; + } else if (offset < 0) { + this.config.activeOffsetXStart = offset; + } else { + this.config.activeOffsetXEnd = offset; + } + return this; + } + + failOffsetY(offset: number | number[]) { + if (Array.isArray(offset)) { + this.config.failOffsetYStart = offset[0]; + this.config.failOffsetYEnd = offset[1]; + } else if (offset < 0) { + this.config.failOffsetYStart = offset; + } else { + this.config.failOffsetYEnd = offset; + } + return this; + } + + failOffsetX(offset: number | number[]) { + if (Array.isArray(offset)) { + this.config.failOffsetXStart = offset[0]; + this.config.failOffsetXEnd = offset[1]; + } else if (offset < 0) { + this.config.failOffsetXStart = offset; + } else { + this.config.failOffsetXEnd = offset; + } + return this; + } + + minPointers(minPointers: number) { + this.config.minPointers = minPointers; + return this; + } + + maxPointers(maxPointers: number) { + this.config.maxPointers = maxPointers; + return this; + } + + minDistance(distance: number) { + this.config.minDist = distance; + return this; + } + + minVelocity(velocity: number) { + this.config.minVelocity = velocity; + return this; + } + + minVelocityX(velocity: number) { + this.config.minVelocityX = velocity; + return this; + } + + minVelocityY(velocity: number) { + this.config.minVelocityY = velocity; + return this; + } + + averageTouches(value: boolean) { + this.config.avgTouches = value; + return this; + } + + enableTrackpadTwoFingerGesture(value: boolean) { + this.config.enableTrackpadTwoFingerGesture = value; + return this; + } + + activateAfterLongPress(duration: number) { + this.config.activateAfterLongPress = duration; + return this; + } + + onChange( + callback: ( + event: GestureUpdateEvent< + PanGestureHandlerEventPayload & PanGestureChangeEventPayload + > + ) => void + ) { + // @ts-ignore TS being overprotective, PanGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } +} + +export type PanGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/pinchGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/pinchGesture.ts new file mode 100644 index 00000000..69416bd3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/pinchGesture.ts @@ -0,0 +1,51 @@ +import { ContinousBaseGesture } from './gesture'; +import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; + +export type PinchGestureChangeEventPayload = { + scaleChange: number; +}; + +function changeEventCalculator( + current: GestureUpdateEvent, + previous?: GestureUpdateEvent +) { + 'worklet'; + let changePayload: PinchGestureChangeEventPayload; + if (previous === undefined) { + changePayload = { + scaleChange: current.scale, + }; + } else { + changePayload = { + scaleChange: current.scale / previous.scale, + }; + } + + return { ...current, ...changePayload }; +} + +export class PinchGesture extends ContinousBaseGesture< + PinchGestureHandlerEventPayload, + PinchGestureChangeEventPayload +> { + constructor() { + super(); + + this.handlerName = 'PinchGestureHandler'; + } + + onChange( + callback: ( + event: GestureUpdateEvent< + PinchGestureHandlerEventPayload & PinchGestureChangeEventPayload + > + ) => void + ) { + // @ts-ignore TS being overprotective, PinchGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } +} + +export type PinchGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts new file mode 100644 index 00000000..6c89a988 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/reanimatedWrapper.ts @@ -0,0 +1,55 @@ +import { ComponentClass } from 'react'; +import { + GestureUpdateEvent, + GestureStateChangeEvent, +} from '../gestureHandlerCommon'; +import { tagMessage } from '../../utils'; + +export interface SharedValue { + value: T; +} + +let Reanimated: { + default: { + // Slightly modified definition copied from 'react-native-reanimated' + // eslint-disable-next-line @typescript-eslint/ban-types + createAnimatedComponent

( + component: ComponentClass

, + options?: unknown + ): ComponentClass

; + }; + useEvent: ( + callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void, + events: string[], + rebuild: boolean + ) => unknown; + useSharedValue: (value: T) => SharedValue; + setGestureState: (handlerTag: number, newState: number) => void; +}; + +try { + Reanimated = require('react-native-reanimated'); + + if (!Reanimated.useSharedValue) { + // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not + // reset the module to undefined so we can fallback to the default implementation + Reanimated = undefined; + throw new Error('react-native-reanimated is not found'); + } + + if (!Reanimated.setGestureState) { + Reanimated.setGestureState = () => { + 'worklet'; + console.warn( + tagMessage( + 'Please use newer version of react-native-reanimated in order to control state of the gestures.' + ) + ); + }; + } + // When 'react-native-reanimated' is not available we want to + // quietly continue + // eslint-disable-next-line no-empty +} catch (e) {} + +export { Reanimated }; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/rotationGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/rotationGesture.ts new file mode 100644 index 00000000..7bac7855 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/rotationGesture.ts @@ -0,0 +1,51 @@ +import { ContinousBaseGesture } from './gesture'; +import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler'; +import { GestureUpdateEvent } from '../gestureHandlerCommon'; + +type RotationGestureChangeEventPayload = { + rotationChange: number; +}; + +function changeEventCalculator( + current: GestureUpdateEvent, + previous?: GestureUpdateEvent +) { + 'worklet'; + let changePayload: RotationGestureChangeEventPayload; + if (previous === undefined) { + changePayload = { + rotationChange: current.rotation, + }; + } else { + changePayload = { + rotationChange: current.rotation - previous.rotation, + }; + } + + return { ...current, ...changePayload }; +} + +export class RotationGesture extends ContinousBaseGesture< + RotationGestureHandlerEventPayload, + RotationGestureChangeEventPayload +> { + constructor() { + super(); + + this.handlerName = 'RotationGestureHandler'; + } + + onChange( + callback: ( + event: GestureUpdateEvent< + RotationGestureHandlerEventPayload & RotationGestureChangeEventPayload + > + ) => void + ) { + // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record + this.handlers.changeEventCalculator = changeEventCalculator; + return super.onChange(callback); + } +} + +export type RotationGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/tapGesture.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/tapGesture.ts new file mode 100644 index 00000000..e09ab3f3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/gestures/tapGesture.ts @@ -0,0 +1,53 @@ +import { BaseGestureConfig, BaseGesture } from './gesture'; +import { + TapGestureConfig, + TapGestureHandlerEventPayload, +} from '../TapGestureHandler'; + +export class TapGesture extends BaseGesture { + public config: BaseGestureConfig & TapGestureConfig = {}; + + constructor() { + super(); + + this.handlerName = 'TapGestureHandler'; + this.shouldCancelWhenOutside(true); + } + + minPointers(minPointers: number) { + this.config.minPointers = minPointers; + return this; + } + + numberOfTaps(count: number) { + this.config.numberOfTaps = count; + return this; + } + + maxDistance(maxDist: number) { + this.config.maxDist = maxDist; + return this; + } + + maxDuration(duration: number) { + this.config.maxDurationMs = duration; + return this; + } + + maxDelay(delay: number) { + this.config.maxDelayMs = delay; + return this; + } + + maxDeltaX(delta: number) { + this.config.maxDeltaX = delta; + return this; + } + + maxDeltaY(delta: number) { + this.config.maxDeltaY = delta; + return this; + } +} + +export type TapGestureType = InstanceType; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/handlersRegistry.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/handlersRegistry.ts new file mode 100644 index 00000000..87f13fda --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/handlers/handlersRegistry.ts @@ -0,0 +1,60 @@ +import { isJestEnv } from '../utils'; +import { GestureType } from './gestures/gesture'; +import { GestureEvent, HandlerStateChangeEvent } from './gestureHandlerCommon'; + +export const handlerIDToTag: Record = {}; +const gestures = new Map(); +const oldHandlers = new Map(); +const testIDs = new Map(); + +let handlerTag = 1; + +export function getNextHandlerTag(): number { + return handlerTag++; +} + +export function registerHandler( + handlerTag: number, + handler: GestureType, + testID?: string +) { + gestures.set(handlerTag, handler); + if (isJestEnv() && testID) { + testIDs.set(testID, handlerTag); + } +} + +export function registerOldGestureHandler( + handlerTag: number, + handler: GestureHandlerCallbacks +) { + oldHandlers.set(handlerTag, handler); +} + +export function unregisterHandler(handlerTag: number, testID?: string) { + gestures.delete(handlerTag); + if (isJestEnv() && testID) { + testIDs.delete(testID); + } +} + +export function findHandler(handlerTag: number) { + return gestures.get(handlerTag); +} + +export function findOldGestureHandler(handlerTag: number) { + return oldHandlers.get(handlerTag); +} + +export function findHandlerByTestID(testID: string) { + const handlerTag = testIDs.get(testID); + if (handlerTag !== undefined) { + return findHandler(handlerTag) ?? null; + } + return null; +} + +export interface GestureHandlerCallbacks { + onGestureEvent: (event: GestureEvent) => void; + onGestureStateChange: (event: HandlerStateChangeEvent) => void; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/index.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/index.ts new file mode 100644 index 00000000..492c9758 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/index.ts @@ -0,0 +1,162 @@ +import { initialize } from './init'; + +export { Directions } from './Directions'; +export { State } from './State'; +export { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC'; +export { default as GestureHandlerRootView } from './GestureHandlerRootView'; +export type { + // event types + GestureEvent, + HandlerStateChangeEvent, + // event payloads types + GestureEventPayload, + HandlerStateChangeEventPayload, + // pointer events + GestureTouchEvent, + TouchData, + // new api event types + GestureUpdateEvent, + GestureStateChangeEvent, +} from './handlers/gestureHandlerCommon'; +export type { GestureType } from './handlers/gestures/gesture'; +export type { + TapGestureHandlerEventPayload, + TapGestureHandlerProps, +} from './handlers/TapGestureHandler'; +export type { + ForceTouchGestureHandlerEventPayload, + ForceTouchGestureHandlerProps, +} from './handlers/ForceTouchGestureHandler'; +export type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture'; +export type { + LongPressGestureHandlerEventPayload, + LongPressGestureHandlerProps, +} from './handlers/LongPressGestureHandler'; +export type { + PanGestureHandlerEventPayload, + PanGestureHandlerProps, +} from './handlers/PanGestureHandler'; +export type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture'; +export type { + PinchGestureHandlerEventPayload, + PinchGestureHandlerProps, +} from './handlers/PinchGestureHandler'; +export type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture'; +export type { + RotationGestureHandlerEventPayload, + RotationGestureHandlerProps, +} from './handlers/RotationGestureHandler'; +export type { + FlingGestureHandlerEventPayload, + FlingGestureHandlerProps, +} from './handlers/FlingGestureHandler'; +export { TapGestureHandler } from './handlers/TapGestureHandler'; +export { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler'; +export { LongPressGestureHandler } from './handlers/LongPressGestureHandler'; +export { PanGestureHandler } from './handlers/PanGestureHandler'; +export { PinchGestureHandler } from './handlers/PinchGestureHandler'; +export { RotationGestureHandler } from './handlers/RotationGestureHandler'; +export { FlingGestureHandler } from './handlers/FlingGestureHandler'; +export { default as createNativeWrapper } from './handlers/createNativeWrapper'; +export type { + NativeViewGestureHandlerPayload, + NativeViewGestureHandlerProps, +} from './handlers/NativeViewGestureHandler'; +export { GestureDetector } from './handlers/gestures/GestureDetector'; +export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects'; +export type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture'; +export type { PanGestureType as PanGesture } from './handlers/gestures/panGesture'; +export type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture'; +export type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture'; +export type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture'; +export type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture'; +export type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture'; +export type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture'; +export type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture'; +export type { + ComposedGestureType as ComposedGesture, + RaceGestureType as RaceGesture, + SimultaneousGestureType as SimultaneousGesture, + ExclusiveGestureType as ExclusiveGesture, +} from './handlers/gestures/gestureComposition'; +export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager'; +export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler'; +export type { + RawButtonProps, + BaseButtonProps, + RectButtonProps, + BorderlessButtonProps, +} from './components/GestureButtons'; +export { + RawButton, + BaseButton, + RectButton, + BorderlessButton, +} from './components/GestureButtons'; +export { + TouchableHighlight, + TouchableNativeFeedback, + TouchableOpacity, + TouchableWithoutFeedback, +} from './components/touchables'; +export { + ScrollView, + Switch, + TextInput, + DrawerLayoutAndroid, + FlatList, + RefreshControl, +} from './components/GestureComponents'; +export type { + //events + GestureHandlerGestureEvent, + GestureHandlerStateChangeEvent, + //event payloads + GestureHandlerGestureEventNativeEvent, + GestureHandlerStateChangeNativeEvent, + NativeViewGestureHandlerGestureEvent, + NativeViewGestureHandlerStateChangeEvent, + TapGestureHandlerGestureEvent, + TapGestureHandlerStateChangeEvent, + ForceTouchGestureHandlerGestureEvent, + ForceTouchGestureHandlerStateChangeEvent, + LongPressGestureHandlerGestureEvent, + LongPressGestureHandlerStateChangeEvent, + PanGestureHandlerGestureEvent, + PanGestureHandlerStateChangeEvent, + PinchGestureHandlerGestureEvent, + PinchGestureHandlerStateChangeEvent, + RotationGestureHandlerGestureEvent, + RotationGestureHandlerStateChangeEvent, + FlingGestureHandlerGestureEvent, + FlingGestureHandlerStateChangeEvent, + // handlers props + NativeViewGestureHandlerProperties, + TapGestureHandlerProperties, + LongPressGestureHandlerProperties, + PanGestureHandlerProperties, + PinchGestureHandlerProperties, + RotationGestureHandlerProperties, + FlingGestureHandlerProperties, + ForceTouchGestureHandlerProperties, + // buttons props + RawButtonProperties, + BaseButtonProperties, + RectButtonProperties, + BorderlessButtonProperties, +} from './handlers/gestureHandlerTypesCompat'; + +export { default as Swipeable } from './components/Swipeable'; +export type { + DrawerLayoutProps, + DrawerPosition, + DrawerState, + DrawerType, + DrawerLockMode, + DrawerKeyboardDismissMode, +} from './components/DrawerLayout'; +export { default as DrawerLayout } from './components/DrawerLayout'; + +export { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation'; + +initialize(); diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/init.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/init.ts new file mode 100644 index 00000000..3f753cd7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/init.ts @@ -0,0 +1,18 @@ +import { startListening } from './handlers/gestures/eventReceiver'; +import RNGestureHandlerModule from './RNGestureHandlerModule'; +import { isFabric } from './utils'; + +let fabricInitialized = false; + +export function initialize() { + startListening(); +} + +// since isFabric() may give wrong results before the first render, we call this +// method during render of GestureHandlerRootView +export function maybeInitializeFabric() { + if (isFabric() && !fabricInitialized) { + RNGestureHandlerModule.install(); + fabricInitialized = true; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/index.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/index.ts new file mode 100644 index 00000000..9e92b72d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/index.ts @@ -0,0 +1 @@ +export { getByGestureTestId, fireGestureHandler } from './jestUtils'; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/jestUtils.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/jestUtils.ts new file mode 100644 index 00000000..4e7c54d4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/jestUtils/jestUtils.ts @@ -0,0 +1,505 @@ +import invariant from 'invariant'; +import { DeviceEventEmitter } from 'react-native'; +import { ReactTestInstance } from 'react-test-renderer'; +import { + FlingGestureHandler, + FlingGestureHandlerEventPayload, + flingHandlerName, +} from '../handlers/FlingGestureHandler'; +import { + ForceTouchGestureHandler, + ForceTouchGestureHandlerEventPayload, + forceTouchHandlerName, +} from '../handlers/ForceTouchGestureHandler'; +import { + BaseGestureHandlerProps, + GestureEvent, + HandlerStateChangeEvent, +} from '../handlers/gestureHandlerCommon'; +import { FlingGesture } from '../handlers/gestures/flingGesture'; +import { ForceTouchGesture } from '../handlers/gestures/forceTouchGesture'; +import { BaseGesture, GestureType } from '../handlers/gestures/gesture'; +import { LongPressGesture } from '../handlers/gestures/longPressGesture'; +import { NativeGesture } from '../handlers/gestures/nativeGesture'; +import { PanGesture } from '../handlers/gestures/panGesture'; +import { PinchGesture } from '../handlers/gestures/pinchGesture'; +import { RotationGesture } from '../handlers/gestures/rotationGesture'; +import { TapGesture } from '../handlers/gestures/tapGesture'; +import { findHandlerByTestID } from '../handlers/handlersRegistry'; +import { + LongPressGestureHandler, + LongPressGestureHandlerEventPayload, + longPressHandlerName, +} from '../handlers/LongPressGestureHandler'; +import { + NativeViewGestureHandler, + NativeViewGestureHandlerPayload, + nativeViewHandlerName, +} from '../handlers/NativeViewGestureHandler'; +import { + PanGestureHandler, + PanGestureHandlerEventPayload, + panHandlerName, +} from '../handlers/PanGestureHandler'; +import { + PinchGestureHandler, + PinchGestureHandlerEventPayload, + pinchHandlerName, +} from '../handlers/PinchGestureHandler'; +import { + RotationGestureHandler, + RotationGestureHandlerEventPayload, + rotationHandlerName, +} from '../handlers/RotationGestureHandler'; +import { + TapGestureHandler, + TapGestureHandlerEventPayload, + tapHandlerName, +} from '../handlers/TapGestureHandler'; +import { State } from '../State'; +import { hasProperty, withPrevAndCurrent } from '../utils'; + +// load fireEvent conditionally, so RNGH may be used in setups without testing-library +let fireEvent = ( + _element: ReactTestInstance, + _name: string, + ..._data: any[] +) => { + // NOOP +}; + +try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + fireEvent = require('@testing-library/react-native').fireEvent; +} catch (_e) { + // do nothing if not available +} + +type GestureHandlerTestEvent< + TEventPayload extends Record = Record +> = ( + | GestureEvent + | HandlerStateChangeEvent +)['nativeEvent']; + +type HandlerNames = keyof DefaultEventsMapping; + +type WithNumberOfPointers = { + [P in keyof T]: T[P] & { numberOfPointers: number }; +}; +type DefaultEventsMapping = WithNumberOfPointers<{ + [flingHandlerName]: FlingGestureHandlerEventPayload; + [forceTouchHandlerName]: ForceTouchGestureHandlerEventPayload; + [longPressHandlerName]: LongPressGestureHandlerEventPayload; + [nativeViewHandlerName]: NativeViewGestureHandlerPayload; + [panHandlerName]: PanGestureHandlerEventPayload; + [pinchHandlerName]: PinchGestureHandlerEventPayload; + [rotationHandlerName]: RotationGestureHandlerEventPayload; + [tapHandlerName]: TapGestureHandlerEventPayload; +}>; + +const handlersDefaultEvents: DefaultEventsMapping = { + [flingHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + numberOfPointers: 1, + }, + [forceTouchHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + force: 1, + numberOfPointers: 1, + }, + [longPressHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + duration: 100, + numberOfPointers: 1, + }, + [nativeViewHandlerName]: { + pointerInside: true, + numberOfPointers: 1, + }, + [panHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + translationX: 100, + translationY: 0, + velocityX: 3, + velocityY: 0, + numberOfPointers: 1, + }, + [pinchHandlerName]: { + focalX: 0, + focalY: 0, + scale: 2, + velocity: 1, + numberOfPointers: 2, + }, + [rotationHandlerName]: { + anchorX: 0, + anchorY: 0, + rotation: 3.14, + velocity: 2, + numberOfPointers: 2, + }, + [tapHandlerName]: { + x: 0, + y: 0, + absoluteX: 0, + absoluteY: 0, + numberOfPointers: 1, + }, +}; + +function isGesture( + componentOrGesture: ReactTestInstance | GestureType +): componentOrGesture is GestureType { + return componentOrGesture instanceof BaseGesture; +} + +interface WrappedGestureHandlerTestEvent { + nativeEvent: GestureHandlerTestEvent; +} +function wrapWithNativeEvent( + event: GestureHandlerTestEvent +): WrappedGestureHandlerTestEvent { + return { nativeEvent: event }; +} + +function fillOldStateChanges( + previousEvent: GestureHandlerTestEvent | null, + currentEvent: Omit +): GestureHandlerTestEvent { + const isFirstEvent = previousEvent === null; + if (isFirstEvent) { + return { + oldState: State.UNDETERMINED, + ...currentEvent, + } as GestureHandlerTestEvent; + } + + const isGestureStateEvent = previousEvent.state !== currentEvent.state; + if (isGestureStateEvent) { + return { + oldState: previousEvent?.state, + ...currentEvent, + } as GestureHandlerTestEvent; + } else { + return currentEvent as GestureHandlerTestEvent; + } +} + +type EventWithStates = Partial< + Pick +>; +function validateStateTransitions( + previousEvent: EventWithStates | null, + currentEvent: EventWithStates +) { + function stringify(event: Record | null) { + return JSON.stringify(event, null, 2); + } + function errorMsgWithBothEvents(description: string) { + return `${description}, invalid event: ${stringify( + currentEvent + )}, previous event: ${stringify(previousEvent)}`; + } + + function errorMsgWithCurrentEvent(description: string) { + return `${description}, invalid event: ${stringify(currentEvent)}`; + } + + invariant( + hasProperty(currentEvent, 'state'), + errorMsgWithCurrentEvent('every event must have state') + ); + + const isFirstEvent = previousEvent === null; + if (isFirstEvent) { + invariant( + currentEvent.state === State.BEGAN, + errorMsgWithCurrentEvent('first event must have BEGAN state') + ); + } + + if (previousEvent !== null) { + if (previousEvent.state !== currentEvent.state) { + invariant( + hasProperty(currentEvent, 'oldState'), + errorMsgWithCurrentEvent( + 'when state changes, oldState field should be present' + ) + ); + invariant( + currentEvent.oldState === previousEvent.state, + errorMsgWithBothEvents( + "when state changes, oldState should be the same as previous event' state" + ) + ); + } + } + + return currentEvent; +} + +type EventWithoutStates = Omit; +interface HandlerInfo { + handlerType: HandlerNames; + handlerTag: number; +} +function fillMissingDefaultsFor({ + handlerType, + handlerTag, +}: HandlerInfo): ( + event: Partial +) => EventWithoutStates { + return (event) => { + return { + ...handlersDefaultEvents[handlerType], + ...event, + handlerTag, + }; + }; +} + +function isDiscreteHandler(handlerType: HandlerNames) { + return ( + handlerType === 'TapGestureHandler' || + handlerType === 'LongPressGestureHandler' + ); +} + +function fillMissingStatesTransitions( + events: EventWithoutStates[], + isDiscreteHandler: boolean +): EventWithoutStates[] { + type Event = EventWithoutStates | null; + const _events = [...events]; + const lastEvent = _events[_events.length - 1] ?? null; + const firstEvent = _events[0] ?? null; + + const shouldDuplicateFirstEvent = + !isDiscreteHandler && !hasState(State.BEGAN)(firstEvent); + if (shouldDuplicateFirstEvent) { + const duplicated = { ...firstEvent, state: State.BEGAN }; + // @ts-ignore badly typed, property may exist and we don't want to copy it + delete duplicated.oldState; + _events.unshift(duplicated); + } + + const shouldDuplicateLastEvent = + !hasState(State.END)(lastEvent) || + !hasState(State.FAILED)(lastEvent) || + !hasState(State.CANCELLED)(lastEvent); + + if (shouldDuplicateLastEvent) { + const duplicated = { ...lastEvent, state: State.END }; + // @ts-ignore badly typed, property may exist and we don't want to copy it + delete duplicated.oldState; + _events.push(duplicated); + } + + function isWithoutState(event: Event) { + return event !== null && !hasProperty(event, 'state'); + } + function hasState(state: State) { + return (event: Event) => event !== null && event.state === state; + } + function noEventsLeft(event: Event) { + return event === null; + } + + function trueFn() { + return true; + } + interface Args { + shouldConsumeEvent?: (event: Event) => boolean; + shouldTransitionToNextState?: (nextEvent: Event) => boolean; + } + function fillEventsForCurrentState({ + shouldConsumeEvent = trueFn, + shouldTransitionToNextState = trueFn, + }: Args) { + function peekCurrentEvent(): Event { + return _events[0] ?? null; + } + function peekNextEvent(): Event { + return _events[1] ?? null; + } + function consumeCurrentEvent() { + _events.shift(); + } + const currentEvent = peekCurrentEvent(); + const nextEvent = peekNextEvent(); + const currentRequiredState = REQUIRED_EVENTS[currentStateIdx]; + + let eventData = {}; + const shouldUseEvent = shouldConsumeEvent(currentEvent); + if (shouldUseEvent) { + eventData = currentEvent!; + consumeCurrentEvent(); + } + transformedEvents.push({ state: currentRequiredState, ...eventData }); + if (shouldTransitionToNextState(nextEvent)) { + currentStateIdx++; + } + } + + const REQUIRED_EVENTS = [State.BEGAN, State.ACTIVE, State.END]; + + let currentStateIdx = 0; + const transformedEvents: EventWithoutStates[] = []; + let hasAllStates; + let iterations = 0; + do { + const nextRequiredState = REQUIRED_EVENTS[currentStateIdx]; + if (nextRequiredState === State.BEGAN) { + fillEventsForCurrentState({ + shouldConsumeEvent: (e: Event) => + isWithoutState(e) || hasState(State.BEGAN)(e), + }); + } else if (nextRequiredState === State.ACTIVE) { + const shouldConsumeEvent = (e: Event) => + isWithoutState(e) || hasState(State.ACTIVE)(e); + const shouldTransitionToNextState = (nextEvent: Event) => + noEventsLeft(nextEvent) || + hasState(State.END)(nextEvent) || + hasState(State.FAILED)(nextEvent) || + hasState(State.CANCELLED)(nextEvent); + + fillEventsForCurrentState({ + shouldConsumeEvent, + shouldTransitionToNextState, + }); + } else if (nextRequiredState === State.END) { + fillEventsForCurrentState({}); + } + hasAllStates = currentStateIdx === REQUIRED_EVENTS.length; + + invariant( + iterations++ <= 500, + 'exceeded max number of iterations, please report a bug in RNGH repository with your test case' + ); + } while (!hasAllStates); + + return transformedEvents; +} + +type EventEmitter = ( + eventName: string, + args: { nativeEvent: GestureHandlerTestEvent } +) => void; +interface HandlerData { + emitEvent: EventEmitter; + handlerType: HandlerNames; + handlerTag: number; +} +function getHandlerData( + componentOrGesture: ReactTestInstance | GestureType +): HandlerData { + if (isGesture(componentOrGesture)) { + const gesture = componentOrGesture; + return { + emitEvent: (eventName, args) => { + DeviceEventEmitter.emit(eventName, args.nativeEvent); + }, + handlerType: gesture.handlerName as HandlerNames, + handlerTag: gesture.handlerTag, + }; + } + const gestureHandlerComponent = componentOrGesture; + return { + emitEvent: (eventName, args) => { + fireEvent(gestureHandlerComponent, eventName, args); + }, + handlerType: gestureHandlerComponent.props.handlerType as HandlerNames, + handlerTag: gestureHandlerComponent.props.handlerTag as number, + }; +} +type AllGestures = + | TapGesture + | PanGesture + | LongPressGesture + | RotationGesture + | PinchGesture + | FlingGesture + | ForceTouchGesture + | NativeGesture; + +type AllHandlers = + | TapGestureHandler + | PanGestureHandler + | LongPressGestureHandler + | RotationGestureHandler + | PinchGestureHandler + | FlingGestureHandler + | ForceTouchGestureHandler + | NativeViewGestureHandler; + +// prettier-ignore +type ClassComponentConstructor

= new (props: P) => React.Component; + +type ExtractPayloadFromProps = T extends BaseGestureHandlerProps< + infer TPayload +> + ? TPayload + : never; + +type ExtractConfig = T extends BaseGesture + ? TGesturePayload + : T extends ClassComponentConstructor + ? ExtractPayloadFromProps + : Record; + +export function fireGestureHandler( + componentOrGesture: ReactTestInstance | GestureType, + eventList: Partial>>[] = [] +): void { + const { emitEvent, handlerType, handlerTag } = + getHandlerData(componentOrGesture); + + let _ = fillMissingStatesTransitions( + eventList, + isDiscreteHandler(handlerType) + ); + _ = _.map(fillMissingDefaultsFor({ handlerTag, handlerType })); + _ = withPrevAndCurrent(_, fillOldStateChanges); + _ = withPrevAndCurrent(_, validateStateTransitions); + // @ts-ignore TODO + _ = _.map(wrapWithNativeEvent); + + const events = _ as unknown as WrappedGestureHandlerTestEvent[]; + + const firstEvent = events.shift()!; + + emitEvent('onGestureHandlerStateChange', firstEvent); + let lastSentEvent = firstEvent; + for (const event of events) { + const hasChangedState = + lastSentEvent.nativeEvent.state !== event.nativeEvent.state; + + if (hasChangedState) { + emitEvent('onGestureHandlerStateChange', event); + } else { + emitEvent('onGestureHandlerEvent', event); + } + lastSentEvent = event; + } +} + +export function getByGestureTestId(testID: string) { + const handler = findHandlerByTestID(testID); + if (handler === null) { + throw new Error(`Handler with id: '${testID}' cannot be found`); + } + return handler; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/mocks.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/mocks.ts new file mode 100644 index 00000000..e3cf6e58 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/mocks.ts @@ -0,0 +1,67 @@ +import { + TouchableHighlight, + TouchableNativeFeedback, + TouchableOpacity, + TouchableWithoutFeedback, + ScrollView, + FlatList, + Switch, + TextInput, + DrawerLayoutAndroid, + View, +} from 'react-native'; +import { State } from './State'; +import { Directions } from './Directions'; + +const NOOP = () => { + // do nothing +}; +const PanGestureHandler = View; +const attachGestureHandler = NOOP; +const createGestureHandler = NOOP; +const dropGestureHandler = NOOP; +const updateGestureHandler = NOOP; +const flushOperations = NOOP; +const NativeViewGestureHandler = View; +const TapGestureHandler = View; +const ForceTouchGestureHandler = View; +const LongPressGestureHandler = View; +const PinchGestureHandler = View; +const RotationGestureHandler = View; +const FlingGestureHandler = View; +const RawButton = TouchableNativeFeedback; +const BaseButton = TouchableNativeFeedback; +const RectButton = TouchableNativeFeedback; +const BorderlessButton = TouchableNativeFeedback; + +export default { + TouchableHighlight, + TouchableNativeFeedback, + TouchableOpacity, + TouchableWithoutFeedback, + ScrollView, + FlatList, + Switch, + TextInput, + DrawerLayoutAndroid, + NativeViewGestureHandler, + TapGestureHandler, + ForceTouchGestureHandler, + LongPressGestureHandler, + PinchGestureHandler, + RotationGestureHandler, + FlingGestureHandler, + RawButton, + BaseButton, + RectButton, + BorderlessButton, + PanGestureHandler, + attachGestureHandler, + createGestureHandler, + dropGestureHandler, + updateGestureHandler, + flushOperations, + // probably can be removed + Directions, + State, +} as const; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/typeUtils.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/typeUtils.ts new file mode 100644 index 00000000..5f2cf2cf --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/typeUtils.ts @@ -0,0 +1 @@ +export type ValueOf = T[keyof T]; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/utils.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/utils.ts new file mode 100644 index 00000000..6b76006d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/utils.ts @@ -0,0 +1,67 @@ +import pack from 'react-native/package.json'; + +const [majorStr, minorStr] = pack.version.split('.'); +export const REACT_NATIVE_VERSION = { + major: parseInt(majorStr, 10), + minor: parseInt(minorStr, 10), +}; + +export function toArray(object: T | T[]): T[] { + if (!Array.isArray(object)) { + return [object]; + } + + return object; +} + +export type withPrevAndCurrentMapFn = ( + previous: Transformed | null, + current: T +) => Transformed; +export function withPrevAndCurrent( + array: T[], + mapFn: withPrevAndCurrentMapFn +): Transformed[] { + const previousArr: (null | Transformed)[] = [null]; + const currentArr = [...array]; + const transformedArr: Transformed[] = []; + currentArr.forEach((current, i) => { + const previous = previousArr[i]; + const transformed = mapFn(previous, current); + previousArr.push(transformed); + transformedArr.push(transformed); + }); + return transformedArr; +} + +// eslint-disable-next-line @typescript-eslint/ban-types +export function hasProperty(object: object, key: string) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +export function isJestEnv(): boolean { + // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects. + return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID; +} + +export function tagMessage(msg: string) { + return `[react-native-gesture-handler] ${msg}`; +} + +// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager +// may not be initialized before the first render +export function isFabric(): boolean { + // @ts-expect-error nativeFabricUIManager is not yet included in the RN types + return !!global?.nativeFabricUIManager; +} + +export function shouldUseCodegenNativeComponent(): boolean { + // use codegenNativeComponent starting with RN 0.68 + return REACT_NATIVE_VERSION.minor >= 68 || REACT_NATIVE_VERSION.major > 0; +} + +export function isRemoteDebuggingEnabled(): boolean { + // react-native-reanimated checks if in remote debugging in the same way + // @ts-ignore global is available but node types are not included + return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/constants.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/constants.ts new file mode 100644 index 00000000..51aba8a2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/constants.ts @@ -0,0 +1,8 @@ +export const DEFAULT_TOUCH_SLOP = 15; + +export const Direction = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8, +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/RotationGestureDetector.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/RotationGestureDetector.ts new file mode 100644 index 00000000..482b7a7a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/RotationGestureDetector.ts @@ -0,0 +1,168 @@ +import { AdaptedEvent, EventTypes } from '../interfaces'; +import PointerTracker from '../tools/PointerTracker'; + +export interface RotationGestureListener { + onRotationBegin: (detector: RotationGestureDetector) => boolean; + onRotation: (detector: RotationGestureDetector) => boolean; + onRotationEnd: (detector: RotationGestureDetector) => void; +} + +export default class RotationGestureDetector + implements RotationGestureListener +{ + onRotationBegin: (detector: RotationGestureDetector) => boolean; + onRotation: (detector: RotationGestureDetector) => boolean; + onRotationEnd: (detector: RotationGestureDetector) => void; + + private currentTime = 0; + private previousTime = 0; + + private previousAngle = 0; + private rotation = 0; + + private anchorX = 0; + private anchorY = 0; + + private isInProgress = false; + + private keyPointers: number[] = [NaN, NaN]; + + constructor(callbacks: RotationGestureListener) { + this.onRotationBegin = callbacks.onRotationBegin; + this.onRotation = callbacks.onRotation; + this.onRotationEnd = callbacks.onRotationEnd; + } + + private updateCurrent(event: AdaptedEvent, tracker: PointerTracker): void { + this.previousTime = this.currentTime; + this.currentTime = event.time; + + const [firstPointerID, secondPointerID] = this.keyPointers; + + const firstPointerX: number = tracker.getLastX(firstPointerID); + const firstPointerY: number = tracker.getLastY(firstPointerID); + const secondPointerX: number = tracker.getLastX(secondPointerID); + const secondPointerY: number = tracker.getLastY(secondPointerID); + + const vectorX: number = secondPointerX - firstPointerX; + const vectorY: number = secondPointerY - firstPointerY; + + this.anchorX = (firstPointerX + secondPointerX) / 2; + this.anchorY = (firstPointerY + secondPointerY) / 2; + + //Angle diff should be positive when rotating in clockwise direction + const angle: number = -Math.atan2(vectorY, vectorX); + + this.rotation = Number.isNaN(this.previousAngle) + ? 0 + : this.previousAngle - angle; + + this.previousAngle = angle; + + if (this.rotation > Math.PI) { + this.rotation -= Math.PI; + } else if (this.rotation < -Math.PI) { + this.rotation += Math.PI; + } + + if (this.rotation > Math.PI / 2) { + this.rotation -= Math.PI; + } else if (this.rotation < -Math.PI / 2) { + this.rotation += Math.PI; + } + } + + private finish(): void { + if (!this.isInProgress) { + return; + } + + this.isInProgress = false; + this.keyPointers = [NaN, NaN]; + this.onRotationEnd(this); + } + + private setKeyPointers(tracker: PointerTracker): void { + if (this.keyPointers[0] && this.keyPointers[1]) { + return; + } + + const pointerIDs: IterableIterator = tracker.getData().keys(); + + this.keyPointers[0] = pointerIDs.next().value as number; + this.keyPointers[1] = pointerIDs.next().value as number; + } + + public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean { + switch (event.eventType) { + case EventTypes.DOWN: + this.isInProgress = false; + break; + + case EventTypes.ADDITIONAL_POINTER_DOWN: + if (this.isInProgress) { + break; + } + this.isInProgress = true; + + this.previousTime = event.time; + this.previousAngle = NaN; + + this.setKeyPointers(tracker); + + this.updateCurrent(event, tracker); + this.onRotationBegin(this); + break; + + case EventTypes.MOVE: + if (!this.isInProgress) { + break; + } + + this.updateCurrent(event, tracker); + this.onRotation(this); + + break; + + case EventTypes.ADDITIONAL_POINTER_UP: + if (!this.isInProgress) { + break; + } + + if (this.keyPointers.indexOf(event.pointerId) >= 0) { + this.finish(); + } + + break; + + case EventTypes.UP: + if (this.isInProgress) { + this.finish(); + } + break; + } + + return true; + } + + public getTimeDelta(): number { + return this.currentTime + this.previousTime; + } + + public getAnchorX(): number { + return this.anchorX; + } + + public getAnchorY(): number { + return this.anchorY; + } + + public getRotation(): number { + return this.rotation; + } + + public reset(): void { + this.keyPointers = [NaN, NaN]; + this.isInProgress = false; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/ScaleGestureDetector.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/ScaleGestureDetector.ts new file mode 100644 index 00000000..c338eb59 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/detectors/ScaleGestureDetector.ts @@ -0,0 +1,172 @@ +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import { AdaptedEvent, EventTypes } from '../interfaces'; + +import PointerTracker from '../tools/PointerTracker'; + +export interface ScaleGestureListener { + onScaleBegin: (detector: ScaleGestureDetector) => boolean; + onScale: (detector: ScaleGestureDetector) => boolean; + onScaleEnd: (detector: ScaleGestureDetector) => void; +} + +export default class ScaleGestureDetector implements ScaleGestureListener { + public onScaleBegin: (detector: ScaleGestureDetector) => boolean; + public onScale: (detector: ScaleGestureDetector) => boolean; + public onScaleEnd: (detector: ScaleGestureDetector) => void; + + private focusX!: number; + private focusY!: number; + + private currentSpan!: number; + private prevSpan!: number; + private initialSpan!: number; + + private currentTime!: number; + private prevTime!: number; + + private inProgress = false; + + private spanSlop: number; + private minSpan: number; + + public constructor(callbacks: ScaleGestureListener) { + this.onScaleBegin = callbacks.onScaleBegin; + this.onScale = callbacks.onScale; + this.onScaleEnd = callbacks.onScaleEnd; + + this.spanSlop = DEFAULT_TOUCH_SLOP * 2; + this.minSpan = 0; + } + + public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean { + this.currentTime = event.time; + + const action: EventTypes = event.eventType; + const numOfPointers = tracker.getTrackedPointersCount(); + + const streamComplete: boolean = + action === EventTypes.UP || + action === EventTypes.ADDITIONAL_POINTER_UP || + action === EventTypes.CANCEL; + + if (action === EventTypes.DOWN || streamComplete) { + if (this.inProgress) { + this.onScaleEnd(this); + this.inProgress = false; + this.initialSpan = 0; + } + + if (streamComplete) { + return true; + } + } + + const configChanged: boolean = + action === EventTypes.DOWN || + action === EventTypes.ADDITIONAL_POINTER_UP || + action === EventTypes.ADDITIONAL_POINTER_DOWN; + + const pointerUp = action === EventTypes.ADDITIONAL_POINTER_UP; + + const ignoredPointer: number | undefined = pointerUp + ? event.pointerId + : undefined; + + //Determine focal point + + const div: number = pointerUp ? numOfPointers - 1 : numOfPointers; + + const sumX = tracker.getSumX(ignoredPointer); + const sumY = tracker.getSumY(ignoredPointer); + + const focusX = sumX / div; + const focusY = sumY / div; + + //Determine average deviation from focal point + + let devSumX = 0; + let devSumY = 0; + + tracker.getData().forEach((value, key) => { + if (key === ignoredPointer) { + return; + } + + devSumX += Math.abs(value.lastX - focusX); + devSumY += Math.abs(value.lastY - focusY); + }); + + const devX: number = devSumX / div; + const devY: number = devSumY / div; + + const spanX: number = devX * 2; + const spanY: number = devY * 2; + + const span = Math.hypot(spanX, spanY); + + //Begin/end events + const wasInProgress: boolean = this.inProgress; + this.focusX = focusX; + this.focusY = focusY; + + if (this.inProgress && (span < this.minSpan || configChanged)) { + this.onScaleEnd(this); + this.inProgress = false; + this.initialSpan = span; + } + + if (configChanged) { + this.initialSpan = this.prevSpan = this.currentSpan = span; + } + + if ( + !this.inProgress && + span >= this.minSpan && + (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop) + ) { + this.prevSpan = this.currentSpan = span; + this.prevTime = this.currentTime; + this.inProgress = this.onScaleBegin(this); + } + + //Handle motion + if (action !== EventTypes.MOVE) { + return true; + } + + this.currentSpan = span; + + if (this.inProgress && !this.onScale(this)) { + return true; + } + + this.prevSpan = this.currentSpan; + this.prevTime = this.currentTime; + + return true; + } + + public getCurrentSpan(): number { + return this.currentSpan; + } + + public getFocusX(): number { + return this.focusX; + } + + public getFocusY(): number { + return this.focusY; + } + + public getTimeDelta(): number { + return this.currentTime - this.prevTime; + } + + public getScaleFactor(numOfPointers: number): number { + if (numOfPointers < 2) { + return 1; + } + + return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/FlingGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/FlingGestureHandler.ts new file mode 100644 index 00000000..76bda7c8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/FlingGestureHandler.ts @@ -0,0 +1,177 @@ +import { State } from '../../State'; +import { Direction } from '../constants'; +import { AdaptedEvent, Config } from '../interfaces'; + +import GestureHandler from './GestureHandler'; + +const DEFAULT_MAX_DURATION_MS = 800; +const DEFAULT_MIN_ACCEPTABLE_DELTA = 160; +const DEFAULT_DIRECTION = Direction.RIGHT; +const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1; + +export default class FlingGestureHandler extends GestureHandler { + private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED; + private direction = DEFAULT_DIRECTION; + + private maxDurationMs = DEFAULT_MAX_DURATION_MS; + private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA; + private delayTimeout!: number; + + private startX = 0; + private startY = 0; + + private maxNumberOfPointersSimultaneously = 0; + private keyPointer = NaN; + + public init(ref: number, propsRef: React.RefObject): void { + super.init(ref, propsRef); + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + + if (this.config.direction) { + this.direction = this.config.direction; + } + + if (this.config.numberOfPointers) { + this.numberOfPointersRequired = this.config.numberOfPointers; + } + } + + protected transformNativeEvent() { + const rect: DOMRect = this.view.getBoundingClientRect(); + + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + }; + } + + private startFling(): void { + this.startX = this.tracker.getLastX(this.keyPointer); + this.startY = this.tracker.getLastY(this.keyPointer); + + this.begin(); + + this.maxNumberOfPointersSimultaneously = 1; + + this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs); + } + + private tryEndFling(): boolean { + if ( + this.maxNumberOfPointersSimultaneously === + this.numberOfPointersRequired && + ((this.direction & Direction.RIGHT && + this.tracker.getLastX(this.keyPointer) - this.startX > + this.minAcceptableDelta) || + (this.direction & Direction.LEFT && + this.startX - this.tracker.getLastX(this.keyPointer) > + this.minAcceptableDelta) || + (this.direction & Direction.UP && + this.startY - this.tracker.getLastY(this.keyPointer) > + this.minAcceptableDelta) || + (this.direction & Direction.DOWN && + this.tracker.getLastY(this.keyPointer) - this.startY > + this.minAcceptableDelta)) + ) { + clearTimeout(this.delayTimeout); + this.activate(); + + return true; + } + + return false; + } + + private endFling() { + if (!this.tryEndFling()) { + this.fail(); + } + } + + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + this.keyPointer = event.pointerId; + + super.onPointerDown(event); + this.newPointerAction(); + } + + protected onPointerAdd(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.newPointerAction(); + } + + private newPointerAction(): void { + if (this.currentState === State.UNDETERMINED) { + this.startFling(); + } + + if (this.currentState !== State.BEGAN) { + return; + } + + this.tryEndFling(); + + if ( + this.tracker.getTrackedPointersCount() > + this.maxNumberOfPointersSimultaneously + ) { + this.maxNumberOfPointersSimultaneously = + this.tracker.getTrackedPointersCount(); + } + } + + protected onPointerMove(event: AdaptedEvent): void { + this.tracker.track(event); + + if (this.currentState !== State.BEGAN) { + return; + } + + this.tryEndFling(); + + super.onPointerMove(event); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.onUp(event); + + this.keyPointer = NaN; + } + + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.onUp(event); + } + + private onUp(event: AdaptedEvent): void { + this.tracker.removeFromTracker(event.pointerId); + if (this.currentState !== State.BEGAN) { + return; + } + this.endFling(); + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + this.reset(); + } + + public activate(force?: boolean): void { + super.activate(force); + this.end(); + } + + protected resetConfig(): void { + super.resetConfig(); + this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED; + this.direction = DEFAULT_DIRECTION; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/GestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/GestureHandler.ts new file mode 100644 index 00000000..93cf4619 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/GestureHandler.ts @@ -0,0 +1,866 @@ +/* eslint-disable @typescript-eslint/no-empty-function */ +import { findNodeHandle } from 'react-native'; +import { State } from '../../State'; +import { + Config, + AdaptedEvent, + PropsRef, + ResultEvent, + PointerData, + ResultTouchEvent, + PointerType, + TouchEventType, + EventTypes, +} from '../interfaces'; +import EventManager from '../tools/EventManager'; +import GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator'; +import InteractionManager from '../tools/InteractionManager'; +import PointerEventManager from '../tools/PointerEventManager'; +import PointerTracker, { TrackerElement } from '../tools/PointerTracker'; +import TouchEventManager from '../tools/TouchEventManager'; +import { isPointerInBounds } from '../utils'; + +export default abstract class GestureHandler { + private lastSentState: State | null = null; + protected currentState: State = State.UNDETERMINED; + + protected shouldCancellWhenOutside = false; + protected hasCustomActivationCriteria: boolean; + protected enabled = false; + + private ref!: number; + private propsRef!: React.RefObject; + private handlerTag!: number; + protected config: Config = { enabled: false }; + protected view!: HTMLElement; + + protected eventManagers: EventManager[] = []; + protected tracker: PointerTracker = new PointerTracker(); + + // Orchestrator properties + protected activationIndex = 0; + protected awaiting = false; + protected active = false; + protected shouldResetProgress = false; + protected pointerType: PointerType = PointerType.NONE; + + public constructor() { + this.hasCustomActivationCriteria = false; + } + + // + // Initializing handler + // + + protected init(ref: number, propsRef: React.RefObject) { + this.propsRef = propsRef; + this.ref = ref; + + this.currentState = State.UNDETERMINED; + + this.setView(); + this.addEventManager(new PointerEventManager(this.view)); + this.addEventManager(new TouchEventManager(this.view)); + } + + private setView() { + if (!this.ref) { + throw new Error( + `Cannot find HTML Element for handler ${this.handlerTag}` + ); + } + + this.view = findNodeHandle(this.ref) as unknown as HTMLElement; + this.view.style['touchAction'] = 'none'; + //@ts-ignore This one disables default events on Safari + this.view.style['WebkitTouchCallout'] = 'none'; + + if (!this.config.userSelect) { + this.view.style['webkitUserSelect'] = 'none'; + this.view.style['userSelect'] = 'none'; + } else { + this.view.style['webkitUserSelect'] = this.config.userSelect; + this.view.style['userSelect'] = this.config.userSelect; + } + } + + private addEventManager(manager: EventManager): void { + manager.setOnPointerDown(this.onPointerDown.bind(this)); + manager.setOnPointerAdd(this.onPointerAdd.bind(this)); + manager.setOnPointerUp(this.onPointerUp.bind(this)); + manager.setOnPointerRemove(this.onPointerRemove.bind(this)); + manager.setOnPointerMove(this.onPointerMove.bind(this)); + manager.setOnPointerEnter(this.onPointerEnter.bind(this)); + manager.setOnPointerOut(this.onPointerOut.bind(this)); + manager.setOnPointerCancel(this.onPointerCancel.bind(this)); + manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this)); + manager.setListeners(); + + this.eventManagers.push(manager); + } + + // + // Resetting handler + // + + protected onCancel(): void {} + protected onReset(): void {} + protected resetProgress(): void {} + + public reset(): void { + this.tracker.resetTracker(); + this.onReset(); + this.resetProgress(); + this.eventManagers.forEach((manager: EventManager) => + manager.resetManager() + ); + this.currentState = State.UNDETERMINED; + } + + // + // State logic + // + + public moveToState(newState: State, sendIfDisabled?: boolean) { + if (this.currentState === newState) { + return; + } + + const oldState = this.currentState; + this.currentState = newState; + + if ( + this.tracker.getTrackedPointersCount() > 0 && + this.config.needsPointerData && + this.isFinished() + ) { + this.cancelTouches(); + } + + GestureHandlerOrchestrator.getInstance().onHandlerStateChange( + this, + newState, + oldState, + sendIfDisabled + ); + + this.onStateChange(newState, oldState); + } + + protected onStateChange(_newState: State, _oldState: State): void {} + + public begin(): void { + if (!this.checkHitSlop()) { + return; + } + + if (this.currentState === State.UNDETERMINED) { + this.moveToState(State.BEGAN); + } + } + + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event + */ + public fail(sendIfDisabled?: boolean): void { + if ( + this.currentState === State.ACTIVE || + this.currentState === State.BEGAN + ) { + this.moveToState(State.FAILED, sendIfDisabled); + this.view.style.cursor = 'auto'; + } + + this.resetProgress(); + } + + /** + * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event + */ + public cancel(sendIfDisabled?: boolean): void { + if ( + this.currentState === State.ACTIVE || + this.currentState === State.UNDETERMINED || + this.currentState === State.BEGAN + ) { + this.onCancel(); + this.moveToState(State.CANCELLED, sendIfDisabled); + this.view.style.cursor = 'auto'; + } + } + + public activate(_force = false) { + if ( + this.currentState === State.UNDETERMINED || + this.currentState === State.BEGAN + ) { + this.moveToState(State.ACTIVE); + this.view.style.cursor = 'grab'; + } + } + + public end() { + if ( + this.currentState === State.BEGAN || + this.currentState === State.ACTIVE + ) { + this.moveToState(State.END); + this.view.style.cursor = 'auto'; + } + + this.resetProgress(); + } + + // + // Methods for orchestrator + // + + public isAwaiting(): boolean { + return this.awaiting; + } + public setAwaiting(value: boolean): void { + this.awaiting = value; + } + + public isActive(): boolean { + return this.active; + } + public setActive(value: boolean): void { + this.active = value; + } + + public getShouldResetProgress(): boolean { + return this.shouldResetProgress; + } + public setShouldResetProgress(value: boolean): void { + this.shouldResetProgress = value; + } + + public getActivationIndex(): number { + return this.activationIndex; + } + public setActivationIndex(value: number): void { + this.activationIndex = value; + } + + public shouldWaitForHandlerFailure(handler: GestureHandler): boolean { + if (handler === this) { + return false; + } + + return InteractionManager.getInstance().shouldWaitForHandlerFailure( + this, + handler + ); + } + + public shouldRequireToWaitForFailure(handler: GestureHandler): boolean { + if (handler === this) { + return false; + } + + return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure( + this, + handler + ); + } + + public shouldRecognizeSimultaneously(handler: GestureHandler): boolean { + if (handler === this) { + return true; + } + + return InteractionManager.getInstance().shouldRecognizeSimultaneously( + this, + handler + ); + } + + public shouldBeCancelledByOther(handler: GestureHandler): boolean { + if (handler === this) { + return false; + } + + return InteractionManager.getInstance().shouldHandlerBeCancelledBy( + this, + handler + ); + } + + // + // Event actions + // + + protected onPointerDown(event: AdaptedEvent): void { + GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this); + this.pointerType = event.pointerType; + + if (this.pointerType === PointerType.TOUCH) { + GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this); + } + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + // Adding another pointer to existing ones + protected onPointerAdd(event: AdaptedEvent): void { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + protected onPointerUp(event: AdaptedEvent): void { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + // Removing pointer, when there is more than one pointers + protected onPointerRemove(event: AdaptedEvent): void { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + protected onPointerMove(event: AdaptedEvent): void { + this.tryToSendMoveEvent(false); + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + protected onPointerOut(event: AdaptedEvent): void { + if (this.shouldCancellWhenOutside) { + switch (this.currentState) { + case State.ACTIVE: + this.cancel(); + break; + case State.BEGAN: + this.fail(); + break; + } + return; + } + + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + protected onPointerEnter(event: AdaptedEvent): void { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + protected onPointerCancel(event: AdaptedEvent): void { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + protected onPointerOutOfBounds(event: AdaptedEvent): void { + this.tryToSendMoveEvent(true); + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } + } + private tryToSendMoveEvent(out: boolean): void { + if ( + this.enabled && + this.active && + (!out || (out && !this.shouldCancellWhenOutside)) + ) { + this.sendEvent(this.currentState, this.currentState); + } + } + + public sendTouchEvent(event: AdaptedEvent): void { + if (!this.enabled) { + return; + } + + const { onGestureHandlerEvent }: PropsRef = this.propsRef + .current as PropsRef; + + const touchEvent: ResultTouchEvent | undefined = + this.transformTouchEvent(event); + + if (touchEvent) { + invokeNullableMethod(onGestureHandlerEvent, touchEvent); + } + } + + // + // Events Sending + // + + public sendEvent = (newState: State, oldState: State): void => { + const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef = + this.propsRef.current as PropsRef; + + const resultEvent: ResultEvent = this.transformEventData( + newState, + oldState + ); + + // In the new API oldState field has to be undefined, unless we send event state changed + // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back + // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once + // However, this may cause trouble in the future (but for now we don't know that) + + if (this.lastSentState !== newState) { + this.lastSentState = newState; + invokeNullableMethod(onGestureHandlerStateChange, resultEvent); + } + if (this.currentState === State.ACTIVE) { + resultEvent.nativeEvent.oldState = undefined; + invokeNullableMethod(onGestureHandlerEvent, resultEvent); + } + }; + + private transformEventData(newState: State, oldState: State): ResultEvent { + return { + nativeEvent: { + numberOfPointers: this.tracker.getTrackedPointersCount(), + state: newState, + pointerInside: isPointerInBounds(this.view, { + x: this.tracker.getLastAvgX(), + y: this.tracker.getLastAvgY(), + }), + ...this.transformNativeEvent(), + handlerTag: this.handlerTag, + target: this.ref, + oldState: newState !== oldState ? oldState : undefined, + }, + timeStamp: Date.now(), + }; + } + + private transformTouchEvent( + event: AdaptedEvent + ): ResultTouchEvent | undefined { + const rect = this.view.getBoundingClientRect(); + + const all: PointerData[] = []; + const changed: PointerData[] = []; + + const trackerData = this.tracker.getData(); + + // This if handles edge case where all pointers have been cancelled + // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled + // The problem is, that handler will receive another pointercancel event from the rest of the pointers + // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset + if (trackerData.size === 0 || !trackerData.has(event.pointerId)) { + return; + } + + trackerData.forEach((element: TrackerElement, key: number): void => { + const id: number = this.tracker.getMappedTouchEventId(key); + + all.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY, + }); + }); + + // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed. + // However, if the event is cancel, we want to cancel all pointers to avoid crashes + if (event.eventType !== EventTypes.CANCEL) { + changed.push({ + id: this.tracker.getMappedTouchEventId(event.pointerId), + x: event.x - rect.left, + y: event.y - rect.top, + absoluteX: event.x, + absoluteY: event.y, + }); + } else { + trackerData.forEach((element: TrackerElement, key: number): void => { + const id: number = this.tracker.getMappedTouchEventId(key); + + changed.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY, + }); + }); + } + + let eventType: TouchEventType = TouchEventType.UNDETERMINED; + + switch (event.eventType) { + case EventTypes.DOWN: + case EventTypes.ADDITIONAL_POINTER_DOWN: + eventType = TouchEventType.DOWN; + break; + case EventTypes.UP: + case EventTypes.ADDITIONAL_POINTER_UP: + eventType = TouchEventType.UP; + break; + case EventTypes.MOVE: + eventType = TouchEventType.MOVE; + break; + case EventTypes.CANCEL: + eventType = TouchEventType.CANCELLED; + break; + } + + // Here, when we receive up event, we want to decrease number of touches + // That's because we want handler to send information that there's one pointer less + // However, we still want this pointer to be present in allTouches array, so that its data can be accessed + let numberOfTouches: number = all.length; + + if ( + event.eventType === EventTypes.UP || + event.eventType === EventTypes.ADDITIONAL_POINTER_UP + ) { + --numberOfTouches; + } + + return { + nativeEvent: { + handlerTag: this.handlerTag, + state: this.currentState, + eventType: event.touchEventType ?? eventType, + changedTouches: changed, + allTouches: all, + numberOfTouches: numberOfTouches, + }, + timeStamp: Date.now(), + }; + } + + private cancelTouches(): void { + const rect = this.view.getBoundingClientRect(); + + const all: PointerData[] = []; + const changed: PointerData[] = []; + + const trackerData = this.tracker.getData(); + + if (trackerData.size === 0) { + return; + } + + trackerData.forEach((element: TrackerElement, key: number): void => { + const id: number = this.tracker.getMappedTouchEventId(key); + + all.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY, + }); + + changed.push({ + id: id, + x: element.lastX - rect.left, + y: element.lastY - rect.top, + absoluteX: element.lastX, + absoluteY: element.lastY, + }); + }); + + const cancelEvent: ResultTouchEvent = { + nativeEvent: { + handlerTag: this.handlerTag, + state: this.currentState, + eventType: TouchEventType.CANCELLED, + changedTouches: changed, + allTouches: all, + numberOfTouches: all.length, + }, + timeStamp: Date.now(), + }; + + const { onGestureHandlerEvent }: PropsRef = this.propsRef + .current as PropsRef; + + invokeNullableMethod(onGestureHandlerEvent, cancelEvent); + } + + protected transformNativeEvent() { + return {}; + } + + // + // Handling config + // + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + this.config = { enabled: enabled, ...props }; + this.enabled = enabled; + + if (this.config.shouldCancelWhenOutside !== undefined) { + this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside); + } + + this.validateHitSlops(); + + if (this.enabled) { + return; + } + + switch (this.currentState) { + case State.ACTIVE: + this.fail(true); + break; + case State.UNDETERMINED: + GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator( + this + ); + break; + default: + this.cancel(true); + break; + } + } + + protected checkCustomActivationCriteria(criterias: string[]): void { + for (const key in this.config) { + if (criterias.indexOf(key) >= 0) { + this.hasCustomActivationCriteria = true; + } + } + } + + private validateHitSlops(): void { + if (!this.config.hitSlop) { + return; + } + + if ( + this.config.hitSlop.left !== undefined && + this.config.hitSlop.right !== undefined && + this.config.hitSlop.width !== undefined + ) { + throw new Error( + 'HitSlop Error: Cannot define left, right and width at the same time' + ); + } + + if ( + this.config.hitSlop.width !== undefined && + this.config.hitSlop.left === undefined && + this.config.hitSlop.right === undefined + ) { + throw new Error( + 'HitSlop Error: When width is defined, either left or right has to be defined' + ); + } + + if ( + this.config.hitSlop.height !== undefined && + this.config.hitSlop.top !== undefined && + this.config.hitSlop.bottom !== undefined + ) { + throw new Error( + 'HitSlop Error: Cannot define top, bottom and height at the same time' + ); + } + + if ( + this.config.hitSlop.height !== undefined && + this.config.hitSlop.top === undefined && + this.config.hitSlop.bottom === undefined + ) { + throw new Error( + 'HitSlop Error: When height is defined, either top or bottom has to be defined' + ); + } + } + + private checkHitSlop(): boolean { + if (!this.config.hitSlop) { + return true; + } + + const width = this.view.getBoundingClientRect().width; + const height = this.view.getBoundingClientRect().height; + + let left = 0; + let top = 0; + let right: number = width; + let bottom: number = height; + + if (this.config.hitSlop.horizontal !== undefined) { + left -= this.config.hitSlop.horizontal; + right += this.config.hitSlop.horizontal; + } + + if (this.config.hitSlop.vertical !== undefined) { + top -= this.config.hitSlop.vertical; + bottom += this.config.hitSlop.vertical; + } + + if (this.config.hitSlop.left !== undefined) { + left = -this.config.hitSlop.left; + } + + if (this.config.hitSlop.right !== undefined) { + right = width + this.config.hitSlop.right; + } + + if (this.config.hitSlop.top !== undefined) { + top = -this.config.hitSlop.top; + } + + if (this.config.hitSlop.bottom !== undefined) { + bottom = width + this.config.hitSlop.bottom; + } + if (this.config.hitSlop.width !== undefined) { + if (this.config.hitSlop.left !== undefined) { + right = left + this.config.hitSlop.width; + } else if (this.config.hitSlop.right !== undefined) { + left = right - this.config.hitSlop.width; + } + } + + if (this.config.hitSlop.height !== undefined) { + if (this.config.hitSlop.top !== undefined) { + bottom = top + this.config.hitSlop.height; + } else if (this.config.hitSlop.bottom !== undefined) { + top = bottom - this.config.hitSlop.height; + } + } + + const rect: DOMRect = this.view.getBoundingClientRect(); + const offsetX: number = this.tracker.getLastX() - rect.left; + const offsetY: number = this.tracker.getLastY() - rect.top; + + if ( + offsetX >= left && + offsetX <= right && + offsetY >= top && + offsetY <= bottom + ) { + return true; + } + return false; + } + + public isPointerInBounds({ x, y }: { x: number; y: number }): boolean { + const rect: DOMRect = this.view.getBoundingClientRect(); + + return ( + x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom + ); + } + + protected resetConfig(): void {} + + // + // Getters and setters + // + + public getTag(): number { + return this.handlerTag; + } + public setTag(tag: number): void { + this.handlerTag = tag; + } + + protected getConfig() { + return this.config; + } + + public getShouldEnableGestureOnSetup(): boolean { + throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup'); + } + + public getView(): HTMLElement { + return this.view; + } + + public getEventManagers(): EventManager[] { + return this.eventManagers; + } + + public getTracker(): PointerTracker { + return this.tracker; + } + + public getTrackedPointersID(): number[] { + return this.tracker.getTrackedPointersID(); + } + + public getState(): State { + return this.currentState; + } + + public isEnabled(): boolean { + return this.enabled; + } + + private isFinished(): boolean { + return ( + this.currentState === State.END || + this.currentState === State.FAILED || + this.currentState === State.CANCELLED + ); + } + + protected setShouldCancelWhenOutside(shouldCancel: boolean) { + this.shouldCancellWhenOutside = shouldCancel; + } + protected getShouldCancelWhenOutside(): boolean { + return this.shouldCancellWhenOutside; + } + + public getPointerType(): PointerType { + return this.pointerType; + } +} + +function invokeNullableMethod( + method: + | ((event: ResultEvent | ResultTouchEvent) => void) + | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void } + | { __nodeConfig: { argMapping: unknown[] } }, + event: ResultEvent | ResultTouchEvent +): void { + if (!method) { + return; + } + + if (typeof method === 'function') { + method(event); + return; + } + + if ('__getHandler' in method && typeof method.__getHandler === 'function') { + const handler = method.__getHandler(); + invokeNullableMethod(handler, event); + return; + } + + if (!('__nodeConfig' in method)) { + return; + } + + const { argMapping } = method.__nodeConfig; + if (!Array.isArray(argMapping)) { + return; + } + + for (const [index, [key, value]] of argMapping.entries()) { + if (!(key in event.nativeEvent)) { + continue; + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const nativeValue = event.nativeEvent[key]; + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (value?.setValue) { + //Reanimated API + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + value.setValue(nativeValue); + } else { + //RN Animated API + method.__nodeConfig.argMapping[index] = [key, nativeValue]; + } + } + + return; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/LongPressGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/LongPressGestureHandler.ts new file mode 100644 index 00000000..1d3f1493 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/LongPressGestureHandler.ts @@ -0,0 +1,127 @@ +import { State } from '../../State'; +import { AdaptedEvent, Config } from '../interfaces'; + +import GestureHandler from './GestureHandler'; + +const DEFAULT_MIN_DURATION_MS = 500; +const DEFAULT_MAX_DIST_DP = 10; +const SCALING_FACTOR = 10; + +export default class LongPressGestureHandler extends GestureHandler { + private minDurationMs = DEFAULT_MIN_DURATION_MS; + private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR; + + private maxDistSq = this.defaultMaxDistSq; + private startX = 0; + private startY = 0; + + private startTime = 0; + private previousTime = 0; + + private activationTimeout: number | undefined; + + public init(ref: number, propsRef: React.RefObject) { + super.init(ref, propsRef); + + this.view.oncontextmenu = () => false; + } + + protected transformNativeEvent() { + const rect: DOMRect = this.view.getBoundingClientRect(); + + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + duration: Date.now() - this.startTime, + }; + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + + if (this.config.minDurationMs !== undefined) { + this.minDurationMs = this.config.minDurationMs; + } + + if (this.config.maxDist !== undefined) { + this.maxDistSq = this.config.maxDist * this.config.maxDist; + } + } + + protected resetConfig(): void { + super.resetConfig(); + this.minDurationMs = DEFAULT_MIN_DURATION_MS; + this.maxDistSq = this.defaultMaxDistSq; + } + + protected onStateChange(_newState: State, _oldState: State): void { + clearTimeout(this.activationTimeout); + } + + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.tryBegin(event); + this.tryActivate(); + this.checkDistanceFail(event); + } + + protected onPointerMove(event: AdaptedEvent): void { + super.onPointerMove(event); + this.tracker.track(event); + this.checkDistanceFail(event); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + private tryBegin(event: AdaptedEvent): void { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.previousTime = Date.now(); + this.startTime = this.previousTime; + + this.begin(); + + this.startX = event.x; + this.startY = event.y; + } + + private tryActivate(): void { + if (this.minDurationMs > 0) { + this.activationTimeout = setTimeout(() => { + this.activate(); + }, this.minDurationMs); + } else if (this.minDurationMs === 0) { + this.activate(); + } + } + + private checkDistanceFail(event: AdaptedEvent): void { + const dx = event.x - this.startX; + const dy = event.y - this.startY; + const distSq = dx * dx + dy * dy; + + if (distSq <= this.maxDistSq) { + return; + } + + if (this.currentState === State.ACTIVE) { + this.cancel(); + } else { + this.fail(); + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/ManualGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/ManualGestureHandler.ts new file mode 100644 index 00000000..489ca469 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/ManualGestureHandler.ts @@ -0,0 +1,48 @@ +import { AdaptedEvent, Config } from '../interfaces'; +import GestureHandler from './GestureHandler'; + +export default class ManualGestureHandler extends GestureHandler { + public init(ref: number, propsRef: React.RefObject) { + super.init(ref, propsRef); + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + } + + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.begin(); + } + + protected onPointerAdd(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + } + + protected onPointerMove(event: AdaptedEvent): void { + this.tracker.track(event); + super.onPointerMove(event); + } + + protected onPointerOutOfBounds(event: AdaptedEvent): void { + this.tracker.track(event); + super.onPointerOutOfBounds(event); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + } + + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + this.reset(); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/NativeViewGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/NativeViewGestureHandler.ts new file mode 100644 index 00000000..f6e6a0e9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/NativeViewGestureHandler.ts @@ -0,0 +1,161 @@ +import { State } from '../../State'; +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import { AdaptedEvent, Config } from '../interfaces'; + +import GestureHandler from './GestureHandler'; +export default class NativeViewGestureHandler extends GestureHandler { + private buttonRole!: boolean; + + //TODO: Implement logic for activation on start + //@ts-ignore Logic yet to be implemented + private shouldActivateOnStart = false; + private disallowInterruption = false; + + private startX = 0; + private startY = 0; + private minDistSq = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP; + + public init(ref: number, propsRef: React.RefObject): void { + super.init(ref, propsRef); + + this.setShouldCancelWhenOutside(true); + + this.view.style['touchAction'] = 'auto'; + + //@ts-ignore Turns on defualt touch behavior on Safari + this.view.style['WebkitTouchCallout'] = 'auto'; + + if (this.view.hasAttribute('role')) { + this.buttonRole = true; + } else { + this.buttonRole = false; + } + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + + if (this.config.shouldActivateOnStart !== undefined) { + this.shouldActivateOnStart = this.config.shouldActivateOnStart; + } + if (this.config.disallowInterruption !== undefined) { + this.disallowInterruption = this.config.disallowInterruption; + } + } + + protected resetConfig(): void { + super.resetConfig(); + } + + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + this.newPointerAction(); + } + + protected onPointerAdd(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.newPointerAction(); + } + + private newPointerAction(): void { + this.startX = this.tracker.getLastAvgX(); + this.startY = this.tracker.getLastAvgY(); + + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.begin(); + if (this.buttonRole) { + this.activate(); + } + } + + protected onPointerMove(event: AdaptedEvent): void { + this.tracker.track(event); + + const dx = this.startX - this.tracker.getLastAvgX(); + const dy = this.startY - this.tracker.getLastAvgY(); + const distSq = dx * dx + dy * dy; + + if ( + !this.buttonRole && + distSq >= this.minDistSq && + this.currentState === State.BEGAN + ) { + this.activate(); + } + } + + protected onPointerOut(): void { + this.cancel(); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.onUp(event); + } + + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.onUp(event); + } + + private onUp(event: AdaptedEvent): void { + this.tracker.removeFromTracker(event.pointerId); + + if (this.tracker.getTrackedPointersCount() === 0) { + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + this.cancel(); + this.reset(); + } + + public shouldRecognizeSimultaneously(handler: GestureHandler): boolean { + if (super.shouldRecognizeSimultaneously(handler)) { + return true; + } + + if ( + handler instanceof NativeViewGestureHandler && + handler.getState() === State.ACTIVE && + handler.disallowsInterruption() + ) { + return false; + } + + const canBeInterrupted = !this.disallowInterruption; + + if ( + this.currentState === State.ACTIVE && + handler.getState() === State.ACTIVE && + canBeInterrupted + ) { + return false; + } + + return ( + this.currentState === State.ACTIVE && + canBeInterrupted && + handler.getTag() > 0 + ); + } + + public shouldBeCancelledByOther(_handler: GestureHandler): boolean { + return !this.disallowInterruption; + } + + public disallowsInterruption(): boolean { + return this.disallowInterruption; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PanGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PanGestureHandler.ts new file mode 100644 index 00000000..5b89b95c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PanGestureHandler.ts @@ -0,0 +1,497 @@ +import { PixelRatio } from 'react-native'; +import { State } from '../../State'; +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import { AdaptedEvent, Config } from '../interfaces'; + +import GestureHandler from './GestureHandler'; + +const DEFAULT_MIN_POINTERS = 1; +const DEFAULT_MAX_POINTERS = 10; +const DEFAULT_MIN_DIST_SQ = DEFAULT_TOUCH_SLOP * DEFAULT_TOUCH_SLOP; + +export default class PanGestureHandler extends GestureHandler { + private readonly customActivationProperties: string[] = [ + 'activeOffsetXStart', + 'activeOffsetXEnd', + 'failOffsetXStart', + 'failOffsetXEnd', + 'activeOffsetYStart', + 'activeOffsetYEnd', + 'failOffsetYStart', + 'failOffsetYEnd', + 'minVelocityX', + 'minVelocityY', + ]; + + public velocityX = 0; + public velocityY = 0; + + private minDistSq = DEFAULT_MIN_DIST_SQ; + + private activeOffsetXStart = -Number.MAX_SAFE_INTEGER; + private activeOffsetXEnd = Number.MIN_SAFE_INTEGER; + private failOffsetXStart = Number.MIN_SAFE_INTEGER; + private failOffsetXEnd = Number.MAX_SAFE_INTEGER; + + private activeOffsetYStart = Number.MAX_SAFE_INTEGER; + private activeOffsetYEnd = Number.MIN_SAFE_INTEGER; + private failOffsetYStart = Number.MIN_SAFE_INTEGER; + private failOffsetYEnd = Number.MAX_SAFE_INTEGER; + + private minVelocityX = Number.MAX_SAFE_INTEGER; + private minVelocityY = Number.MAX_SAFE_INTEGER; + private minVelocitySq = Number.MAX_SAFE_INTEGER; + + private minPointers = DEFAULT_MIN_POINTERS; + private maxPointers = DEFAULT_MAX_POINTERS; + + private startX = 0; + private startY = 0; + private offsetX = 0; + private offsetY = 0; + private lastX = 0; + private lastY = 0; + + private activateAfterLongPress = 0; + private activationTimeout = 0; + + public init(ref: number, propsRef: React.RefObject): void { + super.init(ref, propsRef); + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + this.resetConfig(); + + super.updateGestureConfig({ enabled: enabled, ...props }); + this.checkCustomActivationCriteria(this.customActivationProperties); + + if (this.config.minDist !== undefined) { + this.minDistSq = this.config.minDist * this.config.minDist; + } else if (this.hasCustomActivationCriteria) { + this.minDistSq = Number.MAX_SAFE_INTEGER; + } + + if (this.config.minPointers !== undefined) { + this.minPointers = this.config.minPointers; + } + + if (this.config.maxPointers !== undefined) { + this.maxPointers = this.config.maxPointers; + } + + if (this.config.minVelocity !== undefined) { + this.minVelocityX = this.config.minVelocity; + this.minVelocityY = this.config.minVelocity; + } + + if (this.config.minVelocityX !== undefined) { + this.minVelocityX = this.config.minVelocityX; + } + + if (this.config.minVelocityY !== undefined) { + this.minVelocityY = this.config.minVelocityY; + } + + if (this.config.activateAfterLongPress !== undefined) { + this.activateAfterLongPress = this.config.activateAfterLongPress; + } + + if (this.config.activeOffsetXStart !== undefined) { + this.activeOffsetXStart = this.config.activeOffsetXStart; + + if (this.config.activeOffsetXEnd === undefined) { + this.activeOffsetXEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetXEnd !== undefined) { + this.activeOffsetXEnd = this.config.activeOffsetXEnd; + + if (this.config.activeOffsetXStart === undefined) { + this.activeOffsetXStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.failOffsetXStart !== undefined) { + this.failOffsetXStart = this.config.failOffsetXStart; + + if (this.config.failOffsetXEnd === undefined) { + this.failOffsetXEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.failOffsetXEnd !== undefined) { + this.failOffsetXEnd = this.config.failOffsetXEnd; + + if (this.config.failOffsetXStart === undefined) { + this.failOffsetXStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetYStart !== undefined) { + this.activeOffsetYStart = this.config.activeOffsetYStart; + + if (this.config.activeOffsetYEnd === undefined) { + this.activeOffsetYEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.activeOffsetYEnd !== undefined) { + this.activeOffsetYEnd = this.config.activeOffsetYEnd; + + if (this.config.activeOffsetYStart === undefined) { + this.activeOffsetYStart = Number.MIN_SAFE_INTEGER; + } + } + + if (this.config.failOffsetYStart !== undefined) { + this.failOffsetYStart = this.config.failOffsetYStart; + + if (this.config.failOffsetYEnd === undefined) { + this.failOffsetYEnd = Number.MAX_SAFE_INTEGER; + } + } + + if (this.config.failOffsetYEnd !== undefined) { + this.failOffsetYEnd = this.config.failOffsetYEnd; + + if (this.config.failOffsetYStart === undefined) { + this.failOffsetYStart = Number.MIN_SAFE_INTEGER; + } + } + } + + protected resetConfig(): void { + super.resetConfig(); + + this.activeOffsetXStart = -Number.MAX_SAFE_INTEGER; + this.activeOffsetXEnd = Number.MIN_SAFE_INTEGER; + this.failOffsetXStart = Number.MIN_SAFE_INTEGER; + this.failOffsetXEnd = Number.MAX_SAFE_INTEGER; + + this.activeOffsetYStart = Number.MAX_SAFE_INTEGER; + this.activeOffsetYEnd = Number.MIN_SAFE_INTEGER; + this.failOffsetYStart = Number.MIN_SAFE_INTEGER; + this.failOffsetYEnd = Number.MAX_SAFE_INTEGER; + + this.minVelocityX = Number.MAX_SAFE_INTEGER; + this.minVelocityY = Number.MAX_SAFE_INTEGER; + this.minVelocitySq = Number.MAX_SAFE_INTEGER; + + this.minDistSq = DEFAULT_MIN_DIST_SQ; + + this.minPointers = DEFAULT_MIN_POINTERS; + this.maxPointers = DEFAULT_MAX_POINTERS; + + this.activateAfterLongPress = 0; + } + + protected transformNativeEvent() { + const rect: DOMRect = this.view.getBoundingClientRect(); + const ratio = PixelRatio.get(); + + const translationX: number = this.getTranslationX(); + const translationY: number = this.getTranslationY(); + + return { + translationX: isNaN(translationX) ? 0 : translationX, + translationY: isNaN(translationY) ? 0 : translationY, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + velocityX: this.velocityX * ratio * 10, + velocityY: this.velocityY * ratio * 10, + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + }; + } + + private getTranslationX(): number { + return this.lastX - this.startX + this.offsetX; + } + private getTranslationY(): number { + return this.lastY - this.startY + this.offsetY; + } + + private clearActivationTimeout(): void { + clearTimeout(this.activationTimeout); + } + + //EventsHandling + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.tryBegin(event); + this.checkBegan(); + } + + protected onPointerAdd(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(event); + + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.startX = this.lastX; + this.startY = this.lastY; + + if (this.tracker.getTrackedPointersCount() > this.maxPointers) { + if (this.currentState === State.ACTIVE) { + this.cancel(); + } else { + this.fail(); + } + } else { + this.checkBegan(); + } + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + + if (this.currentState === State.ACTIVE) { + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + } + + this.tracker.removeFromTracker(event.pointerId); + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.resetProgress(); + this.fail(); + } + } + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.startX = this.lastX; + this.startY = this.lastY; + + if ( + !( + this.currentState === State.ACTIVE && + this.tracker.getTrackedPointersCount() < this.minPointers + ) + ) { + this.checkBegan(); + } + } + + protected onPointerMove(event: AdaptedEvent): void { + this.tracker.track(event); + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + + this.checkBegan(); + + super.onPointerMove(event); + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + + this.reset(); + } + protected onPointerOutOfBounds(event: AdaptedEvent): void { + if (this.getShouldCancelWhenOutside()) { + return; + } + + this.tracker.track(event); + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + + this.checkBegan(); + + if (this.currentState === State.ACTIVE) { + super.onPointerOutOfBounds(event); + } + } + + private shouldActivate(): boolean { + const dx: number = this.getTranslationX(); + + if ( + this.activeOffsetXStart !== Number.MAX_SAFE_INTEGER && + dx < this.activeOffsetXStart + ) { + return true; + } + + if ( + this.activeOffsetXEnd !== Number.MIN_SAFE_INTEGER && + dx > this.activeOffsetXEnd + ) { + return true; + } + + const dy: number = this.getTranslationY(); + + if ( + this.activeOffsetYStart !== Number.MAX_SAFE_INTEGER && + dy < this.activeOffsetYStart + ) { + return true; + } + + if ( + this.activeOffsetYEnd !== Number.MIN_SAFE_INTEGER && + dy > this.activeOffsetYEnd + ) { + return true; + } + + const distanceSq: number = dx * dx + dy * dy; + + if ( + this.minDistSq !== Number.MAX_SAFE_INTEGER && + distanceSq >= this.minDistSq + ) { + return true; + } + + const vx: number = this.velocityX; + + if ( + this.minVelocityX !== Number.MAX_SAFE_INTEGER && + ((this.minVelocityX < 0 && vx <= this.minVelocityX) || + (this.minVelocityX >= 0 && this.minVelocityX <= vx)) + ) { + return true; + } + + const vy: number = this.velocityY; + if ( + this.minVelocityY !== Number.MAX_SAFE_INTEGER && + ((this.minVelocityY < 0 && vy <= this.minVelocityY) || + (this.minVelocityY >= 0 && this.minVelocityY <= vy)) + ) { + return true; + } + + const velocitySq: number = vx * vx + vy * vy; + + return ( + this.minVelocitySq !== Number.MAX_SAFE_INTEGER && + velocitySq >= this.minVelocitySq + ); + } + + private shouldFail(): boolean { + const dx: number = this.getTranslationX(); + const dy: number = this.getTranslationY(); + const distanceSq = dx * dx + dy * dy; + + if (this.activateAfterLongPress > 0 && distanceSq > DEFAULT_MIN_DIST_SQ) { + this.clearActivationTimeout(); + return true; + } + + if ( + this.failOffsetXStart !== Number.MIN_SAFE_INTEGER && + dx < this.failOffsetXStart + ) { + return true; + } + + if ( + this.failOffsetXEnd !== Number.MAX_SAFE_INTEGER && + dx > this.failOffsetXEnd + ) { + return true; + } + + if ( + this.failOffsetYStart !== Number.MIN_SAFE_INTEGER && + dy < this.failOffsetYStart + ) { + return true; + } + + return ( + this.failOffsetYEnd !== Number.MAX_SAFE_INTEGER && + dy > this.failOffsetYEnd + ); + } + + private tryBegin(event: AdaptedEvent): void { + if ( + this.currentState === State.UNDETERMINED && + this.tracker.getTrackedPointersCount() >= this.minPointers + ) { + this.resetProgress(); + this.offsetX = 0; + this.offsetY = 0; + this.velocityX = 0; + this.velocityY = 0; + + this.begin(); + + if (this.activateAfterLongPress > 0) { + this.activationTimeout = setTimeout(() => { + this.activate(); + }, this.activateAfterLongPress); + } + } else { + this.velocityX = this.tracker.getVelocityX(event.pointerId); + this.velocityY = this.tracker.getVelocityY(event.pointerId); + } + } + + private checkBegan(): void { + if (this.currentState === State.BEGAN) { + if (this.shouldFail()) { + this.fail(); + } else if (this.shouldActivate()) { + this.activate(); + } + } + } + + public activate(force = false): void { + if (this.currentState !== State.ACTIVE) { + this.resetProgress(); + } + + super.activate(force); + } + + protected onCancel(): void { + this.clearActivationTimeout(); + } + + protected onReset(): void { + this.clearActivationTimeout(); + } + + protected resetProgress(): void { + if (this.currentState === State.ACTIVE) { + return; + } + + this.startX = this.lastX; + this.startY = this.lastY; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PinchGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PinchGestureHandler.ts new file mode 100644 index 00000000..48038e5d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/PinchGestureHandler.ts @@ -0,0 +1,163 @@ +import { State } from '../../State'; +import { DEFAULT_TOUCH_SLOP } from '../constants'; +import { AdaptedEvent, Config } from '../interfaces'; + +import GestureHandler from './GestureHandler'; +import ScaleGestureDetector, { + ScaleGestureListener, +} from '../detectors/ScaleGestureDetector'; + +export default class PinchGestureHandler extends GestureHandler { + private scale = 1; + private velocity = 0; + + private startingSpan = 0; + private spanSlop = DEFAULT_TOUCH_SLOP; + + private scaleDetectorListener: ScaleGestureListener = { + onScaleBegin: (detector: ScaleGestureDetector): boolean => { + this.startingSpan = detector.getCurrentSpan(); + return true; + }, + onScale: (detector: ScaleGestureDetector): boolean => { + const prevScaleFactor: number = this.scale; + this.scale *= detector.getScaleFactor( + this.tracker.getTrackedPointersCount() + ); + + const delta = detector.getTimeDelta(); + if (delta > 0) { + this.velocity = (this.scale - prevScaleFactor) / delta; + } + + if ( + Math.abs(this.startingSpan - detector.getCurrentSpan()) >= + this.spanSlop && + this.currentState === State.BEGAN + ) { + this.activate(); + } + return true; + }, + onScaleEnd: ( + _detector: ScaleGestureDetector + // eslint-disable-next-line @typescript-eslint/no-empty-function + ): void => {}, + }; + + private scaleGestureDetector: ScaleGestureDetector = new ScaleGestureDetector( + this.scaleDetectorListener + ); + + public init(ref: number, propsRef: React.RefObject) { + super.init(ref, propsRef); + + this.setShouldCancelWhenOutside(false); + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + } + + protected transformNativeEvent() { + return { + focalX: this.scaleGestureDetector.getFocusX(), + focalY: this.scaleGestureDetector.getFocusY(), + velocity: this.velocity, + scale: this.scale, + }; + } + + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + } + + protected onPointerAdd(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + this.tryBegin(); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + if (this.currentState !== State.ACTIVE) { + return; + } + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + this.tracker.removeFromTracker(event.pointerId); + + if ( + this.currentState === State.ACTIVE && + this.tracker.getTrackedPointersCount() < 2 + ) { + this.end(); + } + } + + protected onPointerMove(event: AdaptedEvent): void { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + this.tracker.track(event); + + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerMove(event); + } + protected onPointerOutOfBounds(event: AdaptedEvent): void { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + this.tracker.track(event); + + this.scaleGestureDetector.onTouchEvent(event, this.tracker); + super.onPointerOutOfBounds(event); + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + this.reset(); + } + + private tryBegin(): void { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.resetProgress(); + this.begin(); + } + + public activate(force?: boolean): void { + if (this.currentState !== State.ACTIVE) { + this.resetProgress(); + } + + super.activate(force); + } + + protected onReset(): void { + this.resetProgress(); + } + + protected resetProgress(): void { + if (this.currentState === State.ACTIVE) { + return; + } + this.velocity = 0; + this.scale = 1; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/RotationGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/RotationGestureHandler.ts new file mode 100644 index 00000000..669c0f42 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/RotationGestureHandler.ts @@ -0,0 +1,179 @@ +import { State } from '../../State'; +import { AdaptedEvent, Config } from '../interfaces'; + +import GestureHandler from './GestureHandler'; +import RotationGestureDetector, { + RotationGestureListener, +} from '../detectors/RotationGestureDetector'; + +const ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36; + +export default class RotationGestureHandler extends GestureHandler { + private rotation = 0; + private velocity = 0; + + private cachedAnchorX = 0; + private cachedAnchorY = 0; + + private rotationGestureListener: RotationGestureListener = { + onRotationBegin: (_detector: RotationGestureDetector): boolean => true, + onRotation: (detector: RotationGestureDetector): boolean => { + const previousRotation: number = this.rotation; + this.rotation += detector.getRotation(); + + const delta = detector.getTimeDelta(); + + if (delta > 0) { + this.velocity = (this.rotation - previousRotation) / delta; + } + + if ( + Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD && + this.currentState === State.BEGAN + ) { + this.activate(); + } + + return true; + }, + onRotationEnd: (_detector: RotationGestureDetector): void => { + this.end(); + }, + }; + + private rotationGestureDetector: RotationGestureDetector = + new RotationGestureDetector(this.rotationGestureListener); + + public init(ref: number, propsRef: React.RefObject): void { + super.init(ref, propsRef); + + this.setShouldCancelWhenOutside(false); + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + } + + protected transformNativeEvent() { + return { + rotation: this.rotation ? this.rotation : 0, + anchorX: this.getAnchorX(), + anchorY: this.getAnchorY(), + velocity: this.velocity ? this.velocity : 0, + }; + } + + public getAnchorX(): number { + const anchorX = this.rotationGestureDetector.getAnchorX(); + + return anchorX ? anchorX : this.cachedAnchorX; + } + + public getAnchorY(): number { + const anchorY = this.rotationGestureDetector.getAnchorY(); + + return anchorY ? anchorY : this.cachedAnchorY; + } + + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + } + + protected onPointerAdd(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerAdd(event); + + this.tryBegin(); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + } + + protected onPointerMove(event: AdaptedEvent): void { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + if (this.getAnchorX()) { + this.cachedAnchorX = this.getAnchorX(); + } + if (this.getAnchorY()) { + this.cachedAnchorY = this.getAnchorY(); + } + + this.tracker.track(event); + + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + + super.onPointerMove(event); + } + + protected onPointerOutOfBounds(event: AdaptedEvent): void { + if (this.tracker.getTrackedPointersCount() < 2) { + return; + } + + if (this.getAnchorX()) { + this.cachedAnchorX = this.getAnchorX(); + } + if (this.getAnchorY()) { + this.cachedAnchorY = this.getAnchorY(); + } + + this.tracker.track(event); + + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + + super.onPointerOutOfBounds(event); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.tracker.removeFromTracker(event.pointerId); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + + if (this.currentState !== State.ACTIVE) { + return; + } + + if (this.currentState === State.ACTIVE) { + this.end(); + } else { + this.fail(); + } + } + + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.rotationGestureDetector.onTouchEvent(event, this.tracker); + this.tracker.removeFromTracker(event.pointerId); + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + this.end(); + + this.reset(); + } + + protected tryBegin(): void { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.begin(); + } + + public activate(_force?: boolean): void { + super.activate(); + } + + protected onReset(): void { + if (this.currentState === State.ACTIVE) { + return; + } + + this.rotation = 0; + this.velocity = 0; + this.rotationGestureDetector.reset(); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/TapGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/TapGestureHandler.ts new file mode 100644 index 00000000..5e492253 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/handlers/TapGestureHandler.ts @@ -0,0 +1,290 @@ +import { State } from '../../State'; +import { AdaptedEvent, Config, EventTypes } from '../interfaces'; + +import GestureHandler from './GestureHandler'; + +const DEFAULT_MAX_DURATION_MS = 500; +const DEFAULT_MAX_DELAY_MS = 500; +const DEFAULT_NUMBER_OF_TAPS = 1; +const DEFAULT_MIN_NUMBER_OF_POINTERS = 1; + +export default class TapGestureHandler extends GestureHandler { + private maxDeltaX = Number.MIN_SAFE_INTEGER; + private maxDeltaY = Number.MIN_SAFE_INTEGER; + private maxDistSq = Number.MIN_SAFE_INTEGER; + private maxDurationMs = DEFAULT_MAX_DURATION_MS; + private maxDelayMs = DEFAULT_MAX_DELAY_MS; + + private numberOfTaps = DEFAULT_NUMBER_OF_TAPS; + private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS; + private currentMaxNumberOfPointers = 1; + + private startX = 0; + private startY = 0; + private offsetX = 0; + private offsetY = 0; + private lastX = 0; + private lastY = 0; + + private waitTimeout: number | undefined; + private delayTimeout: number | undefined; + + private tapsSoFar = 0; + + public init(ref: number, propsRef: React.RefObject): void { + super.init(ref, propsRef); + } + + public updateGestureConfig({ enabled = true, ...props }: Config): void { + super.updateGestureConfig({ enabled: enabled, ...props }); + + if (this.config.numberOfTaps !== undefined) { + this.numberOfTaps = this.config.numberOfTaps; + } + + if (this.config.maxDurationMs !== undefined) { + this.maxDurationMs = this.config.maxDurationMs; + } + + if (this.config.maxDelayMs !== undefined) { + this.maxDelayMs = this.config.maxDelayMs; + } + + if (this.config.maxDeltaX !== undefined) { + this.maxDeltaX = this.config.maxDeltaX; + } + + if (this.config.maxDeltaY !== undefined) { + this.maxDeltaY = this.config.maxDeltaY; + } + + if (this.config.maxDist !== undefined) { + this.maxDistSq = this.config.maxDist * this.config.maxDist; + } + + if (this.config.minPointers !== undefined) { + this.minNumberOfPointers = this.config.minPointers; + } + } + + protected resetConfig(): void { + super.resetConfig(); + + this.maxDeltaX = Number.MIN_SAFE_INTEGER; + this.maxDeltaY = Number.MIN_SAFE_INTEGER; + this.maxDistSq = Number.MIN_SAFE_INTEGER; + this.maxDurationMs = DEFAULT_MAX_DURATION_MS; + this.maxDelayMs = DEFAULT_MAX_DELAY_MS; + this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS; + this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS; + } + + protected transformNativeEvent() { + const rect: DOMRect = this.view.getBoundingClientRect(); + + return { + x: this.tracker.getLastAvgX() - rect.left, + y: this.tracker.getLastAvgY() - rect.top, + absoluteX: this.tracker.getLastAvgX(), + absoluteY: this.tracker.getLastAvgY(), + }; + } + + private clearTimeouts(): void { + clearTimeout(this.waitTimeout); + clearTimeout(this.delayTimeout); + } + + private startTap(): void { + this.clearTimeouts(); + + this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs); + } + + private endTap(): void { + this.clearTimeouts(); + + if ( + ++this.tapsSoFar === this.numberOfTaps && + this.currentMaxNumberOfPointers >= this.minNumberOfPointers + ) { + this.activate(); + } else { + this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs); + } + } + + //Handling Events + protected onPointerDown(event: AdaptedEvent): void { + this.tracker.addToTracker(event); + super.onPointerDown(event); + + this.trySettingPosition(event); + + this.startX = event.x; + this.startY = event.y; + + this.lastX = event.x; + this.lastY = event.y; + + this.updateState(event); + } + + protected onPointerAdd(event: AdaptedEvent): void { + super.onPointerAdd(event); + this.tracker.addToTracker(event); + this.trySettingPosition(event); + + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY - this.startY; + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.startX = this.tracker.getLastAvgX(); + this.startY = this.tracker.getLastAvgY(); + + this.updateState(event); + } + + protected onPointerUp(event: AdaptedEvent): void { + super.onPointerUp(event); + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.tracker.removeFromTracker(event.pointerId); + + this.updateState(event); + } + + protected onPointerRemove(event: AdaptedEvent): void { + super.onPointerRemove(event); + this.tracker.removeFromTracker(event.pointerId); + + this.offsetX += this.lastX - this.startX; + this.offsetY += this.lastY = this.startY; + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.startX = this.lastX; + this.startY = this.lastY; + + this.updateState(event); + } + + protected onPointerMove(event: AdaptedEvent): void { + this.trySettingPosition(event); + this.tracker.track(event); + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.updateState(event); + + super.onPointerMove(event); + } + + protected onPointerOutOfBounds(event: AdaptedEvent): void { + this.trySettingPosition(event); + this.tracker.track(event); + + this.lastX = this.tracker.getLastAvgX(); + this.lastY = this.tracker.getLastAvgY(); + + this.updateState(event); + + super.onPointerOutOfBounds(event); + } + + protected onPointerCancel(event: AdaptedEvent): void { + super.onPointerCancel(event); + this.tracker.resetTracker(); + this.fail(); + } + + private updateState(event: AdaptedEvent): void { + if ( + this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount() + ) { + this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount(); + } + + if (this.shouldFail()) { + this.fail(); + return; + } + + switch (this.currentState) { + case State.UNDETERMINED: + if (event.eventType === EventTypes.DOWN) { + this.begin(); + } + this.startTap(); + break; + case State.BEGAN: + if (event.eventType === EventTypes.UP) { + this.endTap(); + } + if (event.eventType === EventTypes.DOWN) { + this.startTap(); + } + break; + default: + break; + } + } + + private trySettingPosition(event: AdaptedEvent): void { + if (this.currentState !== State.UNDETERMINED) { + return; + } + + this.offsetX = 0; + this.offsetY = 0; + this.startX = event.x; + this.startY = event.y; + } + + private shouldFail(): boolean { + const dx = this.lastX - this.startX + this.offsetX; + + if ( + this.maxDeltaX !== Number.MIN_SAFE_INTEGER && + Math.abs(dx) > this.maxDeltaX + ) { + return true; + } + + const dy = this.lastY - this.startY + this.offsetY; + if ( + this.maxDeltaY !== Number.MIN_SAFE_INTEGER && + Math.abs(dy) > this.maxDeltaY + ) { + return true; + } + + const distSq = dy * dy + dx * dx; + + return ( + this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq + ); + } + + public activate(): void { + super.activate(); + + this.end(); + } + + protected onCancel(): void { + this.resetProgress(); + this.clearTimeouts(); + } + + protected resetProgress(): void { + this.clearTimeouts(); + this.tapsSoFar = 0; + this.currentMaxNumberOfPointers = 0; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/interfaces.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/interfaces.ts new file mode 100644 index 00000000..c591a1ff --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/interfaces.ts @@ -0,0 +1,164 @@ +import { UserSelect } from '../handlers/gestureHandlerCommon'; +import { Directions } from '../Directions'; +import { State } from '../State'; + +export interface HitSlop { + left?: number; + right?: number; + top?: number; + bottom?: number; + horizontal?: number; + vertical?: number; + width?: number; + height?: number; +} + +export interface Handler { + handlerTag: number; +} + +type ConfigArgs = + | number + | boolean + | HitSlop + | UserSelect + | Directions + | Handler[] + | null + | undefined; + +export interface Config extends Record { + enabled?: boolean; + simultaneousHandlers?: Handler[] | null; + waitFor?: Handler[] | null; + hitSlop?: HitSlop; + shouldCancelWhenOutside?: boolean; + userSelect?: UserSelect; + + activateAfterLongPress?: number; + failOffsetXStart?: number; + failOffsetYStart?: number; + failOffsetXEnd?: number; + failOffsetYEnd?: number; + activeOffsetXStart?: number; + activeOffsetXEnd?: number; + activeOffsetYStart?: number; + activeOffsetYEnd?: number; + minPointers?: number; + maxPointers?: number; + minDist?: number; + minDistSq?: number; + minVelocity?: number; + minVelocityX?: number; + minVelocityY?: number; + minVelocitySq?: number; + maxDist?: number; + maxDistSq?: number; + numberOfPointers?: number; + minDurationMs?: number; + numberOfTaps?: number; + maxDurationMs?: number; + maxDelayMs?: number; + maxDeltaX?: number; + maxDeltaY?: number; + shouldActivateOnStart?: boolean; + disallowInterruption?: boolean; + direction?: Directions; +} + +type NativeEventArgs = number | State | boolean | undefined; +interface NativeEvent extends Record { + numberOfPointers: number; + state: State; + pointerInside: boolean | undefined; + handlerTag: number; + target: number; + oldState?: State; +} + +export interface PointerData { + id: number; + x: number; + y: number; + absoluteX: number; + absoluteY: number; +} + +type TouchNativeArgs = number | State | TouchEventType | PointerData[]; + +interface NativeTouchEvent extends Record { + handlerTag: number; + state: State; + eventType: TouchEventType; + changedTouches: PointerData[]; + allTouches: PointerData[]; + numberOfTouches: number; +} + +export interface ResultEvent extends Record { + nativeEvent: NativeEvent; + timeStamp: number; +} + +export interface ResultTouchEvent + extends Record { + nativeEvent: NativeTouchEvent; + timeStamp: number; +} + +export interface PropsRef { + onGestureHandlerEvent: () => void; + onGestureHandlerStateChange: () => void; +} + +export interface AdaptedEvent { + x: number; + y: number; + offsetX: number; + offsetY: number; + pointerId: number; + eventType: EventTypes; + pointerType: PointerType; + buttons: number; + time: number; + allTouches?: TouchList; + changedTouches?: TouchList; + touchEventType?: TouchEventType; +} + +export enum MouseButtons { + NONE, + LEFT, + RIGHT, + LEFT_RIGHT, + SCROLL, + SCROLL_LEFT, + SCROLL_RIGHT, + SCROLL_LEFT_RIGHT, +} + +export enum EventTypes { + DOWN, + ADDITIONAL_POINTER_DOWN, + UP, + ADDITIONAL_POINTER_UP, + MOVE, + ENTER, + OUT, + CANCEL, +} + +export enum TouchEventType { + UNDETERMINED, + DOWN, + MOVE, + UP, + CANCELLED, +} + +export enum PointerType { + NONE = 'none', + MOUSE = 'mouse', + TOUCH = 'touch', + PEN = 'pen', +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/EventManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/EventManager.ts new file mode 100644 index 00000000..0b61ea1e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/EventManager.ts @@ -0,0 +1,96 @@ +/* eslint-disable @typescript-eslint/no-empty-function */ +import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces'; + +export default abstract class EventManager { + protected readonly view: HTMLElement; + protected pointersInBounds: number[] = []; + protected activePointersCounter: number; + + constructor(view: HTMLElement) { + this.view = view; + this.activePointersCounter = 0; + } + + public abstract setListeners(): void; + protected abstract mapEvent( + event: Event, + eventType: EventTypes, + index?: number, + touchEventType?: TouchEventType + ): AdaptedEvent; + + protected onPointerDown(_event: AdaptedEvent): void {} + protected onPointerAdd(_event: AdaptedEvent): void {} + protected onPointerUp(_event: AdaptedEvent): void {} + protected onPointerRemove(_event: AdaptedEvent): void {} + protected onPointerMove(_event: AdaptedEvent): void {} + protected onPointerOut(_event: AdaptedEvent): void {} + protected onPointerEnter(_event: AdaptedEvent): void {} + protected onPointerCancel(_event: AdaptedEvent): void { + // When pointer cancel is triggered and there are more pointers on the view, only one pointer is cancelled + // Because we want all pointers to be cancelled by that event, we are doing it manually by reseting handler and changing activePointersCounter to 0 + // Events that correspond to removing the pointer (pointerup, touchend) have condition, that they don't perform any action when activePointersCounter + // is equal to 0. This prevents counter from going to negative values, when pointers are removed from view after one of them has been cancelled + } + protected onPointerOutOfBounds(_event: AdaptedEvent): void {} + + public setOnPointerDown(callback: (event: AdaptedEvent) => void): void { + this.onPointerDown = callback; + } + public setOnPointerAdd(callback: (event: AdaptedEvent) => void): void { + this.onPointerAdd = callback; + } + public setOnPointerUp(callback: (event: AdaptedEvent) => void): void { + this.onPointerUp = callback; + } + public setOnPointerRemove(callback: (event: AdaptedEvent) => void): void { + this.onPointerRemove = callback; + } + public setOnPointerMove(callback: (event: AdaptedEvent) => void): void { + this.onPointerMove = callback; + } + public setOnPointerOut(callback: (event: AdaptedEvent) => void): void { + this.onPointerOut = callback; + } + public setOnPointerEnter(callback: (event: AdaptedEvent) => void): void { + this.onPointerEnter = callback; + } + public setOnPointerCancel(callback: (event: AdaptedEvent) => void): void { + this.onPointerCancel = callback; + } + public setOnPointerOutOfBounds( + callback: (event: AdaptedEvent) => void + ): void { + this.onPointerOutOfBounds = callback; + } + + protected markAsInBounds(pointerId: number): void { + if (this.pointersInBounds.indexOf(pointerId) >= 0) { + return; + } + + this.pointersInBounds.push(pointerId); + } + + protected markAsOutOfBounds(pointerId: number): void { + const index: number = this.pointersInBounds.indexOf(pointerId); + + if (index < 0) { + return; + } + + this.pointersInBounds.splice(index, 1); + } + + public resetManager(): void { + // Reseting activePointersCounter is necessary to make gestures such as pinch work properly + // There are gestures that end when there is still one active pointer (like pinch/rotation) + // When these gestures end, they are reset, but they still receive events from pointer that is active + // This causes trouble, since only onPointerDown registers gesture in orchestrator, and while gestures receive + // Events from active pointer after they finished, next pointerdown event will be registered as additional pointer, not the first one + // This casues trouble like gestures getting stuck in END state, even though they should have gone to UNDETERMINED + + this.activePointersCounter = 0; + this.pointersInBounds = []; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/GestureHandlerOrchestrator.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/GestureHandlerOrchestrator.ts new file mode 100644 index 00000000..36b6b112 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/GestureHandlerOrchestrator.ts @@ -0,0 +1,397 @@ +import { State } from '../../State'; +import { PointerType } from '../interfaces'; + +import GestureHandler from '../handlers/GestureHandler'; +import PointerTracker from './PointerTracker'; +import { isPointerInBounds } from '../utils'; + +export default class GestureHandlerOrchestrator { + private static instance: GestureHandlerOrchestrator; + + private gestureHandlers: GestureHandler[] = []; + private awaitingHandlers: GestureHandler[] = []; + private handlersToCancel: GestureHandler[] = []; + + private handlingChangeSemaphore = 0; + private activationIndex = 0; + + // Private beacuse of Singleton + // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + private constructor() {} + + private scheduleFinishedHandlersCleanup(): void { + if (this.handlingChangeSemaphore === 0) { + this.cleanupFinishedHandlers(); + } + } + + private cleanHandler(handler: GestureHandler): void { + handler.reset(); + handler.setActive(false); + handler.setAwaiting(false); + handler.setActivationIndex(Number.MAX_VALUE); + } + + public removeHandlerFromOrchestrator(handler: GestureHandler): void { + this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1); + this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1); + this.handlersToCancel.splice(this.handlersToCancel.indexOf(handler), 1); + } + + private cleanupFinishedHandlers(): void { + for (let i = this.gestureHandlers.length - 1; i >= 0; --i) { + const handler = this.gestureHandlers[i]; + + if (!handler) { + continue; + } + if (this.isFinished(handler.getState()) && !handler.isAwaiting()) { + this.gestureHandlers.splice(i, 1); + + this.cleanHandler(handler); + } + } + } + + private hasOtherHandlerToWaitFor(handler: GestureHandler): boolean { + let hasToWait = false; + this.gestureHandlers.forEach((otherHandler) => { + if ( + otherHandler && + !this.isFinished(otherHandler.getState()) && + this.shouldHandlerWaitForOther(handler, otherHandler) + ) { + hasToWait = true; + return; + } + }); + + return hasToWait; + } + + private tryActivate(handler: GestureHandler): void { + if (this.hasOtherHandlerToWaitFor(handler)) { + this.addAwaitingHandler(handler); + } else if ( + handler.getState() !== State.CANCELLED && + handler.getState() !== State.FAILED + ) { + if (this.shouldActivate(handler)) { + this.makeActive(handler); + } else { + switch (handler.getState()) { + case State.ACTIVE: + handler.fail(); + break; + case State.BEGAN: + handler.cancel(); + } + } + } + } + + private shouldActivate(handler: GestureHandler): boolean { + for (const otherHandler of this.gestureHandlers) { + if (this.shouldHandlerBeCancelledBy(handler, otherHandler)) { + return false; + } + } + + return true; + } + + private cleanupAwaitingHandlers(handler: GestureHandler): void { + for (let i = 0; i < this.awaitingHandlers.length; ++i) { + if ( + !this.awaitingHandlers[i].isAwaiting() && + this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler) + ) { + this.cleanHandler(this.awaitingHandlers[i]); + this.awaitingHandlers.splice(i, 1); + } + } + } + + public onHandlerStateChange( + handler: GestureHandler, + newState: State, + oldState: State, + sendIfDisabled?: boolean + ): void { + if (!handler.isEnabled() && !sendIfDisabled) { + return; + } + + this.handlingChangeSemaphore += 1; + + if (this.isFinished(newState)) { + this.awaitingHandlers.forEach((otherHandler) => { + if (this.shouldHandlerWaitForOther(otherHandler, handler)) { + if (newState === State.END) { + otherHandler?.cancel(); + if (otherHandler.getState() === State.END) { + // Handle edge case, where discrete gestures end immediately after activation thus + // their state is set to END and when the gesture they are waiting for activates they + // should be cancelled, however `cancel` was never sent as gestures were already in the END state. + // Send synthetic BEGAN -> CANCELLED to properly handle JS logic + otherHandler.sendEvent(State.CANCELLED, State.BEGAN); + } + otherHandler?.setAwaiting(false); + } else { + this.tryActivate(otherHandler); + } + } + }); + } + + if (newState === State.ACTIVE) { + this.tryActivate(handler); + } else if (oldState === State.ACTIVE || oldState === State.END) { + if (handler.isActive()) { + handler.sendEvent(newState, oldState); + } else if ( + oldState === State.ACTIVE && + (newState === State.CANCELLED || newState === State.FAILED) + ) { + handler.sendEvent(newState, State.BEGAN); + } + } else if ( + oldState !== State.UNDETERMINED || + newState !== State.CANCELLED + ) { + handler.sendEvent(newState, oldState); + } + + this.handlingChangeSemaphore -= 1; + + this.scheduleFinishedHandlersCleanup(); + + if (this.awaitingHandlers.indexOf(handler) < 0) { + this.cleanupAwaitingHandlers(handler); + } + } + + private makeActive(handler: GestureHandler): void { + const currentState = handler.getState(); + + handler.setActive(true); + handler.setShouldResetProgress(true); + handler.setActivationIndex(this.activationIndex++); + + this.gestureHandlers.forEach((otherHandler) => { + // Order of arguments is correct - we check whether current handler should cancel existing handlers + + if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) { + this.handlersToCancel.push(otherHandler); + } + }); + + for (let i = this.handlersToCancel.length - 1; i >= 0; --i) { + this.handlersToCancel[i]?.cancel(); + } + this.awaitingHandlers.forEach((otherHandler) => { + if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) { + otherHandler?.cancel(); + otherHandler?.setAwaiting(true); + } + }); + + handler.sendEvent(State.ACTIVE, State.BEGAN); + + if (currentState !== State.ACTIVE) { + handler.sendEvent(State.END, State.ACTIVE); + if (currentState !== State.END) { + handler.sendEvent(State.UNDETERMINED, State.END); + } + } + + if (handler.isAwaiting()) { + handler.setAwaiting(false); + for (let i = 0; i < this.awaitingHandlers.length; ++i) { + if (this.awaitingHandlers[i] === handler) { + this.awaitingHandlers.splice(i, 1); + } + } + } + + this.handlersToCancel = []; + } + + private addAwaitingHandler(handler: GestureHandler): void { + let alreadyExists = false; + + this.awaitingHandlers.forEach((otherHandler) => { + if (otherHandler === handler) { + alreadyExists = true; + return; + } + }); + + if (alreadyExists) { + return; + } + + this.awaitingHandlers.push(handler); + + handler.setAwaiting(true); + handler.setActivationIndex(this.activationIndex++); + } + + public recordHandlerIfNotPresent(handler: GestureHandler): void { + let alreadyExists = false; + + this.gestureHandlers.forEach((otherHandler) => { + if (otherHandler === handler) { + alreadyExists = true; + return; + } + }); + + if (alreadyExists) { + return; + } + + this.gestureHandlers.push(handler); + + handler.setActive(false); + handler.setAwaiting(false); + handler.setActivationIndex(Number.MAX_SAFE_INTEGER); + } + + private shouldHandlerWaitForOther( + handler: GestureHandler, + otherHandler: GestureHandler + ): boolean { + return ( + handler !== otherHandler && + (handler.shouldWaitForHandlerFailure(otherHandler) || + otherHandler.shouldRequireToWaitForFailure(handler)) + ); + } + + private canRunSimultaneously( + gh1: GestureHandler, + gh2: GestureHandler + ): boolean { + return ( + gh1 === gh2 || + gh1.shouldRecognizeSimultaneously(gh2) || + gh2.shouldRecognizeSimultaneously(gh1) + ); + } + + private shouldHandlerBeCancelledBy( + handler: GestureHandler, + otherHandler: GestureHandler + ): boolean { + if (this.canRunSimultaneously(handler, otherHandler)) { + return false; + } + + if ( + handler !== otherHandler && + (handler.isAwaiting() || handler.getState() === State.ACTIVE) + ) { + // For now it always returns false + return handler.shouldBeCancelledByOther(otherHandler); + } + + const handlerPointers: number[] = handler.getTrackedPointersID(); + const otherPointers: number[] = otherHandler.getTrackedPointersID(); + + if ( + !PointerTracker.shareCommonPointers(handlerPointers, otherPointers) && + handler.getView() !== otherHandler.getView() + ) { + return this.checkOverlap(handler, otherHandler); + } + + return true; + } + + private checkOverlap( + handler: GestureHandler, + otherHandler: GestureHandler + ): boolean { + // If handlers don't have common pointers, default return value is false. + // However, if at least on pointer overlaps with both handlers, we return true + // This solves issue in overlapping parents example + + // TODO: Find better way to handle that issue, for example by activation order and handler cancelling + + const handlerPointers: number[] = handler.getTrackedPointersID(); + const otherPointers: number[] = otherHandler.getTrackedPointersID(); + + let overlap = false; + + handlerPointers.forEach((pointer: number) => { + const handlerX: number = handler.getTracker().getLastX(pointer); + const handlerY: number = handler.getTracker().getLastY(pointer); + + if ( + isPointerInBounds(handler.getView(), { x: handlerX, y: handlerY }) && + isPointerInBounds(otherHandler.getView(), { x: handlerX, y: handlerY }) + ) { + overlap = true; + } + }); + + otherPointers.forEach((pointer: number) => { + const otherX: number = otherHandler.getTracker().getLastX(pointer); + const otherY: number = otherHandler.getTracker().getLastY(pointer); + + if ( + isPointerInBounds(handler.getView(), { x: otherX, y: otherY }) && + isPointerInBounds(otherHandler.getView(), { x: otherX, y: otherY }) + ) { + overlap = true; + } + }); + + return overlap; + } + + private isFinished(state: State): boolean { + return ( + state === State.END || state === State.FAILED || state === State.CANCELLED + ); + } + + // This function is called when handler receives touchdown event + // If handler is using mouse or pen as a pointer and any handler receives touch event, + // mouse/pen event dissappears - it doesn't send onPointerCancel nor onPointerUp (and others) + // This became a problem because handler was left at active state without any signal to end or fail + // To handle this, when new touch event is received, we loop through active handlers and check which type of + // pointer they're using. If there are any handler with mouse/pen as a pointer, we cancel them + public cancelMouseAndPenGestures(currentHandler: GestureHandler): void { + this.gestureHandlers.forEach((handler: GestureHandler) => { + if ( + handler.getPointerType() !== PointerType.MOUSE && + handler.getPointerType() !== PointerType.PEN + ) { + return; + } + + if (handler !== currentHandler) { + handler.cancel(); + } else { + // Handler that received touch event should have its pointer tracker reset + // This allows handler to smoothly change from mouse/pen to touch + // The drawback is, that when we try to use mouse/pen one more time, it doesn't send onPointerDown at the first time + // so it is required to click two times to get handler to work + // + // However, handler will receive manually created onPointerEnter that is triggered in EventManager in onPointerMove method. + // There may be possibility to use that fact to make handler respond properly to first mouse click + handler.getTracker().resetTracker(); + } + }); + } + + public static getInstance(): GestureHandlerOrchestrator { + if (!GestureHandlerOrchestrator.instance) { + GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator(); + } + + return GestureHandlerOrchestrator.instance; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/InteractionManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/InteractionManager.ts new file mode 100644 index 00000000..0987428f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/InteractionManager.ts @@ -0,0 +1,123 @@ +import GestureHandler from '../handlers/GestureHandler'; +import { Config, Handler } from '../interfaces'; + +export default class InteractionManager { + private static instance: InteractionManager; + private readonly waitForRelations: Map = new Map(); + private readonly simultaneousRelations: Map = new Map(); + + // Private becaues of singleton + // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function + private constructor() {} + + public configureInteractions(handler: GestureHandler, config: Config) { + this.dropRelationsForHandlerWithTag(handler.getTag()); + + if (config.waitFor) { + const waitFor: number[] = []; + config.waitFor.forEach((otherHandler: Handler): void => { + // New API reference + if (typeof otherHandler === 'number') { + waitFor.push(otherHandler); + } else { + // Old API reference + waitFor.push(otherHandler.handlerTag); + } + }); + + this.waitForRelations.set(handler.getTag(), waitFor); + } + + if (config.simultaneousHandlers) { + const simultaneousHandlers: number[] = []; + config.simultaneousHandlers.forEach((otherHandler: Handler): void => { + if (typeof otherHandler === 'number') { + simultaneousHandlers.push(otherHandler); + } else { + simultaneousHandlers.push(otherHandler.handlerTag); + } + }); + + this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers); + } + } + + public shouldWaitForHandlerFailure( + handler: GestureHandler, + otherHandler: GestureHandler + ): boolean { + const waitFor: number[] | undefined = this.waitForRelations.get( + handler.getTag() + ); + if (!waitFor) { + return false; + } + + let shouldWait = false; + + waitFor.forEach((tag: number): void => { + if (tag === otherHandler.getTag()) { + shouldWait = true; + return; //Returns from callback + } + }); + + return shouldWait; + } + + public shouldRecognizeSimultaneously( + handler: GestureHandler, + otherHandler: GestureHandler + ): boolean { + const simultaneousHandlers: number[] | undefined = + this.simultaneousRelations.get(handler.getTag()); + if (!simultaneousHandlers) { + return false; + } + + let shouldRecognizeSimultaneously = false; + + simultaneousHandlers.forEach((tag: number): void => { + if (tag === otherHandler.getTag()) { + shouldRecognizeSimultaneously = true; + return; + } + }); + + return shouldRecognizeSimultaneously; + } + + public shouldRequireHandlerToWaitForFailure( + _handler: GestureHandler, + _otherHandler: GestureHandler + ): boolean { + //TODO: Implement logic + return false; + } + + public shouldHandlerBeCancelledBy( + _handler: GestureHandler, + _otherHandler: GestureHandler + ): boolean { + //TODO: Implement logic + return false; + } + + public dropRelationsForHandlerWithTag(handlerTag: number): void { + this.waitForRelations.delete(handlerTag); + this.simultaneousRelations.delete(handlerTag); + } + + public reset() { + this.waitForRelations.clear(); + this.simultaneousRelations.clear(); + } + + public static getInstance(): InteractionManager { + if (!this.instance) { + this.instance = new InteractionManager(); + } + + return this.instance; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/NodeManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/NodeManager.ts new file mode 100644 index 00000000..825f4d0f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/NodeManager.ts @@ -0,0 +1,43 @@ +import { ValueOf } from '../../typeUtils'; +import { Gestures } from '../../RNGestureHandlerModule.web'; + +// eslint-disable-next-line @typescript-eslint/no-extraneous-class +export default abstract class NodeManager { + private static gestures: Record< + number, + InstanceType> + > = {}; + + public static getHandler(tag: number) { + if (tag in this.gestures) { + return this.gestures[tag]; + } + + throw new Error(`No handler for tag ${tag}`); + } + + public static createGestureHandler( + handlerTag: number, + handler: InstanceType> + ): void { + if (handlerTag in this.gestures) { + throw new Error(`Handler with tag ${handlerTag} already exists`); + } + + this.gestures[handlerTag] = handler; + this.gestures[handlerTag].setTag(handlerTag); + } + + public static dropGestureHandler(handlerTag: number): void { + if (!(handlerTag in this.gestures)) { + return; + } + + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this.gestures[handlerTag]; + } + + public static getNodes() { + return { ...this.gestures }; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerEventManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerEventManager.ts new file mode 100644 index 00000000..c2217a00 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerEventManager.ts @@ -0,0 +1,134 @@ +import { + AdaptedEvent, + EventTypes, + MouseButtons, + PointerType, +} from '../interfaces'; +import EventManager from './EventManager'; +import { isPointerInBounds } from '../utils'; + +export default class PointerEventManager extends EventManager { + public setListeners(): void { + this.view.addEventListener('pointerdown', (event: PointerEvent): void => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + if ( + !isPointerInBounds(this.view, { x: event.clientX, y: event.clientY }) + ) { + return; + } + + const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN); + const target = event.target as HTMLElement; + + target.setPointerCapture(adaptedEvent.pointerId); + this.markAsInBounds(adaptedEvent.pointerId); + + if (++this.activePointersCounter > 1) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN; + this.onPointerAdd(adaptedEvent); + } else { + this.onPointerDown(adaptedEvent); + } + }); + + this.view.addEventListener('pointerup', (event: PointerEvent): void => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + + // When we call reset on gesture handlers, it also resets their event managers + // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view + // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view + // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly + if (this.activePointersCounter === 0) { + return; + } + + const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP); + const target = event.target as HTMLElement; + + target.releasePointerCapture(adaptedEvent.pointerId); + this.markAsOutOfBounds(adaptedEvent.pointerId); + + if (--this.activePointersCounter > 0) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP; + this.onPointerRemove(adaptedEvent); + } else { + this.onPointerUp(adaptedEvent); + } + }); + + this.view.addEventListener('pointermove', (event: PointerEvent): void => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + + if ( + event.pointerType === PointerType.MOUSE && + event.buttons !== MouseButtons.LEFT + ) { + return; + } + + const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE); + + const inBounds: boolean = isPointerInBounds(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y, + }); + + const pointerIndex: number = this.pointersInBounds.indexOf( + adaptedEvent.pointerId + ); + + if (inBounds) { + if (pointerIndex < 0) { + adaptedEvent.eventType = EventTypes.ENTER; + this.onPointerEnter(adaptedEvent); + this.markAsInBounds(adaptedEvent.pointerId); + } else { + this.onPointerMove(adaptedEvent); + } + } else { + if (pointerIndex >= 0) { + adaptedEvent.eventType = EventTypes.OUT; + this.onPointerOut(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + } else { + this.onPointerOutOfBounds(adaptedEvent); + } + } + }); + + this.view.addEventListener('pointercancel', (event: PointerEvent): void => { + if (event.pointerType === PointerType.TOUCH) { + return; + } + + const adaptedEvent: AdaptedEvent = this.mapEvent( + event, + EventTypes.CANCEL + ); + + this.onPointerCancel(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + this.activePointersCounter = 0; + }); + } + + protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent { + return { + x: event.clientX, + y: event.clientY, + offsetX: event.offsetX, + offsetY: event.offsetY, + pointerId: event.pointerId, + eventType: eventType, + pointerType: event.pointerType as PointerType, + buttons: event.buttons, + time: event.timeStamp, + }; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerTracker.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerTracker.ts new file mode 100644 index 00000000..3d6e54b8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/PointerTracker.ts @@ -0,0 +1,240 @@ +import { AdaptedEvent } from '../interfaces'; + +export interface TrackerElement { + lastX: number; + lastY: number; + + timeStamp: number; + + velocityX: number; + velocityY: number; +} + +// Used to scale velocity so that it is similar to velocity in Android/iOS +const VELOCITY_FACTOR = 0.2; +const MAX_POINTERS = 20; + +export default class PointerTracker { + private trackedPointers: Map = new Map< + number, + TrackerElement + >(); + + private touchEventsIds: Map = new Map(); + + private lastMovedPointerId: number; + + private cachedAverages: { x: number; y: number } = { x: 0, y: 0 }; + + public constructor() { + this.lastMovedPointerId = NaN; + + for (let i = 0; i < MAX_POINTERS; ++i) { + this.touchEventsIds.set(i, NaN); + } + } + + public addToTracker(event: AdaptedEvent): void { + if (this.trackedPointers.has(event.pointerId)) { + return; + } + + this.lastMovedPointerId = event.pointerId; + + const newElement: TrackerElement = { + lastX: event.x, + lastY: event.y, + timeStamp: event.time, + velocityX: 0, + velocityY: 0, + }; + + this.trackedPointers.set(event.pointerId, newElement); + this.mapTouchEventId(event.pointerId); + + this.cachedAverages = { + x: this.getLastAvgX(), + y: this.getLastAvgY(), + }; + } + + public removeFromTracker(pointerId: number): void { + this.trackedPointers.delete(pointerId); + this.removeMappedTouchId(pointerId); + } + + public track(event: AdaptedEvent): void { + const element: TrackerElement = this.trackedPointers.get( + event.pointerId + ) as TrackerElement; + + if (!element) { + return; + } + + this.lastMovedPointerId = event.pointerId; + + const dx = event.x - element.lastX; + const dy = event.y - element.lastY; + const dt = event.time - element.timeStamp; + + element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR; + element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR; + + element.lastX = event.x; + element.lastY = event.y; + + this.trackedPointers.set(event.pointerId, element); + + const avgX: number = this.getLastAvgX(); + const avgY: number = this.getLastAvgY(); + + this.cachedAverages = { + x: avgX, + y: avgY, + }; + } + + //Mapping TouchEvents ID + private mapTouchEventId(id: number): void { + for (const [mappedId, touchId] of this.touchEventsIds) { + if (isNaN(touchId)) { + this.touchEventsIds.set(mappedId, id); + break; + } + } + } + + private removeMappedTouchId(id: number): void { + const mappedId: number = this.getMappedTouchEventId(id); + if (!isNaN(mappedId)) { + this.touchEventsIds.set(mappedId, NaN); + } + } + + public getMappedTouchEventId(touchEventId: number): number { + for (const [key, value] of this.touchEventsIds.entries()) { + if (value === touchEventId) { + return key; + } + } + + return NaN; + } + + public getVelocityX(pointerId: number): number { + return this.trackedPointers.get(pointerId)?.velocityX as number; + } + public getVelocityY(pointerId: number): number { + return this.trackedPointers.get(pointerId)?.velocityY as number; + } + + /** + * Returns X coordinate of last moved pointer + */ + public getLastX(): number; + + /** + * + * @param pointerId + * Returns X coordinate of given pointer + */ + // eslint-disable-next-line @typescript-eslint/unified-signatures + public getLastX(pointerId: number): number; + + public getLastX(pointerId?: number): number { + if (pointerId !== undefined) { + return this.trackedPointers.get(pointerId)?.lastX as number; + } else { + return this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number; + } + } + + /** + * Returns Y coordinate of last moved pointer + */ + public getLastY(): number; + + /** + * + * @param pointerId + * Returns Y coordinate of given pointer + */ + // eslint-disable-next-line @typescript-eslint/unified-signatures + public getLastY(pointerId: number): number; + + public getLastY(pointerId?: number): number { + if (pointerId !== undefined) { + return this.trackedPointers.get(pointerId)?.lastY as number; + } else { + return this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number; + } + } + + // Some handlers use these methods to send average values in native event. + // This may happen when pointers have already been removed from tracker (i.e. pointerup event). + // In situation when NaN would be sent as a response, we return cached value. + // That prevents handlers from crashing + public getLastAvgX(): number { + const avgX: number = this.getSumX() / this.trackedPointers.size; + return isNaN(avgX) ? this.cachedAverages.x : avgX; + } + public getLastAvgY(): number { + const avgY: number = this.getSumY() / this.trackedPointers.size; + return isNaN(avgY) ? this.cachedAverages.y : avgY; + } + public getSumX(ignoredPointer?: number): number { + let sumX = 0; + + this.trackedPointers.forEach((value, key) => { + if (key !== ignoredPointer) { + sumX += value.lastX; + } + }); + + return sumX; + } + public getSumY(ignoredPointer?: number): number { + let sumY = 0; + + this.trackedPointers.forEach((value, key) => { + if (key !== ignoredPointer) { + sumY += value.lastY; + } + }); + + return sumY; + } + public getTrackedPointersCount(): number { + return this.trackedPointers.size; + } + public getTrackedPointersID(): number[] { + const keys: number[] = []; + + this.trackedPointers.forEach((_value, key) => { + keys.push(key); + }); + + return keys; + } + + public getData(): Map { + return this.trackedPointers; + } + + public resetTracker(): void { + this.trackedPointers.clear(); + this.lastMovedPointerId = NaN; + + for (let i = 0; i < MAX_POINTERS; ++i) { + this.touchEventsIds.set(i, NaN); + } + } + + public static shareCommonPointers( + stPointers: number[], + ndPointers: number[] + ): boolean { + return stPointers.some((pointerId) => ndPointers.includes(pointerId)); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/TouchEventManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/TouchEventManager.ts new file mode 100644 index 00000000..312c9559 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/tools/TouchEventManager.ts @@ -0,0 +1,167 @@ +import { + AdaptedEvent, + EventTypes, + MouseButtons, + PointerType, + TouchEventType, +} from '../interfaces'; +import EventManager from './EventManager'; +import { isPointerInBounds } from '../utils'; + +export default class TouchEventManager extends EventManager { + public setListeners(): void { + this.view.addEventListener('touchstart', (event: TouchEvent) => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent: AdaptedEvent = this.mapEvent( + event, + EventTypes.DOWN, + i, + TouchEventType.DOWN + ); + + // Here we skip stylus, because in case of anything different than touch we want to handle it by using PointerEvents + // If we leave stylus to send touch events, handlers will receive every action twice + if ( + !isPointerInBounds(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y, + }) || + //@ts-ignore touchType field does exist + event.changedTouches[i].touchType === 'stylus' + ) { + continue; + } + + this.markAsInBounds(adaptedEvent.pointerId); + + if (++this.activePointersCounter > 1) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN; + this.onPointerAdd(adaptedEvent); + } else { + this.onPointerDown(adaptedEvent); + } + } + }); + + this.view.addEventListener('touchmove', (event: TouchEvent) => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent: AdaptedEvent = this.mapEvent( + event, + EventTypes.MOVE, + i, + TouchEventType.MOVE + ); + //@ts-ignore touchType field does exist + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + const inBounds: boolean = isPointerInBounds(this.view, { + x: adaptedEvent.x, + y: adaptedEvent.y, + }); + + const pointerIndex: number = this.pointersInBounds.indexOf( + adaptedEvent.pointerId + ); + + if (inBounds) { + if (pointerIndex < 0) { + adaptedEvent.eventType = EventTypes.ENTER; + this.onPointerEnter(adaptedEvent); + this.markAsInBounds(adaptedEvent.pointerId); + } else { + this.onPointerMove(adaptedEvent); + } + } else { + if (pointerIndex >= 0) { + adaptedEvent.eventType = EventTypes.OUT; + this.onPointerOut(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + } else { + this.onPointerOutOfBounds(adaptedEvent); + } + } + } + }); + + this.view.addEventListener('touchend', (event: TouchEvent) => { + for (let i = 0; i < event.changedTouches.length; ++i) { + // When we call reset on gesture handlers, it also resets their event managers + // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view + // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view + // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly + if (this.activePointersCounter === 0) { + break; + } + + //@ts-ignore touchType field does exist + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + const adaptedEvent: AdaptedEvent = this.mapEvent( + event, + EventTypes.UP, + i, + TouchEventType.UP + ); + + this.markAsOutOfBounds(adaptedEvent.pointerId); + + if (--this.activePointersCounter > 0) { + adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP; + this.onPointerRemove(adaptedEvent); + } else { + this.onPointerUp(adaptedEvent); + } + } + }); + + this.view.addEventListener('touchcancel', (event: TouchEvent) => { + for (let i = 0; i < event.changedTouches.length; ++i) { + const adaptedEvent: AdaptedEvent = this.mapEvent( + event, + EventTypes.CANCEL, + i, + TouchEventType.CANCELLED + ); + + //@ts-ignore touchType field does exist + if (event.changedTouches[i].touchType === 'stylus') { + continue; + } + + this.onPointerCancel(adaptedEvent); + this.markAsOutOfBounds(adaptedEvent.pointerId); + this.activePointersCounter = 0; + } + }); + } + + protected mapEvent( + event: TouchEvent, + eventType: EventTypes, + index: number, + touchEventType: TouchEventType + ): AdaptedEvent { + const rect = this.view.getBoundingClientRect(); + const clientX = event.changedTouches[index].clientX; + const clientY = event.changedTouches[index].clientY; + + return { + x: clientX, + y: clientY, + offsetX: clientX - rect.left, + offsetY: clientY - rect.top, + pointerId: event.changedTouches[index].identifier, + eventType: eventType, + pointerType: PointerType.TOUCH, + buttons: MouseButtons.NONE, + time: event.timeStamp, + allTouches: event.touches, + changedTouches: event.changedTouches, + touchEventType: touchEventType, + }; + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/utils.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/utils.ts new file mode 100644 index 00000000..f836ab17 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web/utils.ts @@ -0,0 +1,8 @@ +export function isPointerInBounds( + view: HTMLElement, + { x, y }: { x: number; y: number } +): boolean { + const rect: DOMRect = view.getBoundingClientRect(); + + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DiscreteGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DiscreteGestureHandler.ts new file mode 100644 index 00000000..cd2b603b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DiscreteGestureHandler.ts @@ -0,0 +1,82 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ +/* eslint-disable */ +import GestureHandler from './GestureHandler'; +import { TEST_MAX_IF_NOT_NAN } from './utils'; + +abstract class DiscreteGestureHandler extends GestureHandler { + get isDiscrete() { + return true; + } + + get shouldEnableGestureOnSetup() { + return true; + } + + shouldFailUnderCustomCriteria( + { x, y, deltaX, deltaY }: any, + { maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside }: any + ) { + if (shouldCancelWhenOutside) { + if (!this.isPointInView({ x, y })) { + return true; + } + } + return ( + TEST_MAX_IF_NOT_NAN(Math.abs(deltaX), maxDeltaX) || + TEST_MAX_IF_NOT_NAN(Math.abs(deltaY), maxDeltaY) || + TEST_MAX_IF_NOT_NAN( + Math.abs(deltaY * deltaY + deltaX * deltaX), + maxDistSq + ) + ); + } + + transformNativeEvent({ center: { x, y } }: any) { + // @ts-ignore FIXME(TS) + const rect = this.view!.getBoundingClientRect(); + + return { + absoluteX: x, + absoluteY: y, + x: x - rect.left, + y: y - rect.top, + }; + } + + isGestureEnabledForEvent( + { + minPointers, + maxPointers, + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside, + }: any, + _recognizer: any, + { maxPointers: pointerLength, center, deltaX, deltaY }: any + ) { + const validPointerCount = + pointerLength >= minPointers && pointerLength <= maxPointers; + + if ( + this.shouldFailUnderCustomCriteria( + { ...center, deltaX, deltaY }, + { + maxDeltaX, + maxDeltaY, + maxDistSq, + shouldCancelWhenOutside, + } + ) || + // A user probably won't land a multi-pointer tap on the first tick (so we cannot just cancel each time) + // but if the gesture is running and the user adds or subtracts another pointer then it should fail. + (!validPointerCount && this.isGestureRunning) + ) { + return { failed: true }; + } + + return { success: validPointerCount }; + } +} + +export default DiscreteGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DraggingGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DraggingGestureHandler.ts new file mode 100644 index 00000000..e93e3c6b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/DraggingGestureHandler.ts @@ -0,0 +1,34 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ +/* eslint-disable */ +import GestureHandler, { HammerInputExt } from './GestureHandler'; +import { PixelRatio } from 'react-native'; + +abstract class DraggingGestureHandler extends GestureHandler { + get shouldEnableGestureOnSetup() { + return true; + } + + transformNativeEvent({ + deltaX, + deltaY, + velocityX, + velocityY, + center: { x, y }, + }: HammerInputExt) { + // @ts-ignore FIXME(TS) + const rect = this.view!.getBoundingClientRect(); + const ratio = PixelRatio.get(); + return { + translationX: deltaX - (this.__initialX || 0), + translationY: deltaY - (this.__initialY || 0), + absoluteX: x, + absoluteY: y, + velocityX: velocityX * ratio, + velocityY: velocityY * ratio, + x: x - rect.left, + y: y - rect.top, + }; + } +} + +export default DraggingGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/Errors.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/Errors.ts new file mode 100644 index 00000000..a0e1a52a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/Errors.ts @@ -0,0 +1,7 @@ +export class GesturePropError extends Error { + constructor(name: string, value: unknown, expectedType: string) { + super( + `Invalid property \`${name}: ${value}\` expected \`${expectedType}\`` + ); + } +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/FlingGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/FlingGestureHandler.ts new file mode 100644 index 00000000..e3582009 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/FlingGestureHandler.ts @@ -0,0 +1,134 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ +/* eslint-disable */ +import Hammer from '@egjs/hammerjs'; + +import { Direction } from './constants'; +import { GesturePropError } from './Errors'; +import DraggingGestureHandler from './DraggingGestureHandler'; +import { isnan } from './utils'; +import { HammerInputExt } from './GestureHandler'; + +class FlingGestureHandler extends DraggingGestureHandler { + get name() { + return 'swipe'; + } + + get NativeGestureClass() { + return Hammer.Swipe; + } + + onGestureActivated(event: HammerInputExt) { + this.sendEvent({ + ...event, + eventType: Hammer.INPUT_MOVE, + isFinal: false, + isFirst: true, + }); + this.isGestureRunning = false; + this.hasGestureFailed = false; + this.sendEvent({ + ...event, + eventType: Hammer.INPUT_END, + isFinal: true, + }); + } + + onRawEvent(ev: HammerInputExt) { + super.onRawEvent(ev); + if (this.hasGestureFailed) { + return; + } + // Hammer doesn't send a `cancel` event for taps. + // Manually fail the event. + if (ev.isFinal) { + setTimeout(() => { + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } else if (!this.hasGestureFailed && !this.isGestureRunning) { + // Tap Gesture start event + const gesture = this.hammer!.get(this.name); + // @ts-ignore FIXME(TS) + if (gesture.options.enable(gesture, ev)) { + this.onStart(ev); + this.sendEvent(ev); + } + } + } + + getHammerConfig() { + return { + // @ts-ignore FIXME(TS) + pointers: this.config.numberOfPointers, + direction: this.getDirection(), + }; + } + + getTargetDirections(direction: number) { + const directions = []; + if (direction & Direction.RIGHT) { + directions.push(Hammer.DIRECTION_RIGHT); + } + if (direction & Direction.LEFT) { + directions.push(Hammer.DIRECTION_LEFT); + } + if (direction & Direction.UP) { + directions.push(Hammer.DIRECTION_UP); + } + if (direction & Direction.DOWN) { + directions.push(Hammer.DIRECTION_DOWN); + } + // const hammerDirection = directions.reduce((a, b) => a | b, 0); + return directions; + } + + getDirection() { + // @ts-ignore FIXME(TS) + const { direction } = this.getConfig(); + + let directions = []; + if (direction & Direction.RIGHT) { + directions.push(Hammer.DIRECTION_HORIZONTAL); + } + if (direction & Direction.LEFT) { + directions.push(Hammer.DIRECTION_HORIZONTAL); + } + if (direction & Direction.UP) { + directions.push(Hammer.DIRECTION_VERTICAL); + } + if (direction & Direction.DOWN) { + directions.push(Hammer.DIRECTION_VERTICAL); + } + directions = [...new Set(directions)]; + + if (directions.length === 0) return Hammer.DIRECTION_NONE; + if (directions.length === 1) return directions[0]; + return Hammer.DIRECTION_ALL; + } + + isGestureEnabledForEvent( + { numberOfPointers }: any, + _recognizer: any, + { maxPointers: pointerLength }: any + ) { + const validPointerCount = pointerLength === numberOfPointers; + if (!validPointerCount && this.isGestureRunning) { + return { failed: true }; + } + return { success: validPointerCount }; + } + + updateGestureConfig({ numberOfPointers = 1, direction, ...props }: any) { + if (isnan(direction) || typeof direction !== 'number') { + throw new GesturePropError('direction', direction, 'number'); + } + return super.updateGestureConfig({ + numberOfPointers, + direction, + ...props, + }); + } +} + +export default FlingGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/GestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/GestureHandler.ts new file mode 100644 index 00000000..75632ab8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/GestureHandler.ts @@ -0,0 +1,598 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ +/* eslint-disable */ +import Hammer from '@egjs/hammerjs'; +import { findNodeHandle } from 'react-native'; + +import { State } from '../State'; +import { EventMap } from './constants'; +import * as NodeManager from './NodeManager'; + +// TODO(TS) Replace with HammerInput if https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438/files is merged +export type HammerInputExt = Omit; + +export type Config = Partial<{ + enabled: boolean; + minPointers: number; + maxPointers: number; + minDist: number; + minDistSq: number; + minVelocity: number; + minVelocitySq: number; + maxDist: number; + maxDistSq: number; + failOffsetXStart: number; + failOffsetYStart: number; + failOffsetXEnd: number; + failOffsetYEnd: number; + activeOffsetXStart: number; + activeOffsetXEnd: number; + activeOffsetYStart: number; + activeOffsetYEnd: number; + waitFor: any[] | null; + simultaneousHandlers: any[] | null; +}>; + +type NativeEvent = ReturnType; + +let gestureInstances = 0; + +abstract class GestureHandler { + public handlerTag: any; + public isGestureRunning = false; + public view: number | null = null; + protected hasCustomActivationCriteria: boolean; + protected hasGestureFailed = false; + protected hammer: HammerManager | null = null; + protected initialRotation: number | null = null; + protected __initialX: any; + protected __initialY: any; + protected config: Config = {}; + protected previousState: State = State.UNDETERMINED; + private pendingGestures: Record = {}; + private oldState: State = State.UNDETERMINED; + private lastSentState: State | null = null; + private gestureInstance: number; + private _stillWaiting: any; + private propsRef: any; + private ref: any; + + abstract get name(): string; + + get id() { + return `${this.name}${this.gestureInstance}`; + } + + // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it + // here to use instanceof would cause import cycle + get isNative() { + return false; + } + + get isDiscrete() { + return false; + } + + get shouldEnableGestureOnSetup(): boolean { + throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup'); + } + + constructor() { + this.gestureInstance = gestureInstances++; + this.hasCustomActivationCriteria = false; + } + + getConfig() { + return this.config; + } + + onWaitingEnded(_gesture: this) {} + + removePendingGesture(id: string) { + delete this.pendingGestures[id]; + } + + addPendingGesture(gesture: this) { + this.pendingGestures[gesture.id] = gesture; + } + + isGestureEnabledForEvent( + _config: any, + _recognizer: any, + _event: any + ): { failed?: boolean; success?: boolean } { + return { success: true }; + } + + get NativeGestureClass(): RecognizerStatic { + throw new Error('Must override GestureHandler.NativeGestureClass'); + } + + updateHasCustomActivationCriteria(_config: Config) { + return true; + } + + clearSelfAsPending = () => { + if (Array.isArray(this.config.waitFor)) { + for (const gesture of this.config.waitFor) { + gesture.removePendingGesture(this.id); + } + } + }; + + updateGestureConfig({ enabled = true, ...props }) { + this.clearSelfAsPending(); + + this.config = this.ensureConfig({ enabled, ...props }); + this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria( + this.config + ); + if (Array.isArray(this.config.waitFor)) { + for (const gesture of this.config.waitFor) { + gesture.addPendingGesture(this); + } + } + + if (this.hammer) { + this.sync(); + } + return this.config; + } + + destroy = () => { + this.clearSelfAsPending(); + + if (this.hammer) { + this.hammer.stop(false); + this.hammer.destroy(); + } + this.hammer = null; + }; + + isPointInView = ({ x, y }: { x: number; y: number }) => { + // @ts-ignore FIXME(TS) + const rect = this.view!.getBoundingClientRect(); + const pointerInside = + x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + return pointerInside; + }; + + getState(type: keyof typeof EventMap): State { + // @ts-ignore TODO(TS) check if this is needed + if (type == 0) { + return 0; + } + return EventMap[type]; + } + + transformEventData(event: HammerInputExt) { + const { eventType, maxPointers: numberOfPointers } = event; + // const direction = DirectionMap[ev.direction]; + const changedTouch = event.changedPointers[0]; + const pointerInside = this.isPointInView({ + x: changedTouch.clientX, + y: changedTouch.clientY, + }); + + // TODO(TS) Remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50966 is merged. + const state = this.getState(eventType as 1 | 2 | 4 | 8); + if (state !== this.previousState) { + this.oldState = this.previousState; + this.previousState = state; + } + + return { + nativeEvent: { + numberOfPointers, + state, + pointerInside, + ...this.transformNativeEvent(event), + // onHandlerStateChange only + handlerTag: this.handlerTag, + target: this.ref, + // send oldState only when the state was changed, or is different than ACTIVE + // GestureDetector relies on the presence of `oldState` to differentiate between + // update events and state change events + oldState: + state !== this.previousState || state != 4 + ? this.oldState + : undefined, + }, + timeStamp: Date.now(), + }; + } + + transformNativeEvent(_event: HammerInputExt) { + return {}; + } + + sendEvent = (nativeEvent: HammerInputExt) => { + const { onGestureHandlerEvent, onGestureHandlerStateChange } = + this.propsRef.current; + + const event = this.transformEventData(nativeEvent); + + invokeNullableMethod(onGestureHandlerEvent, event); + if (this.lastSentState !== event.nativeEvent.state) { + this.lastSentState = event.nativeEvent.state as State; + invokeNullableMethod(onGestureHandlerStateChange, event); + } + }; + + cancelPendingGestures(event: HammerInputExt) { + for (const gesture of Object.values(this.pendingGestures)) { + if (gesture && gesture.isGestureRunning) { + gesture.hasGestureFailed = true; + gesture.cancelEvent(event); + } + } + } + + notifyPendingGestures() { + for (const gesture of Object.values(this.pendingGestures)) { + if (gesture) { + gesture.onWaitingEnded(this); + } + } + } + + // FIXME event is undefined in runtime when firstly invoked (see Draggable example), check other functions taking event as input + onGestureEnded(event: HammerInputExt) { + this.isGestureRunning = false; + this.cancelPendingGestures(event); + } + + forceInvalidate(event: HammerInputExt) { + if (this.isGestureRunning) { + this.hasGestureFailed = true; + this.cancelEvent(event); + } + } + + cancelEvent(event: HammerInputExt) { + this.notifyPendingGestures(); + this.sendEvent({ + ...event, + eventType: Hammer.INPUT_CANCEL, + isFinal: true, + }); + this.onGestureEnded(event); + } + + onRawEvent({ isFirst }: HammerInputExt) { + if (isFirst) { + this.hasGestureFailed = false; + } + } + + shouldUseTouchEvents(config: Config) { + return ( + config.simultaneousHandlers?.some((handler) => handler.isNative) ?? false + ); + } + + setView(ref: Parameters['0'], propsRef: any) { + if (ref == null) { + this.destroy(); + this.view = null; + return; + } + + // @ts-ignore window doesn't exist on global type as we don't want to use Node types + const SUPPORTS_TOUCH = 'ontouchstart' in window; + this.propsRef = propsRef; + this.ref = ref; + + this.view = findNodeHandle(ref); + + // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops + // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous + // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible. + this.hammer = + SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config) + ? new Hammer.Manager(this.view as any, { + inputClass: Hammer.TouchInput, + }) + : new Hammer.Manager(this.view as any); + + this.oldState = State.UNDETERMINED; + this.previousState = State.UNDETERMINED; + this.lastSentState = null; + + const { NativeGestureClass } = this; + // @ts-ignore TODO(TS) + const gesture = new NativeGestureClass(this.getHammerConfig()); + this.hammer.add(gesture); + + this.hammer.on('hammer.input', (ev: HammerInput) => { + if (!this.config.enabled) { + this.hasGestureFailed = false; + this.isGestureRunning = false; + return; + } + + this.onRawEvent(ev as unknown as HammerInputExt); + + // TODO: Bacon: Check against something other than null + // The isFirst value is not called when the first rotation is calculated. + if (this.initialRotation === null && ev.rotation !== 0) { + this.initialRotation = ev.rotation; + } + if (ev.isFinal) { + // in favor of a willFail otherwise the last frame of the gesture will be captured. + setTimeout(() => { + this.initialRotation = null; + this.hasGestureFailed = false; + }); + } + }); + + this.setupEvents(); + this.sync(); + } + + setupEvents() { + // TODO(TS) Hammer types aren't exactly that what we get in runtime + if (!this.isDiscrete) { + this.hammer!.on(`${this.name}start`, (event: HammerInput) => + this.onStart(event as unknown as HammerInputExt) + ); + this.hammer!.on( + `${this.name}end ${this.name}cancel`, + (event: HammerInput) => { + this.onGestureEnded(event as unknown as HammerInputExt); + } + ); + } + this.hammer!.on(this.name, (ev: HammerInput) => + this.onGestureActivated(ev as unknown as HammerInputExt) + ); // TODO(TS) remove cast after https://github.com/DefinitelyTyped/DefinitelyTyped/pull/50438 is merged + } + + onStart({ deltaX, deltaY, rotation }: HammerInputExt) { + // Reset the state for the next gesture + this.oldState = State.UNDETERMINED; + this.previousState = State.UNDETERMINED; + this.lastSentState = null; + + this.isGestureRunning = true; + this.__initialX = deltaX; + this.__initialY = deltaY; + this.initialRotation = rotation; + } + + onGestureActivated(ev: HammerInputExt) { + this.sendEvent(ev); + } + + onSuccess() {} + + _getPendingGestures() { + if (Array.isArray(this.config.waitFor) && this.config.waitFor.length) { + // Get the list of gestures that this gesture is still waiting for. + // Use `=== false` in case a ref that isn't a gesture handler is used. + const stillWaiting = this.config.waitFor.filter( + ({ hasGestureFailed }) => hasGestureFailed === false + ); + return stillWaiting; + } + return []; + } + + getHammerConfig() { + const pointers = + this.config.minPointers === this.config.maxPointers + ? this.config.minPointers + : 0; + return { + pointers, + }; + } + + sync = () => { + const gesture = this.hammer!.get(this.name); + if (!gesture) return; + + const enable = (recognizer: any, inputData: any) => { + if (!this.config.enabled) { + this.isGestureRunning = false; + this.hasGestureFailed = false; + return false; + } + + // Prevent events before the system is ready. + if ( + !inputData || + !recognizer.options || + typeof inputData.maxPointers === 'undefined' + ) { + return this.shouldEnableGestureOnSetup; + } + + if (this.hasGestureFailed) { + return false; + } + + if (!this.isDiscrete) { + if (this.isGestureRunning) { + return true; + } + // The built-in hammer.js "waitFor" doesn't work across multiple views. + // Only process if there are views to wait for. + this._stillWaiting = this._getPendingGestures(); + // This gesture should continue waiting. + if (this._stillWaiting.length) { + // Check to see if one of the gestures you're waiting for has started. + // If it has then the gesture should fail. + for (const gesture of this._stillWaiting) { + // When the target gesture has started, this gesture must force fail. + if (!gesture.isDiscrete && gesture.isGestureRunning) { + this.hasGestureFailed = true; + this.isGestureRunning = false; + return false; + } + } + // This gesture shouldn't start until the others have finished. + return false; + } + } + + // Use default behaviour + if (!this.hasCustomActivationCriteria) { + return true; + } + + const deltaRotation = + this.initialRotation == null + ? 0 + : inputData.rotation - this.initialRotation; + // @ts-ignore FIXME(TS) + const { success, failed } = this.isGestureEnabledForEvent( + this.getConfig(), + recognizer, + { + ...inputData, + deltaRotation, + } + ); + + if (failed) { + this.simulateCancelEvent(inputData); + this.hasGestureFailed = true; + } + return success; + }; + + const params = this.getHammerConfig(); + // @ts-ignore FIXME(TS) + gesture.set({ ...params, enable }); + }; + + simulateCancelEvent(_inputData: any) {} + + // Validate the props + ensureConfig(config: Config): Required { + const props = { ...config }; + + // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined) + if ('minDist' in config) { + props.minDist = config.minDist; + props.minDistSq = props.minDist! * props.minDist!; + } + if ('minVelocity' in config) { + props.minVelocity = config.minVelocity; + props.minVelocitySq = props.minVelocity! * props.minVelocity!; + } + if ('maxDist' in config) { + props.maxDist = config.maxDist; + props.maxDistSq = config.maxDist! * config.maxDist!; + } + if ('waitFor' in config) { + props.waitFor = asArray(config.waitFor) + .map(({ handlerTag }: { handlerTag: number }) => + NodeManager.getHandler(handlerTag) + ) + .filter((v) => v); + } else { + props.waitFor = null; + } + if ('simultaneousHandlers' in config) { + const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config); + props.simultaneousHandlers = asArray(config.simultaneousHandlers) + .map((handler: number | GestureHandler) => { + if (typeof handler === 'number') { + return NodeManager.getHandler(handler); + } else { + return NodeManager.getHandler(handler.handlerTag); + } + }) + .filter((v) => v); + + if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) { + requestAnimationFrame(() => { + // if the undelying event API needs to be changed, we need to unmount and mount + // the hammer instance again. + this.destroy(); + this.setView(this.ref, this.propsRef); + }); + } + } else { + props.simultaneousHandlers = null; + } + + const configProps = [ + 'minPointers', + 'maxPointers', + 'minDist', + 'maxDist', + 'maxDistSq', + 'minVelocitySq', + 'minDistSq', + 'minVelocity', + 'failOffsetXStart', + 'failOffsetYStart', + 'failOffsetXEnd', + 'failOffsetYEnd', + 'activeOffsetXStart', + 'activeOffsetXEnd', + 'activeOffsetYStart', + 'activeOffsetYEnd', + ] as const; + configProps.forEach((prop: typeof configProps[number]) => { + if (typeof props[prop] === 'undefined') { + props[prop] = Number.NaN; + } + }); + return props as Required; // TODO(TS) how to convince TS that props are filled? + } +} + +// TODO(TS) investigate this method +// Used for sending data to a callback or AnimatedEvent +function invokeNullableMethod( + method: + | ((event: NativeEvent) => void) + | { __getHandler: () => (event: NativeEvent) => void } + | { __nodeConfig: { argMapping: any } }, + event: NativeEvent +) { + if (method) { + if (typeof method === 'function') { + method(event); + } else { + // For use with reanimated's AnimatedEvent + if ( + '__getHandler' in method && + typeof method.__getHandler === 'function' + ) { + const handler = method.__getHandler(); + invokeNullableMethod(handler, event); + } else { + if ('__nodeConfig' in method) { + const { argMapping } = method.__nodeConfig; + if (Array.isArray(argMapping)) { + for (const [index, [key, value]] of argMapping.entries()) { + if (key in event.nativeEvent) { + // @ts-ignore fix method type + const nativeValue = event.nativeEvent[key]; + if (value && value.setValue) { + // Reanimated API + value.setValue(nativeValue); + } else { + // RN Animated API + method.__nodeConfig.argMapping[index] = [key, nativeValue]; + } + } + } + } + } + } + } + } +} + +function asArray(value: T | T[]) { + // TODO(TS) use config.waitFor type + return value == null ? [] : Array.isArray(value) ? value : [value]; +} + +export default GestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/IndiscreteGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/IndiscreteGestureHandler.ts new file mode 100644 index 00000000..d63ba2fe --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/IndiscreteGestureHandler.ts @@ -0,0 +1,33 @@ +import GestureHandler from './GestureHandler'; + +/** + * The base class for **Rotation** and **Pinch** gesture handlers. + */ +abstract class IndiscreteGestureHandler extends GestureHandler { + get shouldEnableGestureOnSetup() { + return false; + } + + updateGestureConfig({ minPointers = 2, maxPointers = 2, ...props }) { + return super.updateGestureConfig({ + minPointers, + maxPointers, + ...props, + }); + } + + isGestureEnabledForEvent( + { minPointers, maxPointers }: any, + _recognizer: any, + { maxPointers: pointerLength }: any + ) { + if (pointerLength > maxPointers) { + return { failed: true }; + } + const validPointerCount = pointerLength >= minPointers; + return { + success: validPointerCount, + }; + } +} +export default IndiscreteGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/LongPressGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/LongPressGestureHandler.ts new file mode 100644 index 00000000..7dcf41a9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/LongPressGestureHandler.ts @@ -0,0 +1,56 @@ +/* eslint-disable eslint-comments/no-unlimited-disable */ +/* eslint-disable */ +import Hammer from '@egjs/hammerjs'; + +import { State } from '../State'; +import PressGestureHandler from './PressGestureHandler'; +import { isnan, isValidNumber } from './utils'; +import { Config } from './GestureHandler'; +import { HammerInputNames } from './constants'; + +class LongPressGestureHandler extends PressGestureHandler { + get minDurationMs(): number { + // @ts-ignore FIXNE(TS) + return isnan(this.config.minDurationMs) ? 251 : this.config.minDurationMs; + } + + get maxDist() { + // @ts-ignore FIXNE(TS) + return isnan(this.config.maxDist) ? 9 : this.config.maxDist; + } + + updateHasCustomActivationCriteria({ maxDistSq }: Config) { + return !isValidNumber(maxDistSq); + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + shouldCancelWhenOutside: true, + maxDistSq: 10, + }; + } + return this.config; + } + + getHammerConfig() { + return { + ...super.getHammerConfig(), + // threshold: this.maxDist, + time: this.minDurationMs, + }; + } + + getState(type: keyof typeof HammerInputNames) { + return { + [Hammer.INPUT_START]: State.ACTIVE, + [Hammer.INPUT_MOVE]: State.ACTIVE, + [Hammer.INPUT_END]: State.END, + [Hammer.INPUT_CANCEL]: State.FAILED, + }[type]; + } +} + +export default LongPressGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NativeViewGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NativeViewGestureHandler.ts new file mode 100644 index 00000000..7deb5bdd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NativeViewGestureHandler.ts @@ -0,0 +1,47 @@ +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { HammerInputExt } from './GestureHandler'; +import * as NodeManager from './NodeManager'; +import PressGestureHandler from './PressGestureHandler'; +import { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils'; + +class NativeViewGestureHandler extends PressGestureHandler { + get isNative() { + return true; + } + + onRawEvent(ev: HammerInputExt) { + super.onRawEvent(ev); + if (!ev.isFinal) { + // if (this.ref instanceof ScrollView) { + if (TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ x: ev.deltaX, y: ev.deltaY }), 10)) { + // @ts-ignore FIXME(TS) config type + if (this.config.disallowInterruption) { + const gestures = Object.values(NodeManager.getNodes()).filter( + (gesture) => { + const { handlerTag, view, isGestureRunning } = gesture; + return ( + // Check if this gesture isn't self + handlerTag !== this.handlerTag && + // Ensure the gesture needs to be cancelled + isGestureRunning && + // ScrollView can cancel discrete gestures like taps and presses + gesture instanceof DiscreteGestureHandler && + // Ensure a view exists and is a child of the current view + view && + // @ts-ignore FIXME(TS) view type + this.view.contains(view) + ); + } + ); + // Cancel all of the gestures that passed the filter + for (const gesture of gestures) { + // TODO: Bacon: Send some cached event. + gesture.forceInvalidate(ev); + } + } + } + } + } +} + +export default NativeViewGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NodeManager.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NodeManager.ts new file mode 100644 index 00000000..16369385 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/NodeManager.ts @@ -0,0 +1,42 @@ +import { ValueOf } from '../typeUtils'; +import { HammerGestures } from '../RNGestureHandlerModule.web'; + +const gestures: Record< + number, + InstanceType> +> = {}; + +export function getHandler(tag: number) { + if (tag in gestures) { + return gestures[tag]; + } + + throw new Error(`No handler for tag ${tag}`); +} + +export function createGestureHandler( + handlerTag: number, + handler: InstanceType> +) { + if (handlerTag in gestures) { + throw new Error(`Handler with tag ${handlerTag} already exists`); + } + gestures[handlerTag] = handler; + // @ts-ignore no types for web handlers yet + gestures[handlerTag].handlerTag = handlerTag; +} + +export function dropGestureHandler(handlerTag: number) { + // Since React 18, there are cases where componentWillUnmount gets called twice in a row + // so skip this if the tag was already removed. + if (!(handlerTag in gestures)) { + return; + } + getHandler(handlerTag).destroy(); + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete gestures[handlerTag]; +} + +export function getNodes() { + return { ...gestures }; +} diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PanGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PanGestureHandler.ts new file mode 100644 index 00000000..4a7e17da --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PanGestureHandler.ts @@ -0,0 +1,226 @@ +import Hammer from '@egjs/hammerjs'; + +import { + EventMap, + MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD, + MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD, +} from './constants'; +import DraggingGestureHandler from './DraggingGestureHandler'; +import { isValidNumber, isnan, TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils'; +import { State } from '../State'; + +import { Config, HammerInputExt } from './GestureHandler'; +class PanGestureHandler extends DraggingGestureHandler { + get name() { + return 'pan'; + } + + get NativeGestureClass() { + return Hammer.Pan; + } + + getHammerConfig() { + return { + ...super.getHammerConfig(), + direction: this.getDirection(), + }; + } + + getState(type: keyof typeof EventMap) { + const nextState = super.getState(type); + // Ensure that the first state sent is `BEGAN` and not `ACTIVE` + if ( + this.previousState === State.UNDETERMINED && + nextState === State.ACTIVE + ) { + return State.BEGAN; + } + return nextState; + } + + getDirection() { + const config = this.getConfig(); + const { + activeOffsetXStart, + activeOffsetXEnd, + activeOffsetYStart, + activeOffsetYEnd, + minDist, + } = config; + let directions: number[] = []; + let horizontalDirections = []; + + if (!isnan(minDist)) { + return Hammer.DIRECTION_ALL; + } + + if (!isnan(activeOffsetXStart)) { + horizontalDirections.push(Hammer.DIRECTION_LEFT); + } + if (!isnan(activeOffsetXEnd)) { + horizontalDirections.push(Hammer.DIRECTION_RIGHT); + } + if (horizontalDirections.length === 2) { + horizontalDirections = [Hammer.DIRECTION_HORIZONTAL]; + } + + directions = directions.concat(horizontalDirections); + let verticalDirections = []; + + if (!isnan(activeOffsetYStart)) { + verticalDirections.push(Hammer.DIRECTION_UP); + } + if (!isnan(activeOffsetYEnd)) { + verticalDirections.push(Hammer.DIRECTION_DOWN); + } + + if (verticalDirections.length === 2) { + verticalDirections = [Hammer.DIRECTION_VERTICAL]; + } + + directions = directions.concat(verticalDirections); + + if (!directions.length) { + return Hammer.DIRECTION_NONE; + } + if ( + directions[0] === Hammer.DIRECTION_HORIZONTAL && + directions[1] === Hammer.DIRECTION_VERTICAL + ) { + return Hammer.DIRECTION_ALL; + } + if (horizontalDirections.length && verticalDirections.length) { + return Hammer.DIRECTION_ALL; + } + + return directions[0]; + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + minDistSq: 10, + }; + } + return this.config; + } + + shouldFailUnderCustomCriteria( + { deltaX, deltaY }: HammerInputExt, + criteria: any + ) { + return ( + (!isnan(criteria.failOffsetXStart) && + deltaX < criteria.failOffsetXStart) || + (!isnan(criteria.failOffsetXEnd) && deltaX > criteria.failOffsetXEnd) || + (!isnan(criteria.failOffsetYStart) && + deltaY < criteria.failOffsetYStart) || + (!isnan(criteria.failOffsetYEnd) && deltaY > criteria.failOffsetYEnd) + ); + } + + shouldActivateUnderCustomCriteria( + { deltaX, deltaY, velocity }: any, + criteria: any + ) { + return ( + (!isnan(criteria.activeOffsetXStart) && + deltaX < criteria.activeOffsetXStart) || + (!isnan(criteria.activeOffsetXEnd) && + deltaX > criteria.activeOffsetXEnd) || + (!isnan(criteria.activeOffsetYStart) && + deltaY < criteria.activeOffsetYStart) || + (!isnan(criteria.activeOffsetYEnd) && + deltaY > criteria.activeOffsetYEnd) || + TEST_MIN_IF_NOT_NAN( + VEC_LEN_SQ({ x: deltaX, y: deltaY }), + criteria.minDistSq + ) || + TEST_MIN_IF_NOT_NAN(velocity.x, criteria.minVelocityX) || + TEST_MIN_IF_NOT_NAN(velocity.y, criteria.minVelocityY) || + TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), criteria.minVelocitySq) + ); + } + + shouldMultiFingerPanFail({ + pointerLength, + scale, + deltaRotation, + }: { + deltaRotation: number; + pointerLength: number; + scale: number; + }) { + if (pointerLength <= 1) { + return false; + } + + // Test if the pan had too much pinching or rotating. + const deltaScale = Math.abs(scale - 1); + const absDeltaRotation = Math.abs(deltaRotation); + if (deltaScale > MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD) { + // > If the threshold doesn't seem right. + // You can log the value which it failed at here: + return true; + } + if (absDeltaRotation > MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD) { + // > If the threshold doesn't seem right. + // You can log the value which it failed at here: + return true; + } + + return false; + } + + updateHasCustomActivationCriteria( + criteria: Config & { minVelocityX?: number; minVelocityY?: number } + ) { + return ( + isValidNumber(criteria.minDistSq) || + isValidNumber(criteria.minVelocityX) || + isValidNumber(criteria.minVelocityY) || + isValidNumber(criteria.minVelocitySq) || + isValidNumber(criteria.activeOffsetXStart) || + isValidNumber(criteria.activeOffsetXEnd) || + isValidNumber(criteria.activeOffsetYStart) || + isValidNumber(criteria.activeOffsetYEnd) + ); + } + + isGestureEnabledForEvent( + props: any, + _recognizer: any, + inputData: HammerInputExt & { deltaRotation: number } + ) { + if (this.shouldFailUnderCustomCriteria(inputData, props)) { + return { failed: true }; + } + + const velocity = { x: inputData.velocityX, y: inputData.velocityY }; + if ( + this.hasCustomActivationCriteria && + this.shouldActivateUnderCustomCriteria( + { deltaX: inputData.deltaX, deltaY: inputData.deltaY, velocity }, + props + ) + ) { + if ( + this.shouldMultiFingerPanFail({ + pointerLength: inputData.maxPointers, + scale: inputData.scale, + deltaRotation: inputData.deltaRotation, + }) + ) { + return { + failed: true, + }; + } + return { success: true }; + } + return { success: false }; + } +} + +export default PanGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PinchGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PinchGestureHandler.ts new file mode 100644 index 00000000..3adf5b9b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PinchGestureHandler.ts @@ -0,0 +1,25 @@ +import Hammer from '@egjs/hammerjs'; +import { HammerInputExt } from './GestureHandler'; + +import IndiscreteGestureHandler from './IndiscreteGestureHandler'; + +class PinchGestureHandler extends IndiscreteGestureHandler { + get name() { + return 'pinch'; + } + + get NativeGestureClass() { + return Hammer.Pinch; + } + + transformNativeEvent({ scale, velocity, center }: HammerInputExt) { + return { + focalX: center.x, + focalY: center.y, + velocity, + scale, + }; + } +} + +export default PinchGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PressGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PressGestureHandler.ts new file mode 100644 index 00000000..3852ed65 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/PressGestureHandler.ts @@ -0,0 +1,167 @@ +import Hammer from '@egjs/hammerjs'; + +import { State } from '../State'; +import { + CONTENT_TOUCHES_DELAY, + CONTENT_TOUCHES_QUICK_TAP_END_DELAY, + HammerInputNames, +} from './constants'; +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { Config, HammerInputExt } from './GestureHandler'; +import { fireAfterInterval, isValidNumber, isnan } from './utils'; + +class PressGestureHandler extends DiscreteGestureHandler { + private visualFeedbackTimer: any; + private initialEvent: HammerInputExt | null = null; + get name() { + return 'press'; + } + + get minDurationMs() { + // @ts-ignore FIXME(TS) + return isnan(this.config.minDurationMs) ? 5 : this.config.minDurationMs; + } + + get maxDist() { + return isnan(this.config.maxDist) ? 9 : this.config.maxDist; + } + + get NativeGestureClass() { + return Hammer.Press; + } + + shouldDelayTouches = true; + + simulateCancelEvent(inputData: HammerInputExt) { + // Long press never starts so we can't rely on the running event boolean. + this.hasGestureFailed = true; + this.cancelEvent(inputData); + } + + updateHasCustomActivationCriteria({ + shouldCancelWhenOutside, + maxDistSq, + }: Config & { shouldCancelWhenOutside: boolean }) { + return shouldCancelWhenOutside || !isValidNumber(maxDistSq); + } + + getState(type: keyof typeof HammerInputNames): State { + return { + [Hammer.INPUT_START]: State.BEGAN, + [Hammer.INPUT_MOVE]: State.ACTIVE, + [Hammer.INPUT_END]: State.END, + [Hammer.INPUT_CANCEL]: State.CANCELLED, + }[type]; + } + + getConfig() { + if (!this.hasCustomActivationCriteria) { + // Default config + // If no params have been defined then this config should emulate the native gesture as closely as possible. + return { + shouldCancelWhenOutside: true, + maxDistSq: 10, + }; + } + return this.config; + } + + getHammerConfig() { + return { + ...super.getHammerConfig(), + // threshold: this.maxDist, + time: this.minDurationMs, + }; + } + + onGestureActivated(ev: HammerInputExt) { + this.onGestureStart(ev); + } + + shouldDelayTouchForEvent({ pointerType }: HammerInputExt) { + // Don't disable event for mouse input + return this.shouldDelayTouches && pointerType === 'touch'; + } + + onGestureStart(ev: HammerInputExt) { + this.isGestureRunning = true; + clearTimeout(this.visualFeedbackTimer); + this.initialEvent = ev; + this.visualFeedbackTimer = fireAfterInterval(() => { + this.sendGestureStartedEvent(this.initialEvent as HammerInputExt); + this.initialEvent = null; + }, this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY); + } + + sendGestureStartedEvent(ev: HammerInputExt) { + clearTimeout(this.visualFeedbackTimer); + this.visualFeedbackTimer = null; + this.sendEvent({ + ...ev, + eventType: Hammer.INPUT_MOVE, + isFirst: true, + }); + } + + forceInvalidate(event: HammerInputExt) { + super.forceInvalidate(event); + clearTimeout(this.visualFeedbackTimer); + this.visualFeedbackTimer = null; + this.initialEvent = null; + } + + onRawEvent(ev: HammerInputExt) { + super.onRawEvent(ev); + if (this.isGestureRunning) { + if (ev.isFinal) { + let timeout; + if (this.visualFeedbackTimer) { + // Aesthetic timing for a quick tap. + // We haven't activated the tap right away to emulate iOS `delaysContentTouches` + // Now we must send the initial activation event and wait a set amount of time before firing the end event. + timeout = CONTENT_TOUCHES_QUICK_TAP_END_DELAY; + this.sendGestureStartedEvent(this.initialEvent as HammerInputExt); + this.initialEvent = null; + } + fireAfterInterval(() => { + this.sendEvent({ + ...ev, + eventType: Hammer.INPUT_END, + isFinal: true, + }); + // @ts-ignore -- this should explicitly support undefined + this.onGestureEnded(); + }, timeout); + } else { + this.sendEvent({ + ...ev, + eventType: Hammer.INPUT_MOVE, + isFinal: false, + }); + } + } + } + + updateGestureConfig({ + shouldActivateOnStart = false, + disallowInterruption = false, + shouldCancelWhenOutside = true, + minDurationMs = Number.NaN, + maxDist = Number.NaN, + minPointers = 1, + maxPointers = 1, + ...props + }) { + return super.updateGestureConfig({ + shouldActivateOnStart, + disallowInterruption, + shouldCancelWhenOutside, + minDurationMs, + maxDist, + minPointers, + maxPointers, + ...props, + }); + } +} +export default PressGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/RotationGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/RotationGestureHandler.ts new file mode 100644 index 00000000..c1404366 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/RotationGestureHandler.ts @@ -0,0 +1,25 @@ +import Hammer from '@egjs/hammerjs'; + +import { DEG_RAD } from './constants'; +import { HammerInputExt } from './GestureHandler'; +import IndiscreteGestureHandler from './IndiscreteGestureHandler'; + +class RotationGestureHandler extends IndiscreteGestureHandler { + get name() { + return 'rotate'; + } + + get NativeGestureClass() { + return Hammer.Rotate; + } + + transformNativeEvent({ rotation, velocity, center }: HammerInputExt) { + return { + rotation: (rotation - (this.initialRotation ?? 0)) * DEG_RAD, + anchorX: center.x, + anchorY: center.y, + velocity, + }; + } +} +export default RotationGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/TapGestureHandler.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/TapGestureHandler.ts new file mode 100644 index 00000000..312049c9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/TapGestureHandler.ts @@ -0,0 +1,172 @@ +import Hammer from '@egjs/hammerjs'; + +import DiscreteGestureHandler from './DiscreteGestureHandler'; +import { HammerInputExt } from './GestureHandler'; +import { isnan } from './utils'; + +class TapGestureHandler extends DiscreteGestureHandler { + private _shouldFireEndEvent: HammerInputExt | null = null; + private _timer: any; + private _multiTapTimer: any; // TODO unused? + get name() { + return 'tap'; + } + + get NativeGestureClass() { + return Hammer.Tap; + } + + get maxDelayMs() { + // @ts-ignore TODO(TS) trace down config + return isnan(this.config.maxDelayMs) ? 300 : this.config.maxDelayMs; + } + + simulateCancelEvent(inputData: HammerInputExt) { + if (this.isGestureRunning) { + this.cancelEvent(inputData); + } + } + + onGestureActivated(ev: HammerInputExt) { + if (this.isGestureRunning) { + this.onSuccessfulTap(ev); + } + } + + onSuccessfulTap = (ev: HammerInputExt) => { + if (this._getPendingGestures().length) { + this._shouldFireEndEvent = ev; + return; + } + if (ev.eventType === Hammer.INPUT_END) { + this.sendEvent({ ...ev, eventType: Hammer.INPUT_MOVE }); + } + // When handler gets activated it will turn into State.END immediately. + this.sendEvent({ ...ev, isFinal: true }); + this.onGestureEnded(ev); + }; + + onRawEvent(ev: HammerInput) { + super.onRawEvent(ev); + + // Attempt to create a touch-down event by checking if a valid tap hasn't started yet, then validating the input. + if ( + !this.hasGestureFailed && + !this.isGestureRunning && + // Prevent multi-pointer events from misfiring. + !ev.isFinal + ) { + // Tap Gesture start event + const gesture = this.hammer!.get(this.name); + // @ts-ignore TODO(TS) trace down config + if (gesture.options.enable(gesture, ev)) { + clearTimeout(this._multiTapTimer); + + this.onStart(ev); + this.sendEvent(ev); + } + } + if (ev.isFinal && ev.maxPointers > 1) { + setTimeout(() => { + // Handle case where one finger presses slightly + // after the first finger on a multi-tap event + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } + + if (this.hasGestureFailed) { + return; + } + // Hammer doesn't send a `cancel` event for taps. + // Manually fail the event. + if (ev.isFinal) { + // Handle case where one finger presses slightly + // after the first finger on a multi-tap event + if (ev.maxPointers > 1) { + setTimeout(() => { + if (this.isGestureRunning) { + this.cancelEvent(ev); + } + }); + } + + // Clear last timer + clearTimeout(this._timer); + // Create time out for multi-taps. + this._timer = setTimeout(() => { + this.hasGestureFailed = true; + this.cancelEvent(ev); + }, this.maxDelayMs); + } else if (!this.hasGestureFailed && !this.isGestureRunning) { + // Tap Gesture start event + const gesture = this.hammer!.get(this.name); + // @ts-ignore TODO(TS) trace down config + if (gesture.options.enable(gesture, ev)) { + clearTimeout(this._multiTapTimer); + + this.onStart(ev); + this.sendEvent(ev); + } + } + } + + getHammerConfig() { + return { + ...super.getHammerConfig(), + event: this.name, + // @ts-ignore TODO(TS) trace down config + taps: isnan(this.config.numberOfTaps) ? 1 : this.config.numberOfTaps, + interval: this.maxDelayMs, + time: + // @ts-ignore TODO(TS) trace down config + isnan(this.config.maxDurationMs) || this.config.maxDurationMs == null + ? 250 + : // @ts-ignore TODO(TS) trace down config + this.config.maxDurationMs, + }; + } + + updateGestureConfig({ + shouldCancelWhenOutside = true, + maxDeltaX = Number.NaN, + maxDeltaY = Number.NaN, + numberOfTaps = 1, + minDurationMs = 525, + maxDelayMs = Number.NaN, + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO possibly forgotten to use in updateGestureConfig? + maxDurationMs = Number.NaN, + maxDist = 2, + minPointers = 1, + maxPointers = 1, + ...props + }) { + return super.updateGestureConfig({ + shouldCancelWhenOutside, + numberOfTaps, + maxDeltaX, + maxDeltaY, + minDurationMs, + maxDelayMs, + maxDist, + minPointers, + maxPointers, + ...props, + }); + } + + onGestureEnded(...props: any) { + clearTimeout(this._timer); + // @ts-ignore TODO(TS) check how onGestureEnded works + super.onGestureEnded(...props); + } + + onWaitingEnded(_gesture: any) { + if (this._shouldFireEndEvent) { + this.onSuccessfulTap(this._shouldFireEndEvent); + this._shouldFireEndEvent = null; + } + } +} +export default TapGestureHandler; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/constants.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/constants.ts new file mode 100644 index 00000000..71b792b7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/constants.ts @@ -0,0 +1,48 @@ +import Hammer from '@egjs/hammerjs'; + +import { State } from '../State'; + +export const CONTENT_TOUCHES_DELAY = 240; +export const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50; +export const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1; +export const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7; +export const DEG_RAD = Math.PI / 180; + +// Map Hammer values to RNGH +export const EventMap = { + [Hammer.INPUT_START]: State.BEGAN, + [Hammer.INPUT_MOVE]: State.ACTIVE, + [Hammer.INPUT_END]: State.END, + [Hammer.INPUT_CANCEL]: State.FAILED, +} as const; + +export const Direction = { + RIGHT: 1, + LEFT: 2, + UP: 4, + DOWN: 8, +}; + +export const DirectionMap = { + [Hammer.DIRECTION_RIGHT]: Direction.RIGHT, + [Hammer.DIRECTION_LEFT]: Direction.LEFT, + [Hammer.DIRECTION_UP]: Direction.UP, + [Hammer.DIRECTION_DOWN]: Direction.DOWN, +}; + +export const HammerInputNames = { + [Hammer.INPUT_START]: 'START', + [Hammer.INPUT_MOVE]: 'MOVE', + [Hammer.INPUT_END]: 'END', + [Hammer.INPUT_CANCEL]: 'CANCEL', +}; +export const HammerDirectionNames = { + [Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL', + [Hammer.DIRECTION_UP]: 'UP', + [Hammer.DIRECTION_DOWN]: 'DOWN', + [Hammer.DIRECTION_VERTICAL]: 'VERTICAL', + [Hammer.DIRECTION_NONE]: 'NONE', + [Hammer.DIRECTION_ALL]: 'ALL', + [Hammer.DIRECTION_RIGHT]: 'RIGHT', + [Hammer.DIRECTION_LEFT]: 'LEFT', +}; diff --git a/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/utils.ts b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/utils.ts new file mode 100644 index 00000000..8886395d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-gesture-handler/src/web_hammer/utils.ts @@ -0,0 +1,24 @@ +// TODO(TS) remove if not necessary after rewrite +export const isnan = (v: unknown) => Number.isNaN(v); + +// TODO(TS) remove if not necessary after rewrite +export const isValidNumber = (v: unknown) => + typeof v === 'number' && !Number.isNaN(v); + +export const TEST_MIN_IF_NOT_NAN = (value: number, limit: number): boolean => + !isnan(limit) && + ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit)); +export const VEC_LEN_SQ = ({ x = 0, y = 0 } = {}) => x * x + y * y; +export const TEST_MAX_IF_NOT_NAN = (value: number, max: number) => + !isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max)); + +export function fireAfterInterval( + method: () => void, + interval?: number | boolean +) { + if (!interval) { + method(); + return null; + } + return setTimeout(() => method(), interval as number); +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/LICENSE b/iut-expo-starter/node_modules/react-native-safe-area-context/LICENSE new file mode 100644 index 00000000..341ed615 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Th3rd Wave + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/README.md b/iut-expo-starter/node_modules/react-native-safe-area-context/README.md new file mode 100644 index 00000000..ff4a78ff --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/README.md @@ -0,0 +1,296 @@ +# react-native-safe-area-context + +[![npm](https://img.shields.io/npm/v/react-native-safe-area-context)](https://www.npmjs.com/package/react-native-safe-area-context) ![Supports Android, iOS, web, macOS and Windows](https://img.shields.io/badge/platforms-android%20%7C%20ios%20%7C%20web%20%7C%20macos%20%7C%20windows-lightgrey.svg) ![MIT License](https://img.shields.io/npm/l/react-native-safe-area-context.svg) + +[![JavaScript tests](https://github.com/th3rdwave/react-native-safe-area-context/workflows/JavaScript%20tests/badge.svg)](https://github.com/th3rdwave/react-native-safe-area-context/actions?query=workflow%3AJavaScript%20tests) [![iOS build](https://github.com/th3rdwave/react-native-safe-area-context/workflows/iOS%20build/badge.svg)](https://github.com/th3rdwave/react-native-safe-area-context/actions?query=workflow%3AiOS%20build) [![Android build](https://github.com/th3rdwave/react-native-safe-area-context/workflows/Android%20build/badge.svg)](https://github.com/th3rdwave/react-native-safe-area-context/actions?query=workflow%3AAndroid%20build) + +A flexible way to handle safe area, also works on Android and Web! + +## Getting started + +``` +npm install react-native-safe-area-context +``` + +You then need to link the native parts of the library for the platforms you are using. + +- **iOS Platform:** + + `$ npx pod-install` + +## Supported react-native version + +| version | react-native version | +| ------- | -------------------- | +| 4.0.0+ | 0.64.0+ | + +## New architecture support + +This library currently has experimental support for the new react-native architecture. Note that there will be breaking changes and only the latest version of react-native will be supported. + +## Usage + +This library has 2 important concepts, if you are familiar with React Context this is very similar. + +### Providers + +The [SafeAreaProvider](#safeareaprovider) component is a `View` from where insets provided by [Consumers](#consumers) are relative to. This means that if this view overlaps with any system elements (status bar, notches, etc.) these values will be provided to descendent consumers. Usually you will have one provider at the top of your app. + +### Consumers + +Consumers are components and hooks that allow using inset values provided by the nearest parent [Provider](#providers). Values are always relative to a provider and not to these components. + +- [SafeAreaView](#safeareaview) is the preferred way to consume insets. This is a regular `View` with insets applied as extra padding or margin. It offers better performance by applying insets natively and avoids flickers that can happen with the other JS based consumers. + +- [useSafeAreaInsets](#usesafeareainsets) offers more flexibility, but can cause some layout flicker in certain cases. Use this if you need more control over how insets are applied. + +## API + +### SafeAreaProvider + +You should add `SafeAreaProvider` in your app root component. You may need to add it in other places like the root of modals and routes when using [`react-native-screens`](https://github.com/software-mansion/react-native-screens). + +Note that providers should not be inside a `View` that is animated with `Animated` or inside a `ScrollView` since it can cause very frequent updates. + +#### Example + +```js +import { SafeAreaProvider } from 'react-native-safe-area-context'; + +function App() { + return ...; +} +``` + +#### Props + +Accepts all [View](https://reactnative.dev/docs/view#props) props. Has a default style of `{flex: 1}`. + +##### `initialMetrics` + +Optional, defaults to `null`. + +Can be used to provide the initial value for frame and insets, this allows rendering immediatly. See [optimization](#optimization) for more information on how to use this prop. + +### SafeAreaView + +`SafeAreaView` is a regular `View` component with the safe area insets applied as padding or margin. + +Padding or margin styles are added to the insets, for example `style={{paddingTop: 10}}` on a `SafeAreaView` that has insets of 20 will result in a top padding of 30. + +#### Example + +```js +import { SafeAreaView } from 'react-native-safe-area-context'; + +function SomeComponent() { + return ( + + + + ); +} +``` + +#### Props + +Accepts all [View](https://reactnative.dev/docs/view#props) props. + +##### `edges` + +Optional, array of `top`, `right`, `bottom`, and `left`. Defaults to all. + +Sets the edges to apply the safe area insets to. + +For example if you don't want insets to apply to the top edge because the view does not touch the top of the screen you can use: + +```js + +``` + +##### `mode` + +Optional, `padding` (default) or `margin`. + +Apply the safe area to either the padding or the margin. + +This can be useful for example to create a safe area aware separator component: + +```js + +``` + +### useSafeAreaInsets + +Returns the safe area insets of the nearest provider. This allows manipulating the inset values from JavaScript. Note that insets are not updated synchronously so it might cause a slight delay for example when rotating the screen. + +Object with `{ top: number, right: number, bottom: number, left: number }`. + +```js +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + +function HookComponent() { + const insets = useSafeAreaInsets(); + + return ; +} +``` + +### useSafeAreaFrame + +Returns the frame of the nearest provider. This can be used as an alternative to the `Dimensions` module. + +Object with `{ x: number, y: number, width: number, height: number }` + +### `SafeAreaInsetsContext` + +React Context with the value of the safe area insets. + +Can be used with class components: + +```js +import { SafeAreaInsetsContext } from 'react-native-safe-area-context'; + +class ClassComponent extends React.Component { + render() { + return ( + + {(insets) => } + + ); + } +} +``` + +### `withSafeAreaInsets` + +Higher order component that provides safe area insets as the `insets` prop. + +```ts +type Props = WithSafeAreaInsetsProps & { + someProp: number; +}; + +class ClassComponent extends React.Component { + render() { + return ; + } +} + +const ClassComponentWithInsets = withSafeAreaInsets(ClassComponent); + +; +``` + +### `SafeAreaFrameContext` + +React Context with the value of the safe area frame. + +### `initialWindowMetrics` + +Insets and frame of the window on initial render. This can be used with the `initialMetrics` from `SafeAreaProvider`. See [optimization](#optimization) for more information. + +Object with: + +```ts +{ + frame: { x: number, y: number, width: number, height: number }, + insets: { top: number, left: number, right: number, bottom: number }, +} +``` + +**NOTE:** This value can be null or out of date as it is computed when the native module is created. + +## Deprecated apis + +### useSafeArea + +Use `useSafeAreaInsets` instead. + +### SafeAreaConsumer + +Use `SafeAreaInsetsContext.Consumer` instead. + +### SafeAreaContext + +Use `SafeAreaInsetsContext` instead. + +### initialWindowSafeAreaInsets + +Use `initialWindowMetrics` instead. + +## Web SSR + +If you are doing server side rendering on the web you can use `initialMetrics` to inject insets and frame value based on the device the user has, or simply pass zero values. Since insets measurement is async it will break rendering your page content otherwise. + +## Optimization + +If you can, use `SafeAreaView`. It's implemented natively so when rotating the device, there is no delay from the asynchronous bridge. + +To speed up the initial render, you can import `initialWindowMetrics` from this package and set as the `initialMetrics` prop on the provider as described in Web SSR. You cannot do this if your provider remounts, or you are using `react-native-navigation`. + +```js +import { + SafeAreaProvider, + initialWindowMetrics, +} from 'react-native-safe-area-context'; + +function App() { + return ( + + ... + + ); +} +``` + +## Testing + +This library includes a built in mock for Jest. It will use the following metrics by default: + +```js +{ + frame: { + width: 320, + height: 640, + x: 0, + y: 0, + }, + insets: { + left: 0, + right: 0, + bottom: 0, + top: 0, + }, +} +``` + +To use it, add the following code to the jest setup file: + +```js +import mockSafeAreaContext from 'react-native-safe-area-context/jest/mock'; + +jest.mock('react-native-safe-area-context', () => mockSafeAreaContext); +``` + +To have more control over the test values it is also possible to pass `initialMetrics` to +`SafeAreaProvider` to provide mock data for frame and insets. + +```js +export function TestSafeAreaProvider({ children }) { + return ( + + {children} + + ); +} +``` + +## Contributing + +See the [Contributing Guide](CONTRIBUTING.md) diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/build.gradle b/iut-expo-starter/node_modules/react-native-safe-area-context/android/build.gradle new file mode 100644 index 00000000..bfdc938a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/build.gradle @@ -0,0 +1,104 @@ +import java.nio.file.Paths + +buildscript { + def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['RNSAC_kotlinVersion'] + + repositories { + mavenCentral() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + } +} + +def getExtOrDefault(name, defaultValue) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : defaultValue +} + +def isNewArchitectureEnabled() { + // To opt-in for the New Architecture, you can either: + // - Set `newArchEnabled` to true inside the `gradle.properties` file + // - Invoke gradle with `-newArchEnabled=true` + // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" +} + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +if (isNewArchitectureEnabled()) { + apply plugin: "com.facebook.react" +} + +android { + compileSdkVersion getExtOrDefault('compileSdkVersion', 30) + + // Used to override the NDK path/version on internal CI or by allowing + // users to customize the NDK path/version from their root project (e.g. for M1 support) + if (rootProject.hasProperty("ndkPath")) { + ndkPath rootProject.ext.ndkPath + } + if (rootProject.hasProperty("ndkVersion")) { + ndkVersion rootProject.ext.ndkVersion + } + + defaultConfig { + minSdkVersion getExtOrDefault('minSdkVersion', 16) + targetSdkVersion getExtOrDefault('targetSdkVersion', 28) + versionCode 1 + versionName "1.0" + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() + + ndk { + abiFilters (*reactNativeArchitectures()) + } + } + + lintOptions{ + abortOnError false + } + + packagingOptions { + // For some reason gradle only complains about the duplicated version of libreact_render libraries + // while there are more libraries copied in intermediates folder of the lib build directory, we exlude + // only the ones that make the build fail (ideally we should only include libsafeareacontext_modules but we + // are only allowed to specify exlude patterns) + exclude "**/libreact_render*.so" + } + sourceSets.main { + java { + if (isNewArchitectureEnabled()) { + srcDirs += [ + "src/fabric/java", + "${project.buildDir}/generated/source/codegen/java" + ] + } else { + srcDirs += [ + "src/paper/java" + ] + } + } + } +} + +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] + } + +repositories { + google() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + mavenCentral() +} + +def kotlin_version = getExtOrDefault('kotlinVersion', project.properties['RNSAC_kotlinVersion']) + +dependencies { + implementation 'com.facebook.react:react-native:+' + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/gradle.properties b/iut-expo-starter/node_modules/react-native-safe-area-context/android/gradle.properties new file mode 100644 index 00000000..ce9ec699 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/gradle.properties @@ -0,0 +1 @@ +RNSAC_kotlinVersion=1.6.20 diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt new file mode 100644 index 00000000..b60ba5b2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt @@ -0,0 +1,25 @@ +package com.th3rdwave.safeareacontext + +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.WritableMap +import com.facebook.react.uimanager.events.Event + +internal class InsetsChangeEvent( + surfaceId: Int, + viewTag: Int, + private val mInsets: EdgeInsets, + private val mFrame: Rect +) : Event(surfaceId, viewTag) { + override fun getEventName() = EVENT_NAME + + override fun getEventData(): WritableMap? { + val event = Arguments.createMap() + event.putMap("insets", edgeInsetsToJsMap(mInsets)) + event.putMap("frame", rectToJsMap(mFrame)) + return event + } + + companion object { + const val EVENT_NAME = "topInsetsChange" + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt new file mode 100644 index 00000000..c31a4c41 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/fabric/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt @@ -0,0 +1,14 @@ +package com.th3rdwave.safeareacontext + +import android.content.Context +import android.view.View +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.UIManagerHelper + +fun getReactContext(view: View): ReactContext { + return UIManagerHelper.getReactContext(view) +} + +fun getSurfaceId(context: Context): Int { + return UIManagerHelper.getSurfaceId(context) +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/AndroidManifest.xml b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..479a914d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/EdgeInsets.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/EdgeInsets.kt new file mode 100644 index 00000000..e71af8fa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/EdgeInsets.kt @@ -0,0 +1,3 @@ +package com.th3rdwave.safeareacontext + +data class EdgeInsets(val top: Float, val right: Float, val bottom: Float, val left: Float) diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/Rect.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/Rect.kt new file mode 100644 index 00000000..3db4c9b7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/Rect.kt @@ -0,0 +1,3 @@ +package com.th3rdwave.safeareacontext + +data class Rect(val x: Float, val y: Float, val width: Float, val height: Float) diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextModule.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextModule.kt new file mode 100644 index 00000000..8261d394 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextModule.kt @@ -0,0 +1,33 @@ +package com.th3rdwave.safeareacontext + +import android.view.View +import android.view.ViewGroup +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.common.MapBuilder +import com.facebook.react.module.annotations.ReactModule + +@ReactModule(name = SafeAreaContextModule.NAME) +class SafeAreaContextModule(reactContext: ReactApplicationContext?) : + NativeSafeAreaContextSpec(reactContext) { + override fun getName(): String { + return NAME + } + + public override fun getTypedExportedConstants(): Map { + return MapBuilder.of("initialWindowMetrics", getInitialWindowMetrics()) + } + + private fun getInitialWindowMetrics(): Map? { + val decorView = reactApplicationContext.currentActivity?.window?.decorView as ViewGroup? + val contentView = decorView?.findViewById(android.R.id.content) ?: return null + val insets = getSafeAreaInsets(decorView) + val frame = getFrame(decorView, contentView) + return if (insets == null || frame == null) { + null + } else mapOf("insets" to edgeInsetsToJavaMap(insets), "frame" to rectToJavaMap(frame)) + } + + companion object { + const val NAME = "RNCSafeAreaContext" + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt new file mode 100644 index 00000000..0265d787 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt @@ -0,0 +1,43 @@ +package com.th3rdwave.safeareacontext + +import com.facebook.react.TurboReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.module.model.ReactModuleInfo +import com.facebook.react.module.model.ReactModuleInfoProvider +import com.facebook.react.turbomodule.core.interfaces.TurboModule +import com.facebook.react.uimanager.ViewManager + +// Fool autolinking for older versions that do not support TurboReactPackage. +// public class SafeAreaContextPackage implements ReactPackage { +class SafeAreaContextPackage : TurboReactPackage() { + override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? { + return when (name) { + SafeAreaContextModule.NAME -> SafeAreaContextModule(reactContext) + else -> null + } + } + + override fun getReactModuleInfoProvider(): ReactModuleInfoProvider { + val moduleList: Array> = arrayOf(SafeAreaContextModule::class.java) + val reactModuleInfoMap: MutableMap = HashMap() + for (moduleClass in moduleList) { + val reactModule = moduleClass.getAnnotation(ReactModule::class.java) ?: continue + reactModuleInfoMap[reactModule.name] = + ReactModuleInfo( + reactModule.name, + moduleClass.name, + true, + reactModule.needsEagerInit, + reactModule.hasConstants, + reactModule.isCxxModule, + TurboModule::class.java.isAssignableFrom(moduleClass)) + } + return ReactModuleInfoProvider { reactModuleInfoMap } + } + + override fun createViewManagers(reactContext: ReactApplicationContext): List> { + return listOf>(SafeAreaProviderManager(), SafeAreaViewManager()) + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProvider.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProvider.kt new file mode 100644 index 00000000..eec0626f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProvider.kt @@ -0,0 +1,47 @@ +package com.th3rdwave.safeareacontext + +import android.content.Context +import android.view.ViewGroup +import android.view.ViewTreeObserver +import com.facebook.react.views.view.ReactViewGroup + +typealias OnInsetsChangeHandler = (view: SafeAreaProvider, insets: EdgeInsets, frame: Rect) -> Unit + +class SafeAreaProvider(context: Context?) : + ReactViewGroup(context), ViewTreeObserver.OnPreDrawListener { + private var mInsetsChangeHandler: OnInsetsChangeHandler? = null + private var mLastInsets: EdgeInsets? = null + private var mLastFrame: Rect? = null + + private fun maybeUpdateInsets() { + val insetsChangeHandler = mInsetsChangeHandler ?: return + val edgeInsets = getSafeAreaInsets(this) ?: return + val frame = getFrame(rootView as ViewGroup, this) ?: return + if (mLastInsets != edgeInsets || mLastFrame != frame) { + insetsChangeHandler(this, edgeInsets, frame) + mLastInsets = edgeInsets + mLastFrame = frame + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + viewTreeObserver.addOnPreDrawListener(this) + maybeUpdateInsets() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + viewTreeObserver.removeOnPreDrawListener(this) + } + + override fun onPreDraw(): Boolean { + maybeUpdateInsets() + return true + } + + fun setOnInsetsChangeHandler(handler: OnInsetsChangeHandler?) { + mInsetsChangeHandler = handler + maybeUpdateInsets() + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt new file mode 100644 index 00000000..de6f6854 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt @@ -0,0 +1,41 @@ +package com.th3rdwave.safeareacontext + +import com.facebook.react.bridge.ReactContext +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.UIManagerHelper +import com.facebook.react.uimanager.ViewGroupManager +import com.facebook.react.viewmanagers.RNCSafeAreaProviderManagerDelegate +import com.facebook.react.viewmanagers.RNCSafeAreaProviderManagerInterface + +@ReactModule(name = SafeAreaProviderManager.REACT_CLASS) +class SafeAreaProviderManager : + ViewGroupManager(), RNCSafeAreaProviderManagerInterface { + private val mDelegate = RNCSafeAreaProviderManagerDelegate(this) + + override fun getDelegate() = mDelegate + + override fun getName() = REACT_CLASS + + public override fun createViewInstance(context: ThemedReactContext) = SafeAreaProvider(context) + + override fun getExportedCustomDirectEventTypeConstants() = + mutableMapOf( + InsetsChangeEvent.EVENT_NAME to mutableMapOf("registrationName" to "onInsetsChange")) + + override fun addEventEmitters(reactContext: ThemedReactContext, view: SafeAreaProvider) { + super.addEventEmitters(reactContext, view) + view.setOnInsetsChangeHandler(::handleOnInsetsChange) + } + + companion object { + const val REACT_CLASS = "RNCSafeAreaProvider" + } +} + +private fun handleOnInsetsChange(view: SafeAreaProvider, insets: EdgeInsets, frame: Rect) { + val reactContext = view.context as ReactContext + val reactTag = view.id + UIManagerHelper.getEventDispatcherForReactTag(reactContext, reactTag) + ?.dispatchEvent(InsetsChangeEvent(getSurfaceId(reactContext), reactTag, insets, frame)) +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt new file mode 100644 index 00000000..0203be6e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt @@ -0,0 +1,101 @@ +package com.th3rdwave.safeareacontext + +import android.os.Build +import android.view.View +import android.view.ViewGroup +import android.view.WindowInsets +import androidx.annotation.RequiresApi +import java.lang.IllegalArgumentException +import kotlin.math.max +import kotlin.math.min + +@RequiresApi(Build.VERSION_CODES.R) +private fun getRootWindowInsetsCompatR(rootView: View): EdgeInsets? { + val insets = + rootView.rootWindowInsets?.getInsets( + WindowInsets.Type.statusBars() or + WindowInsets.Type.displayCutout() or + WindowInsets.Type.navigationBars()) + ?: return null + return EdgeInsets( + top = insets.top.toFloat(), + right = insets.right.toFloat(), + bottom = insets.bottom.toFloat(), + left = insets.left.toFloat()) +} + +@RequiresApi(Build.VERSION_CODES.M) +@Suppress("DEPRECATION") +private fun getRootWindowInsetsCompatM(rootView: View): EdgeInsets? { + val insets = rootView.rootWindowInsets ?: return null + return EdgeInsets( + top = insets.systemWindowInsetTop.toFloat(), + right = insets.systemWindowInsetRight.toFloat(), + // System insets are more reliable to account for notches but the + // system inset for bottom includes the soft keyboard which we don't + // want to be consistent with iOS. Using the min value makes sure we + // never get the keyboard offset while still working with devices that + // hide the navigation bar. + bottom = min(insets.systemWindowInsetBottom, insets.stableInsetBottom).toFloat(), + left = insets.systemWindowInsetLeft.toFloat()) +} + +private fun getRootWindowInsetsCompatBase(rootView: View): EdgeInsets? { + val visibleRect = android.graphics.Rect() + rootView.getWindowVisibleDisplayFrame(visibleRect) + return EdgeInsets( + top = visibleRect.top.toFloat(), + right = (rootView.width - visibleRect.right).toFloat(), + bottom = (rootView.height - visibleRect.bottom).toFloat(), + left = visibleRect.left.toFloat()) +} + +private fun getRootWindowInsetsCompat(rootView: View): EdgeInsets? { + return when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> getRootWindowInsetsCompatR(rootView) + Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> getRootWindowInsetsCompatM(rootView) + else -> getRootWindowInsetsCompatBase(rootView) + } +} + +fun getSafeAreaInsets(view: View): EdgeInsets? { + // The view has not been layout yet. + if (view.height == 0) { + return null + } + val rootView = view.rootView + val windowInsets = getRootWindowInsetsCompat(rootView) ?: return null + + // Calculate the part of the view that overlaps with window insets. + val windowWidth = rootView.width.toFloat() + val windowHeight = rootView.height.toFloat() + val visibleRect = android.graphics.Rect() + view.getGlobalVisibleRect(visibleRect) + return EdgeInsets( + top = max(windowInsets.top - visibleRect.top, 0f), + right = max(min(visibleRect.left + view.width - windowWidth, 0f) + windowInsets.right, 0f), + bottom = max(min(visibleRect.top + view.height - windowHeight, 0f) + windowInsets.bottom, 0f), + left = max(windowInsets.left - visibleRect.left, 0f)) +} + +fun getFrame(rootView: ViewGroup, view: View): Rect? { + // This can happen while the view gets unmounted. + if (view.parent == null) { + return null + } + val offset = android.graphics.Rect() + view.getDrawingRect(offset) + try { + rootView.offsetDescendantRectToMyCoords(view, offset) + } catch (ex: IllegalArgumentException) { + // This can throw if the view is not a descendant of rootView. This should not + // happen but avoid potential crashes. + ex.printStackTrace() + return null + } + return Rect( + x = offset.left.toFloat(), + y = offset.top.toFloat(), + width = view.width.toFloat(), + height = view.height.toFloat()) +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt new file mode 100644 index 00000000..2d29dbd5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt @@ -0,0 +1,146 @@ +package com.th3rdwave.safeareacontext + +import android.content.Context +import android.util.Log +import android.view.View +import android.view.ViewTreeObserver +import com.facebook.react.bridge.Arguments +import com.facebook.react.uimanager.FabricViewStateManager +import com.facebook.react.uimanager.FabricViewStateManager.HasFabricViewStateManager +import com.facebook.react.uimanager.UIManagerModule +import com.facebook.react.views.view.ReactViewGroup +import java.util.* +import java.util.concurrent.locks.ReentrantLock +import kotlin.concurrent.withLock + +private const val MAX_WAIT_TIME_NANO = 500000000L // 500ms + +class SafeAreaView(context: Context?) : + ReactViewGroup(context), ViewTreeObserver.OnPreDrawListener, HasFabricViewStateManager { + private var mMode = SafeAreaViewMode.PADDING + private var mInsets: EdgeInsets? = null + private var mEdges: EnumSet? = null + private var mProviderView: View? = null + private val mFabricViewStateManager = FabricViewStateManager() + + override fun getFabricViewStateManager(): FabricViewStateManager { + return mFabricViewStateManager + } + + private fun updateInsets() { + val insets = mInsets + if (insets != null) { + val edges = mEdges ?: EnumSet.allOf(SafeAreaViewEdges::class.java) + if (mFabricViewStateManager.hasStateWrapper()) { + mFabricViewStateManager.setState { + val map = Arguments.createMap() + map.putMap("insets", edgeInsetsToJsMap(insets)) + map + } + } else { + val localData = SafeAreaViewLocalData(insets = insets, mode = mMode, edges = edges) + val reactContext = getReactContext(this) + val uiManager = reactContext.getNativeModule(UIManagerModule::class.java) + if (uiManager != null) { + uiManager.setViewLocalData(id, localData) + // Sadly there doesn't seem to be a way to properly dirty a yoga node from java, so if we are in + // the middle of a layout, we need to recompute it. There is also no way to know whether we + // are in the middle of a layout so always do it. + reactContext.runOnNativeModulesQueueThread { + uiManager.uiImplementation.dispatchViewUpdates(-1) + } + waitForReactLayout() + } + } + } + } + + private fun waitForReactLayout() { + // Block the main thread until the native module thread is finished with + // its current tasks. To do this we use the done boolean as a lock and enqueue + // a task on the native modules thread. When the task runs we can unblock the + // main thread. This should be safe as long as the native modules thread + // does not block waiting on the main thread. + var done = false + val lock = ReentrantLock() + val condition = lock.newCondition() + val startTime = System.nanoTime() + var waitTime = 0L + getReactContext(this).runOnNativeModulesQueueThread { + lock.withLock { + if (!done) { + done = true + condition.signal() + } + } + } + lock.withLock { + while (!done && waitTime < MAX_WAIT_TIME_NANO) { + try { + condition.awaitNanos(MAX_WAIT_TIME_NANO) + } catch (ex: InterruptedException) { + // In case of an interrupt just give up waiting. + done = true + } + waitTime += System.nanoTime() - startTime + } + } + // Timed out waiting. + if (waitTime >= MAX_WAIT_TIME_NANO) { + Log.w("SafeAreaView", "Timed out waiting for layout.") + } + } + + fun setMode(mode: SafeAreaViewMode) { + mMode = mode + updateInsets() + } + + fun setEdges(edges: EnumSet?) { + mEdges = edges + updateInsets() + } + + private fun maybeUpdateInsets(): Boolean { + val providerView = mProviderView ?: return false + val edgeInsets = getSafeAreaInsets(providerView) ?: return false + if (mInsets != edgeInsets) { + mInsets = edgeInsets + updateInsets() + return true + } + return false + } + + private fun findProvider(): View { + var current = parent + while (current != null) { + if (current is SafeAreaProvider) { + return current + } + current = current.parent + } + return this + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + mProviderView = findProvider() + mProviderView?.viewTreeObserver?.addOnPreDrawListener(this) + maybeUpdateInsets() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + mProviderView?.viewTreeObserver?.removeOnPreDrawListener(this) + mProviderView = null + } + + override fun onPreDraw(): Boolean { + val didUpdate = maybeUpdateInsets() + if (didUpdate) { + requestLayout() + } + return !didUpdate + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt new file mode 100644 index 00000000..c41a1db7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt @@ -0,0 +1,8 @@ +package com.th3rdwave.safeareacontext + +enum class SafeAreaViewEdges { + TOP, + RIGHT, + BOTTOM, + LEFT +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt new file mode 100644 index 00000000..c29a394d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt @@ -0,0 +1,9 @@ +package com.th3rdwave.safeareacontext + +import java.util.* + +data class SafeAreaViewLocalData( + val insets: EdgeInsets, + val mode: SafeAreaViewMode, + val edges: EnumSet +) diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt new file mode 100644 index 00000000..cc62a623 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt @@ -0,0 +1,77 @@ +package com.th3rdwave.safeareacontext + +import com.facebook.react.bridge.ReadableArray +import com.facebook.react.module.annotations.ReactModule +import com.facebook.react.uimanager.ReactStylesDiffMap +import com.facebook.react.uimanager.StateWrapper +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.ViewManagerDelegate +import com.facebook.react.uimanager.annotations.ReactProp +import com.facebook.react.viewmanagers.RNCSafeAreaViewManagerInterface +import com.facebook.react.views.view.ReactViewGroup +import com.facebook.react.views.view.ReactViewManager +import java.util.* + +@ReactModule(name = SafeAreaViewManager.REACT_CLASS) +class SafeAreaViewManager : ReactViewManager(), RNCSafeAreaViewManagerInterface { + override fun getName() = REACT_CLASS + + // Make sure we're not using delegates for now since ReactViewGroupManager doesn't use one. If it + // does in the future we will need a way to compose delegates together. + override fun getDelegate(): ViewManagerDelegate? = null + + override fun createViewInstance(context: ThemedReactContext) = SafeAreaView(context) + + override fun createShadowNodeInstance() = SafeAreaViewShadowNode() + + override fun getShadowNodeClass() = SafeAreaViewShadowNode::class.java + + @ReactProp(name = "mode") + override fun setMode(view: SafeAreaView, mode: String?) { + when (mode) { + "padding" -> { + view.setMode(SafeAreaViewMode.PADDING) + } + "margin" -> { + view.setMode(SafeAreaViewMode.MARGIN) + } + } + } + + @ReactProp(name = "edges") + override fun setEdges(view: SafeAreaView, propList: ReadableArray?) { + val edges = EnumSet.noneOf(SafeAreaViewEdges::class.java) + if (propList != null) { + for (i in 0 until propList.size()) { + when (propList.getString(i)) { + "top" -> { + edges.add(SafeAreaViewEdges.TOP) + } + "right" -> { + edges.add(SafeAreaViewEdges.RIGHT) + } + "bottom" -> { + edges.add(SafeAreaViewEdges.BOTTOM) + } + "left" -> { + edges.add(SafeAreaViewEdges.LEFT) + } + } + } + view.setEdges(edges) + } + } + + override fun updateState( + view: ReactViewGroup, + props: ReactStylesDiffMap?, + stateWrapper: StateWrapper? + ): Any? { + (view as SafeAreaView).fabricViewStateManager.setStateWrapper(stateWrapper) + return null + } + + companion object { + const val REACT_CLASS = "RNCSafeAreaView" + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt new file mode 100644 index 00000000..9af9a712 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt @@ -0,0 +1,6 @@ +package com.th3rdwave.safeareacontext + +enum class SafeAreaViewMode { + PADDING, + MARGIN +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt new file mode 100644 index 00000000..9575e0d9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt @@ -0,0 +1,160 @@ +package com.th3rdwave.safeareacontext + +import com.facebook.react.bridge.Dynamic +import com.facebook.react.bridge.ReadableType +import com.facebook.react.uimanager.* +import com.facebook.react.uimanager.annotations.ReactPropGroup +import com.facebook.yoga.YogaNode + +class SafeAreaViewShadowNode : LayoutShadowNode() { + private var mLocalData: SafeAreaViewLocalData? = null + private val mPaddings: FloatArray = FloatArray(ViewProps.PADDING_MARGIN_SPACING_TYPES.size) + private val mMargins: FloatArray = FloatArray(ViewProps.PADDING_MARGIN_SPACING_TYPES.size) + private var mNeedsUpdate = false + + init { + for (i in ViewProps.PADDING_MARGIN_SPACING_TYPES.indices) { + mPaddings[i] = Float.NaN + mMargins[i] = Float.NaN + } + } + + private fun updateInsets() { + val localData = mLocalData ?: return + var top = 0f + var right = 0f + var bottom = 0f + var left = 0f + val meta = if (localData.mode == SafeAreaViewMode.PADDING) mPaddings else mMargins + val allEdges = meta[Spacing.ALL] + if (!java.lang.Float.isNaN(allEdges)) { + top = allEdges + right = allEdges + bottom = allEdges + left = allEdges + } + val verticalEdges = meta[Spacing.VERTICAL] + if (!java.lang.Float.isNaN(verticalEdges)) { + top = verticalEdges + bottom = verticalEdges + } + val horizontalEdges = meta[Spacing.HORIZONTAL] + if (!java.lang.Float.isNaN(horizontalEdges)) { + right = horizontalEdges + left = horizontalEdges + } + val topEdge = meta[Spacing.TOP] + if (!java.lang.Float.isNaN(topEdge)) { + top = topEdge + } + val rightEdge = meta[Spacing.RIGHT] + if (!java.lang.Float.isNaN(rightEdge)) { + right = rightEdge + } + val bottomEdge = meta[Spacing.BOTTOM] + if (!java.lang.Float.isNaN(bottomEdge)) { + bottom = bottomEdge + } + val leftEdge = meta[Spacing.LEFT] + if (!java.lang.Float.isNaN(leftEdge)) { + left = leftEdge + } + top = PixelUtil.toPixelFromDIP(top) + right = PixelUtil.toPixelFromDIP(right) + bottom = PixelUtil.toPixelFromDIP(bottom) + left = PixelUtil.toPixelFromDIP(left) + val edges = localData.edges + val insets = localData.insets + val insetTop: Float = if (edges.contains(SafeAreaViewEdges.TOP)) insets.top else 0.0f + val insetRight: Float = if (edges.contains(SafeAreaViewEdges.RIGHT)) insets.right else 0.0f + val insetBottom: Float = if (edges.contains(SafeAreaViewEdges.BOTTOM)) insets.bottom else 0.0f + val insetLeft: Float = if (edges.contains(SafeAreaViewEdges.LEFT)) insets.left else 0.0f + if (localData.mode == SafeAreaViewMode.PADDING) { + super.setPadding(Spacing.TOP, insetTop + top) + super.setPadding(Spacing.RIGHT, insetRight + right) + super.setPadding(Spacing.BOTTOM, insetBottom + bottom) + super.setPadding(Spacing.LEFT, insetLeft + left) + } else { + super.setMargin(Spacing.TOP, insetTop + top) + super.setMargin(Spacing.RIGHT, insetRight + right) + super.setMargin(Spacing.BOTTOM, insetBottom + bottom) + super.setMargin(Spacing.LEFT, insetLeft + left) + } + } + + private fun resetInsets(mode: SafeAreaViewMode) { + if (mode == SafeAreaViewMode.PADDING) { + super.setPadding(Spacing.TOP, mPaddings[Spacing.TOP]) + super.setPadding(Spacing.RIGHT, mPaddings[Spacing.TOP]) + super.setPadding(Spacing.BOTTOM, mPaddings[Spacing.BOTTOM]) + super.setPadding(Spacing.LEFT, mPaddings[Spacing.LEFT]) + } else { + super.setMargin(Spacing.TOP, mMargins[Spacing.TOP]) + super.setMargin(Spacing.RIGHT, mMargins[Spacing.TOP]) + super.setMargin(Spacing.BOTTOM, mMargins[Spacing.BOTTOM]) + super.setMargin(Spacing.LEFT, mMargins[Spacing.LEFT]) + } + markUpdated() + } + + override fun onBeforeLayout(nativeViewHierarchyOptimizer: NativeViewHierarchyOptimizer) { + if (mNeedsUpdate) { + mNeedsUpdate = false + updateInsets() + } + } + + override fun setLocalData(data: Any) { + if (data !is SafeAreaViewLocalData) { + return + } + val localData = mLocalData + if (localData != null && localData.mode != data.mode) { + resetInsets(localData.mode) + } + mLocalData = data + mNeedsUpdate = false + updateInsets() + } + + // Names needs to reflect exact order in LayoutShadowNode.java + @ReactPropGroup( + names = + [ + ViewProps.PADDING, + ViewProps.PADDING_VERTICAL, + ViewProps.PADDING_HORIZONTAL, + ViewProps.PADDING_START, + ViewProps.PADDING_END, + ViewProps.PADDING_TOP, + ViewProps.PADDING_BOTTOM, + ViewProps.PADDING_LEFT, + ViewProps.PADDING_RIGHT]) + override fun setPaddings(index: Int, padding: Dynamic) { + val spacingType = ViewProps.PADDING_MARGIN_SPACING_TYPES[index] + mPaddings[spacingType] = + if (padding.type == ReadableType.Number) padding.asDouble().toFloat() else Float.NaN + super.setPaddings(index, padding) + mNeedsUpdate = true + } + + @ReactPropGroup( + names = + [ + ViewProps.MARGIN, + ViewProps.MARGIN_VERTICAL, + ViewProps.MARGIN_HORIZONTAL, + ViewProps.MARGIN_START, + ViewProps.MARGIN_END, + ViewProps.MARGIN_TOP, + ViewProps.MARGIN_BOTTOM, + ViewProps.MARGIN_LEFT, + ViewProps.MARGIN_RIGHT]) + override fun setMargins(index: Int, margin: Dynamic) { + val spacingType = ViewProps.PADDING_MARGIN_SPACING_TYPES[index] + mMargins[spacingType] = + if (margin.type == ReadableType.Number) margin.asDouble().toFloat() else Float.NaN + super.setMargins(index, margin) + mNeedsUpdate = true + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt new file mode 100644 index 00000000..2c98dd3c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt @@ -0,0 +1,39 @@ +package com.th3rdwave.safeareacontext + +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.WritableMap +import com.facebook.react.uimanager.PixelUtil + +fun edgeInsetsToJsMap(insets: EdgeInsets): WritableMap { + val insetsMap = Arguments.createMap() + insetsMap.putDouble("top", PixelUtil.toDIPFromPixel(insets.top).toDouble()) + insetsMap.putDouble("right", PixelUtil.toDIPFromPixel(insets.right).toDouble()) + insetsMap.putDouble("bottom", PixelUtil.toDIPFromPixel(insets.bottom).toDouble()) + insetsMap.putDouble("left", PixelUtil.toDIPFromPixel(insets.left).toDouble()) + return insetsMap +} + +fun edgeInsetsToJavaMap(insets: EdgeInsets): Map { + return mapOf( + "top" to PixelUtil.toDIPFromPixel(insets.top), + "right" to PixelUtil.toDIPFromPixel(insets.right), + "bottom" to PixelUtil.toDIPFromPixel(insets.bottom), + "left" to PixelUtil.toDIPFromPixel(insets.left)) +} + +fun rectToJsMap(rect: Rect): WritableMap { + val rectMap = Arguments.createMap() + rectMap.putDouble("x", PixelUtil.toDIPFromPixel(rect.x).toDouble()) + rectMap.putDouble("y", PixelUtil.toDIPFromPixel(rect.y).toDouble()) + rectMap.putDouble("width", PixelUtil.toDIPFromPixel(rect.width).toDouble()) + rectMap.putDouble("height", PixelUtil.toDIPFromPixel(rect.height).toDouble()) + return rectMap +} + +fun rectToJavaMap(rect: Rect): Map { + return mapOf( + "x" to PixelUtil.toDIPFromPixel(rect.x), + "y" to PixelUtil.toDIPFromPixel(rect.y), + "width" to PixelUtil.toDIPFromPixel(rect.width), + "height" to PixelUtil.toDIPFromPixel(rect.height)) +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt new file mode 100644 index 00000000..c89c4fb4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt @@ -0,0 +1,72 @@ +cmake_minimum_required(VERSION 3.13) +set(CMAKE_VERBOSE_MAKEFILE on) + +set(LIB_LITERAL safeareacontext) +set(LIB_TARGET_NAME react_codegen_${LIB_LITERAL}) + +set(LIB_ANDROID_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..) +set(LIB_COMMON_DIR ${LIB_ANDROID_DIR}/../common/cpp) +set(LIB_ANDROID_GENERATED_JNI_DIR ${LIB_ANDROID_DIR}/build/generated/source/codegen/jni) +set(LIB_ANDROID_GENERATED_COMPONENTS_DIR ${LIB_ANDROID_GENERATED_JNI_DIR}/react/renderer/components/${LIB_LITERAL}) + +add_compile_options( + -fexceptions + -frtti + -std=c++17 + -Wall + -Wpedantic + -Wno-gnu-zero-variadic-macro-arguments +) + +file(GLOB LIB_CUSTOM_SRCS CONFIGURE_DEPENDS *.cpp ${LIB_COMMON_DIR}/react/renderer/components/${LIB_LITERAL}/*.cpp) +file(GLOB LIB_CODEGEN_SRCS CONFIGURE_DEPENDS ${LIB_ANDROID_GENERATED_JNI_DIR}/*.cpp ${LIB_ANDROID_GENERATED_COMPONENTS_DIR}/*.cpp) + +add_library( + ${LIB_TARGET_NAME} + SHARED + ${LIB_CUSTOM_SRCS} + ${LIB_CODEGEN_SRCS} +) + +target_include_directories( + ${LIB_TARGET_NAME} + PUBLIC + . + ${LIB_COMMON_DIR} + ${LIB_ANDROID_GENERATED_JNI_DIR} + ${LIB_ANDROID_GENERATED_COMPONENTS_DIR} +) + +target_link_libraries( + ${LIB_TARGET_NAME} + fbjni + folly_runtime + glog + jsi + react_codegen_rncore + react_debug + react_nativemodule_core + react_render_core + react_render_debug + react_render_graphics + react_render_mapbuffer + rrc_view + turbomodulejsijni + yoga +) + +target_compile_options( + ${LIB_TARGET_NAME} + PRIVATE + -DLOG_TAG=\"ReactNative\" + -fexceptions + -frtti + -std=c++17 + -Wall +) + +target_include_directories( + ${CMAKE_PROJECT_NAME} + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} +) diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/safeareacontext.h b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/safeareacontext.h new file mode 100644 index 00000000..c5cdb8a6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/main/jni/safeareacontext.h @@ -0,0 +1,17 @@ +#pragma once + +#include +#include +#include +#include + +namespace facebook { +namespace react { + +JSI_EXPORT +std::shared_ptr safeareacontext_ModuleProvider( + const std::string &moduleName, + const JavaTurboModule::InitParams ¶ms); + +} // namespace react +} // namespace facebook diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java new file mode 100644 index 00000000..07db09f8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java @@ -0,0 +1,25 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNCSafeAreaProviderManagerDelegate & RNCSafeAreaProviderManagerInterface> extends BaseViewManagerDelegate { + public RNCSafeAreaProviderManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + super.setProperty(view, propName, value); + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java new file mode 100644 index 00000000..4ed4d96e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java @@ -0,0 +1,16 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; + +public interface RNCSafeAreaProviderManagerInterface { + // No props +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java new file mode 100644 index 00000000..b9c45a61 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java @@ -0,0 +1,35 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNCSafeAreaViewManagerDelegate & RNCSafeAreaViewManagerInterface> extends BaseViewManagerDelegate { + public RNCSafeAreaViewManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case "mode": + mViewManager.setMode(view, (String) value); + break; + case "edges": + mViewManager.setEdges(view, (ReadableArray) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java new file mode 100644 index 00000000..71569d53 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java @@ -0,0 +1,19 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; + +public interface RNCSafeAreaViewManagerInterface { + void setMode(T view, @Nullable String value); + void setEdges(T view, @Nullable ReadableArray value); +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt new file mode 100644 index 00000000..ac3b588d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt @@ -0,0 +1,29 @@ +@file:Suppress("DEPRECATION") + +package com.th3rdwave.safeareacontext + +import com.facebook.react.bridge.Arguments +import com.facebook.react.uimanager.events.Event +import com.facebook.react.uimanager.events.RCTEventEmitter + +internal class InsetsChangeEvent( + @Suppress("UNUSED_PARAMETER") surfaceId: Int, + viewTag: Int, + private val mInsets: EdgeInsets, + private val mFrame: Rect +// New ctor is only available in RN 0.65. +) : Event(viewTag) { + override fun getEventName() = EVENT_NAME + + // TODO: Migrate to getEventData when dropping support for RN 0.64. + override fun dispatch(rctEventEmitter: RCTEventEmitter) { + val event = Arguments.createMap() + event.putMap("insets", edgeInsetsToJsMap(mInsets)) + event.putMap("frame", rectToJsMap(mFrame)) + rctEventEmitter.receiveEvent(viewTag, eventName, event) + } + + companion object { + const val EVENT_NAME = "topInsetsChange" + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/NativeSafeAreaContextSpec.java b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/NativeSafeAreaContextSpec.java new file mode 100644 index 00000000..369ea81a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/NativeSafeAreaContextSpec.java @@ -0,0 +1,58 @@ + +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateModuleJavaSpec.js + * + * @nolint + */ + +package com.th3rdwave.safeareacontext; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReactModuleWithSpec; +import com.facebook.react.common.build.ReactBuildConfig; +import com.facebook.react.turbomodule.core.interfaces.TurboModule; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +public abstract class NativeSafeAreaContextSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { + public NativeSafeAreaContextSpec(ReactApplicationContext reactContext) { + super(reactContext); + } + + protected abstract Map getTypedExportedConstants(); + + @Override + @DoNotStrip + public final @Nullable Map getConstants() { + Map constants = getTypedExportedConstants(); + if (ReactBuildConfig.DEBUG || ReactBuildConfig.IS_INTERNAL_BUILD) { + Set obligatoryFlowConstants = new HashSet<>(); + Set optionalFlowConstants = new HashSet<>(Arrays.asList( + "initialWindowMetrics" + )); + Set undeclaredConstants = new HashSet<>(constants.keySet()); + undeclaredConstants.removeAll(obligatoryFlowConstants); + undeclaredConstants.removeAll(optionalFlowConstants); + if (!undeclaredConstants.isEmpty()) { + throw new IllegalStateException(String.format("Native Module Flow doesn't declare constants: %s", undeclaredConstants)); + } + undeclaredConstants = obligatoryFlowConstants; + undeclaredConstants.removeAll(constants.keySet()); + if (!undeclaredConstants.isEmpty()) { + throw new IllegalStateException(String.format("Native Module doesn't fill in constants: %s", undeclaredConstants)); + } + } + return constants; + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt new file mode 100644 index 00000000..0b4c61af --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/android/src/paper/java/com/th3rdwave/safeareacontext/UIManagerHelperCompat.kt @@ -0,0 +1,20 @@ +package com.th3rdwave.safeareacontext + +import android.content.Context +import android.content.ContextWrapper +import android.view.View +import com.facebook.react.bridge.ReactContext + +/** UIManagerHelper.getReactContext only exists in RN 0.63+ so vendor it here for a while. */ +fun getReactContext(view: View): ReactContext { + var context = view.context + if (context !is ReactContext && context is ContextWrapper) { + context = context.baseContext + } + return context as ReactContext +} + +/** UIManagerHelper.getSurfaceId only exists in RN 0.65+, surface id is only needed for new arch. */ +fun getSurfaceId(@Suppress("UNUSED_PARAMETER") context: Context): Int { + return -1 +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewComponentDescriptor.h b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewComponentDescriptor.h new file mode 100644 index 00000000..fd11385b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewComponentDescriptor.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +namespace facebook { +namespace react { + +/* + * Descriptor for component. + */ +class RNCSafeAreaViewComponentDescriptor final + : public ConcreteComponentDescriptor { + using ConcreteComponentDescriptor::ConcreteComponentDescriptor; + void adopt(ShadowNode::Unshared const &shadowNode) const override { + auto concreteShadowNode = + std::static_pointer_cast(shadowNode); + + concreteShadowNode->adjustLayoutWithState(); + + ConcreteComponentDescriptor::adopt(shadowNode); + } +}; + +} // namespace react +} // namespace facebook diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.cpp b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.cpp new file mode 100644 index 00000000..f75bdd35 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.cpp @@ -0,0 +1,107 @@ +#include "RNCSafeAreaViewShadowNode.h" + +#include +#include +#include +#include + +namespace facebook { +namespace react { + +extern const char RNCSafeAreaViewComponentName[] = "RNCSafeAreaView"; + +inline YGValue valueFromEdges(YGStyle::Edges edges, YGEdge edge, YGEdge axis) { + YGValue edgeValue = edges[edge]; + if (edgeValue.unit != YGUnitUndefined) { + return edgeValue; + } + YGValue axisValue = edges[axis]; + if (axisValue.unit != YGUnitUndefined) { + return axisValue; + } + return edges[YGEdgeAll]; +} + +void RNCSafeAreaViewShadowNode::adjustLayoutWithState() { + ensureUnsealed(); + + auto props = getConcreteProps(); + auto state = + std::static_pointer_cast( + getState()); + auto stateData = state->getData(); + auto edges = props.edges; + + // Get the current values for padding / margin. The only caveat here is that + // percent values are not supported. Also might need to add support for start + // / end. + YGValue top, left, right, bottom; + if (props.mode == RNCSafeAreaViewMode::Padding) { + top = valueFromEdges(props.yogaStyle.padding(), YGEdgeTop, YGEdgeVertical); + left = + valueFromEdges(props.yogaStyle.padding(), YGEdgeLeft, YGEdgeHorizontal); + bottom = + valueFromEdges(props.yogaStyle.padding(), YGEdgeBottom, YGEdgeVertical); + right = valueFromEdges( + props.yogaStyle.padding(), YGEdgeRight, YGEdgeHorizontal); + } else { + top = valueFromEdges(props.yogaStyle.margin(), YGEdgeTop, YGEdgeVertical); + left = + valueFromEdges(props.yogaStyle.margin(), YGEdgeLeft, YGEdgeHorizontal); + bottom = + valueFromEdges(props.yogaStyle.margin(), YGEdgeBottom, YGEdgeVertical); + right = + valueFromEdges(props.yogaStyle.margin(), YGEdgeRight, YGEdgeHorizontal); + } + if (std::find(edges.begin(), edges.end(), "top") != edges.end()) { + top = yogaStyleValueFromFloat( + stateData.insets.top + (top.unit == YGUnitPoint ? top.value : 0)); + } + if (std::find(edges.begin(), edges.end(), "left") != edges.end()) { + left = yogaStyleValueFromFloat( + stateData.insets.left + (left.unit == YGUnitPoint ? left.value : 0)); + } + if (std::find(edges.begin(), edges.end(), "right") != edges.end()) { + right = yogaStyleValueFromFloat( + stateData.insets.right + (right.unit == YGUnitPoint ? right.value : 0)); + } + if (std::find(edges.begin(), edges.end(), "bottom") != edges.end()) { + bottom = yogaStyleValueFromFloat( + stateData.insets.bottom + + (bottom.unit == YGUnitPoint ? bottom.value : 0)); + } + + YGStyle adjustedStyle = getConcreteProps().yogaStyle; + if (props.mode == RNCSafeAreaViewMode::Padding) { + adjustedStyle.padding()[YGEdgeTop] = top; + adjustedStyle.padding()[YGEdgeLeft] = left; + adjustedStyle.padding()[YGEdgeRight] = right; + adjustedStyle.padding()[YGEdgeBottom] = bottom; + } else { + adjustedStyle.margin()[YGEdgeTop] = top; + adjustedStyle.margin()[YGEdgeLeft] = left; + adjustedStyle.margin()[YGEdgeRight] = right; + adjustedStyle.margin()[YGEdgeBottom] = bottom; + } + + auto currentStyle = yogaNode_.getStyle(); + if (adjustedStyle.padding()[YGEdgeTop] != currentStyle.padding()[YGEdgeTop] || + adjustedStyle.padding()[YGEdgeLeft] != + currentStyle.padding()[YGEdgeLeft] || + adjustedStyle.padding()[YGEdgeRight] != + currentStyle.padding()[YGEdgeRight] || + adjustedStyle.padding()[YGEdgeBottom] != + currentStyle.padding()[YGEdgeBottom] || + adjustedStyle.margin()[YGEdgeTop] != currentStyle.margin()[YGEdgeTop] || + adjustedStyle.margin()[YGEdgeLeft] != currentStyle.margin()[YGEdgeLeft] || + adjustedStyle.margin()[YGEdgeRight] != + currentStyle.margin()[YGEdgeRight] || + adjustedStyle.margin()[YGEdgeBottom] != + currentStyle.margin()[YGEdgeBottom]) { + yogaNode_.setStyle(adjustedStyle); + yogaNode_.setDirty(true); + } +} + +} // namespace react +} // namespace facebook diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.h b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.h new file mode 100644 index 00000000..3b4da5eb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewShadowNode.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace facebook { +namespace react { + +JSI_EXPORT extern const char RNCSafeAreaViewComponentName[]; + +/* + * `ShadowNode` for component. + */ +class JSI_EXPORT RNCSafeAreaViewShadowNode final + : public ConcreteViewShadowNode< + RNCSafeAreaViewComponentName, + RNCSafeAreaViewProps, + ViewEventEmitter, + RNCSafeAreaViewState> { + using ConcreteViewShadowNode::ConcreteViewShadowNode; + + public: + static ShadowNodeTraits BaseTraits() { + auto traits = ConcreteViewShadowNode::BaseTraits(); + traits.set(ShadowNodeTraits::Trait::DirtyYogaNode); + return traits; + } + + void adjustLayoutWithState(); +}; + +} // namespace react +} // namespace facebook diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.cpp b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.cpp new file mode 100644 index 00000000..ea9327f0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.cpp @@ -0,0 +1,23 @@ +#include "RNCSafeAreaViewState.h" + +namespace facebook { +namespace react { + +#ifdef ANDROID + +folly::dynamic RNCSafeAreaViewState::getDynamic() const { + folly::dynamic insetsValue = folly::dynamic::object(); + insetsValue["top"] = insets.top; + insetsValue["left"] = insets.left; + insetsValue["bottom"] = insets.bottom; + insetsValue["right"] = insets.right; + + folly::dynamic data = folly::dynamic::object(); + data["insets"] = insetsValue; + + return data; +} +#endif + +} // namespace react +} // namespace facebook diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.h b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.h new file mode 100644 index 00000000..d9c4c19a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/common/cpp/react/renderer/components/safeareacontext/RNCSafeAreaViewState.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include +#include + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + +#ifdef ANDROID +inline EdgeInsets edgeInsetsFromDynamic(const folly::dynamic &value) { + return EdgeInsets{ + .left = (float)value["left"].getDouble(), + .top = (float)value["top"].getDouble(), + .right = (float)value["right"].getDouble(), + .bottom = (float)value["bottom"].getDouble(), + }; +} + +#endif + +/* + * State for component. + */ +class JSI_EXPORT RNCSafeAreaViewState final { + public: + using Shared = std::shared_ptr; + + RNCSafeAreaViewState(){}; + +#ifdef ANDROID + RNCSafeAreaViewState( + RNCSafeAreaViewState const &previousState, + folly::dynamic data) + : insets(edgeInsetsFromDynamic(data["insets"])){}; +#endif + + EdgeInsets insets{}; + +#ifdef ANDROID + folly::dynamic getDynamic() const; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; + +#endif +}; + +} // namespace react +} // namespace facebook diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.h new file mode 100644 index 00000000..00389cab --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.h @@ -0,0 +1,13 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProviderComponentView : RCTViewComponentView + +extern NSString *const RNCSafeAreaDidChange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.mm b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.mm new file mode 100644 index 00000000..f80078fe --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaProviderComponentView.mm @@ -0,0 +1,108 @@ +#import "RNCSafeAreaProviderComponentView.h" + +#import +#import +#import +#import + +#import +#import "RNCSafeAreaUtils.h" + +using namespace facebook::react; + +@interface RNCSafeAreaProviderComponentView () +@end + +@implementation RNCSafeAreaProviderComponentView { + UIEdgeInsets _currentSafeAreaInsets; + CGRect _currentFrame; + BOOL _initialInsetsSent; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + } + + return self; +} + +- (void)safeAreaInsetsDidChange +{ + [self invalidateSafeAreaInsets]; +} + +- (void)invalidateSafeAreaInsets +{ + // This gets called before the view size is set by react-native so + // make sure to wait so we don't set wrong insets to JS. + if (CGSizeEqualToSize(self.frame.size, CGSizeZero)) { + return; + } + + UIEdgeInsets safeAreaInsets = self.safeAreaInsets; + CGRect frame = [self convertRect:self.bounds toView:nil]; + + if (_initialInsetsSent && + UIEdgeInsetsEqualToEdgeInsetsWithThreshold(safeAreaInsets, _currentSafeAreaInsets, 1.0 / RCTScreenScale()) && + CGRectEqualToRect(frame, _currentFrame)) { + return; + } + + _initialInsetsSent = YES; + _currentSafeAreaInsets = safeAreaInsets; + _currentFrame = frame; + + [NSNotificationCenter.defaultCenter postNotificationName:RNCSafeAreaDidChange object:self userInfo:nil]; + + if (_eventEmitter) { + RNCSafeAreaProviderEventEmitter::OnInsetsChange event = { + .insets = + { + .top = safeAreaInsets.top, + .left = safeAreaInsets.left, + .bottom = safeAreaInsets.bottom, + .right = safeAreaInsets.right, + }, + .frame = + { + .x = frame.origin.x, + .y = frame.origin.y, + .width = frame.size.width, + .height = frame.size.height, + }, + }; + std::static_pointer_cast(_eventEmitter)->onInsetsChange(event); + } +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + [self invalidateSafeAreaInsets]; +} + +#pragma mark - RCTComponentViewProtocol + ++ (ComponentDescriptorProvider)componentDescriptorProvider +{ + return concreteComponentDescriptorProvider(); +} + +- (void)prepareForRecycle +{ + [super prepareForRecycle]; + _currentSafeAreaInsets = UIEdgeInsetsZero; + _currentFrame = CGRectZero; + _initialInsetsSent = NO; +} + +@end + +Class RNCSafeAreaProviderCls(void) +{ + return RNCSafeAreaProviderComponentView.class; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.h new file mode 100644 index 00000000..222d8f67 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.h @@ -0,0 +1,11 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewComponentView : RCTViewComponentView + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.mm b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.mm new file mode 100644 index 00000000..40841127 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/Fabric/RNCSafeAreaViewComponentView.mm @@ -0,0 +1,147 @@ +#import "RNCSafeAreaViewComponentView.h" + +#import +#import +#import +#import +#import + +#import +#import + +#import "RNCSafeAreaProviderComponentView.h" +#import "RNCSafeAreaUtils.h" + +using namespace facebook::react; + +@interface RNCSafeAreaViewComponentView () +@end + +@implementation RNCSafeAreaViewComponentView { + RNCSafeAreaViewShadowNode::ConcreteState::Shared _state; + UIEdgeInsets _currentSafeAreaInsets; + __weak UIView *_Nullable _providerView; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + } + + return self; +} + +- (NSString *)description +{ + NSString *superDescription = [super description]; + + // Cutting the last `>` character. + if (superDescription.length > 0 && [superDescription characterAtIndex:superDescription.length - 1] == '>') { + superDescription = [superDescription substringToIndex:superDescription.length - 1]; + } + + return [NSString stringWithFormat:@"%@; RNCSafeAreaInsets = %@; appliedRNCSafeAreaInsets = %@>", + superDescription, + NSStringFromUIEdgeInsets(_providerView.safeAreaInsets), + NSStringFromUIEdgeInsets(_currentSafeAreaInsets)]; +} + +- (void)didMoveToWindow +{ + UIView *previousProviderView = _providerView; + _providerView = [self findNearestProvider]; + + [self updateStateIfNecessary]; + + if (previousProviderView != _providerView) { + [NSNotificationCenter.defaultCenter removeObserver:self name:RNCSafeAreaDidChange object:previousProviderView]; + [NSNotificationCenter.defaultCenter addObserver:self + selector:@selector(safeAreaProviderInsetsDidChange:) + name:RNCSafeAreaDidChange + object:_providerView]; + } +} + +- (void)safeAreaProviderInsetsDidChange:(NSNotification *)notification +{ + [self updateStateIfNecessary]; +} + +- (void)updateStateIfNecessary +{ + if (_providerView == nil) { + return; + } + UIEdgeInsets safeAreaInsets = _providerView.safeAreaInsets; + + if (UIEdgeInsetsEqualToEdgeInsetsWithThreshold(safeAreaInsets, _currentSafeAreaInsets, 1.0 / RCTScreenScale())) { + return; + } + + _currentSafeAreaInsets = safeAreaInsets; + [self updateState]; +} + +- (UIView *)findNearestProvider +{ + UIView *current = self.superview; + while (current != nil) { + if ([current isKindOfClass:RNCSafeAreaProviderComponentView.class]) { + return current; + } + current = current.superview; + } + return self; +} + +- (void)updateState +{ + if (!_state) { + return; + } + + _state->updateState( + [=](RNCSafeAreaViewShadowNode::ConcreteState::Data const &oldData) + -> RNCSafeAreaViewShadowNode::ConcreteState::SharedData { + auto newData = oldData; + newData.insets = RCTEdgeInsetsFromUIEdgeInsets(_currentSafeAreaInsets); + return std::make_shared(newData); + }); +} + +#pragma mark - RCTComponentViewProtocol + ++ (ComponentDescriptorProvider)componentDescriptorProvider +{ + return concreteComponentDescriptorProvider(); +} + +- (void)updateState:(State::Shared const &)state oldState:(State::Shared const &)oldState +{ + _state = std::static_pointer_cast(state); +} + +- (void)finalizeUpdates:(RNComponentViewUpdateMask)updateMask +{ + [super finalizeUpdates:updateMask]; + [self updateStateIfNecessary]; +} + +- (void)prepareForRecycle +{ + [super prepareForRecycle]; + + [NSNotificationCenter.defaultCenter removeObserver:self]; + _state.reset(); + _providerView = nil; + _currentSafeAreaInsets = UIEdgeInsetsZero; +} + +@end + +Class RNCSafeAreaViewCls(void) +{ + return RNCSafeAreaViewComponentView.class; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.h new file mode 100644 index 00000000..2a3ef965 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaContext : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.mm b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.mm new file mode 100644 index 00000000..a0815028 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaContext.mm @@ -0,0 +1,78 @@ +#import "RNCSafeAreaContext.h" + +#if __has_include() +#define RCT_USE_CODEGEN 1 +#else +#define RCT_USE_CODEGEN 0 +#endif + +#import +#import +#if RCT_USE_CODEGEN +#import +#endif + +#if RCT_USE_CODEGEN +using namespace facebook::react; + +@interface RNCSafeAreaContext () +@end +#endif + +@implementation RNCSafeAreaContext + +RCT_EXPORT_MODULE() + ++ (BOOL)requiresMainQueueSetup +{ + return YES; +} + +- (NSDictionary *)constantsToExport +{ + return [self getConstants]; +} + +- (NSDictionary *)getConstants +{ + __block NSDictionary *constants; + + RCTUnsafeExecuteOnMainQueueSync(^{ + UIWindow *window = RCTKeyWindow(); + if (window == nil) { + constants = @{@"initialWindowMetrics" : [NSNull null]}; + return; + } + + UIEdgeInsets safeAreaInsets = window.safeAreaInsets; + constants = @{ + @"initialWindowMetrics" : @{ + @"insets" : @{ + @"top" : @(safeAreaInsets.top), + @"right" : @(safeAreaInsets.right), + @"bottom" : @(safeAreaInsets.bottom), + @"left" : @(safeAreaInsets.left), + }, + @"frame" : @{ + @"x" : @(window.frame.origin.x), + @"y" : @(window.frame.origin.y), + @"width" : @(window.frame.size.width), + @"height" : @(window.frame.size.height), + }, + } + }; + }); + + return constants; +} + +#if RCT_USE_CODEGEN + +- (std::shared_ptr)getTurboModule:(const ObjCTurboModule::InitParams &)params +{ + return std::make_shared(params); +} + +#endif + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.h new file mode 100644 index 00000000..f31adb78 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.h @@ -0,0 +1,13 @@ +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProvider : RCTView + +@property (nonatomic, copy) RCTBubblingEventBlock onInsetsChange; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.m new file mode 100644 index 00000000..e5b1cf4f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProvider.m @@ -0,0 +1,64 @@ +#import "RNCSafeAreaProvider.h" + +#import +#import +#import "RNCSafeAreaUtils.h" + +@implementation RNCSafeAreaProvider { + UIEdgeInsets _currentSafeAreaInsets; + CGRect _currentFrame; + BOOL _initialInsetsSent; +} + +- (void)safeAreaInsetsDidChange +{ + [self invalidateSafeAreaInsets]; +} + +- (void)invalidateSafeAreaInsets +{ + // This gets called before the view size is set by react-native so + // make sure to wait so we don't set wrong insets to JS. + if (CGSizeEqualToSize(self.frame.size, CGSizeZero)) { + return; + } + + UIEdgeInsets safeAreaInsets = self.safeAreaInsets; + CGRect frame = [self convertRect:self.bounds toView:nil]; + + if (_initialInsetsSent && + UIEdgeInsetsEqualToEdgeInsetsWithThreshold(safeAreaInsets, _currentSafeAreaInsets, 1.0 / RCTScreenScale()) && + CGRectEqualToRect(frame, _currentFrame)) { + return; + } + + _initialInsetsSent = YES; + _currentSafeAreaInsets = safeAreaInsets; + _currentFrame = frame; + + [NSNotificationCenter.defaultCenter postNotificationName:RNCSafeAreaDidChange object:self userInfo:nil]; + + self.onInsetsChange(@{ + @"insets" : @{ + @"top" : @(safeAreaInsets.top), + @"right" : @(safeAreaInsets.right), + @"bottom" : @(safeAreaInsets.bottom), + @"left" : @(safeAreaInsets.left), + }, + @"frame" : @{ + @"x" : @(frame.origin.x), + @"y" : @(frame.origin.y), + @"width" : @(frame.size.width), + @"height" : @(frame.size.height), + }, + }); +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + [self invalidateSafeAreaInsets]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.h new file mode 100644 index 00000000..d83c3275 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaProviderManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.m new file mode 100644 index 00000000..e6f8670f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaProviderManager.m @@ -0,0 +1,16 @@ +#import "RNCSafeAreaProviderManager.h" + +#import "RNCSafeAreaProvider.h" + +@implementation RNCSafeAreaProviderManager + +RCT_EXPORT_MODULE(RNCSafeAreaProvider) + +RCT_EXPORT_VIEW_PROPERTY(onInsetsChange, RCTDirectEventBlock) + +- (UIView *)view +{ + return [RNCSafeAreaProvider new]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.h new file mode 100644 index 00000000..a3474cda --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaShadowView : RCTShadowView + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.m new file mode 100644 index 00000000..1597bc85 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaShadowView.m @@ -0,0 +1,184 @@ +#import "RNCSafeAreaShadowView.h" + +#import +#include + +#import "RNCSafeAreaViewEdges.h" +#import "RNCSafeAreaViewLocalData.h" +#import "RNCSafeAreaViewMode.h" + +// From RCTShadowView.m +typedef NS_ENUM(unsigned int, meta_prop_t) { + META_PROP_LEFT, + META_PROP_TOP, + META_PROP_RIGHT, + META_PROP_BOTTOM, + META_PROP_HORIZONTAL, + META_PROP_VERTICAL, + META_PROP_ALL, + META_PROP_COUNT, +}; + +@implementation RNCSafeAreaShadowView { + RNCSafeAreaViewLocalData *_localData; + bool _needsUpdate; + YGValue _paddingMetaProps[META_PROP_COUNT]; + YGValue _marginMetaProps[META_PROP_COUNT]; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + _needsUpdate = false; + for (unsigned int ii = 0; ii < META_PROP_COUNT; ii++) { + _paddingMetaProps[ii] = YGValueUndefined; + _marginMetaProps[ii] = YGValueUndefined; + } + } + return self; +} + +- (void)extractEdges:(YGValue[])_metaProps + top:(CGFloat *)top + right:(CGFloat *)right + bottom:(CGFloat *)bottom + left:(CGFloat *)left +{ + if (_metaProps[META_PROP_ALL].unit == YGUnitPoint) { + *top = _metaProps[META_PROP_ALL].value; + *right = _metaProps[META_PROP_ALL].value; + *bottom = _metaProps[META_PROP_ALL].value; + *left = _metaProps[META_PROP_ALL].value; + } + + if (_metaProps[META_PROP_HORIZONTAL].unit == YGUnitPoint) { + *right = _metaProps[META_PROP_HORIZONTAL].value; + *left = _metaProps[META_PROP_HORIZONTAL].value; + } + + if (_metaProps[META_PROP_VERTICAL].unit == YGUnitPoint) { + *top = _metaProps[META_PROP_VERTICAL].value; + *bottom = _metaProps[META_PROP_VERTICAL].value; + } + + if (_metaProps[META_PROP_TOP].unit == YGUnitPoint) { + *top = _metaProps[META_PROP_TOP].value; + } + + if (_metaProps[META_PROP_RIGHT].unit == YGUnitPoint) { + *right = _metaProps[META_PROP_RIGHT].value; + } + + if (_metaProps[META_PROP_BOTTOM].unit == YGUnitPoint) { + *bottom = _metaProps[META_PROP_BOTTOM].value; + } + + if (_metaProps[META_PROP_LEFT].unit == YGUnitPoint) { + *left = _metaProps[META_PROP_LEFT].value; + } +} + +- (void)resetInsetsForMode:(RNCSafeAreaViewMode)mode +{ + if (mode == RNCSafeAreaViewModePadding) { + super.paddingTop = _paddingMetaProps[META_PROP_TOP]; + super.paddingRight = _paddingMetaProps[META_PROP_RIGHT]; + super.paddingBottom = _paddingMetaProps[META_PROP_BOTTOM]; + super.paddingLeft = _paddingMetaProps[META_PROP_LEFT]; + } else if (mode == RNCSafeAreaViewModeMargin) { + super.marginTop = _marginMetaProps[META_PROP_TOP]; + super.marginRight = _marginMetaProps[META_PROP_RIGHT]; + super.marginBottom = _marginMetaProps[META_PROP_BOTTOM]; + super.marginLeft = _marginMetaProps[META_PROP_LEFT]; + } +} + +- (void)updateInsets +{ + if (_localData == nil) { + return; + } + + UIEdgeInsets insets = _localData.insets; + RNCSafeAreaViewMode mode = _localData.mode; + RNCSafeAreaViewEdges edges = _localData.edges; + + CGFloat top = 0; + CGFloat right = 0; + CGFloat bottom = 0; + CGFloat left = 0; + + CGFloat insetTop = (edges & RNCSafeAreaViewEdgesTop) ? insets.top : 0; + CGFloat insetRight = (edges & RNCSafeAreaViewEdgesRight) ? insets.right : 0; + CGFloat insetBottom = (edges & RNCSafeAreaViewEdgesBottom) ? insets.bottom : 0; + CGFloat insetLeft = (edges & RNCSafeAreaViewEdgesLeft) ? insets.left : 0; + + if (mode == RNCSafeAreaViewModePadding) { + [self extractEdges:_paddingMetaProps top:&top right:&right bottom:&bottom left:&left]; + super.paddingTop = (YGValue){insetTop + top, YGUnitPoint}; + super.paddingRight = (YGValue){insetRight + right, YGUnitPoint}; + super.paddingBottom = (YGValue){insetBottom + bottom, YGUnitPoint}; + super.paddingLeft = (YGValue){insetLeft + left, YGUnitPoint}; + } else if (mode == RNCSafeAreaViewModeMargin) { + [self extractEdges:_marginMetaProps top:&top right:&right bottom:&bottom left:&left]; + super.marginTop = (YGValue){insetTop + top, YGUnitPoint}; + super.marginRight = (YGValue){insetRight + right, YGUnitPoint}; + super.marginBottom = (YGValue){insetBottom + bottom, YGUnitPoint}; + super.marginLeft = (YGValue){insetLeft + left, YGUnitPoint}; + } +} + +- (void)didSetProps:(NSArray *)changedProps +{ + if (_needsUpdate) { + _needsUpdate = false; + [self updateInsets]; + } + [super didSetProps:changedProps]; +} + +- (void)setLocalData:(RNCSafeAreaViewLocalData *)localData +{ + RCTAssert( + [localData isKindOfClass:[RNCSafeAreaViewLocalData class]], + @"Local data object for `RCTRNCSafeAreaShadowView` must be `RCTRNCSafeAreaViewLocalData` instance."); + + if (_localData != nil && _localData.mode != localData.mode) { + [self resetInsetsForMode:_localData.mode]; + } + + _localData = localData; + _needsUpdate = false; + [self updateInsets]; + + if (_localData.mode == RNCSafeAreaViewModePadding) { + [super didSetProps:@[ @"paddingTop", @"paddingRight", @"paddingBottom", @"paddingLeft" ]]; + } else { + [super didSetProps:@[ @"marginTop", @"marginRight", @"marginBottom", @"marginLeft" ]]; + } +} + +#define SHADOW_VIEW_MARGIN_PADDING_PROP(edge, metaProp) \ + -(void)setPadding##edge : (YGValue)value \ + { \ + [super setPadding##edge:value]; \ + _needsUpdate = true; \ + _paddingMetaProps[META_PROP_##metaProp] = value; \ + } \ + -(void)setMargin##edge : (YGValue)value \ + { \ + [super setMargin##edge:value]; \ + _needsUpdate = true; \ + _marginMetaProps[META_PROP_##metaProp] = value; \ + } + +SHADOW_VIEW_MARGIN_PADDING_PROP(, ALL); +SHADOW_VIEW_MARGIN_PADDING_PROP(Vertical, VERTICAL); +SHADOW_VIEW_MARGIN_PADDING_PROP(Horizontal, HORIZONTAL); +SHADOW_VIEW_MARGIN_PADDING_PROP(Top, TOP); +SHADOW_VIEW_MARGIN_PADDING_PROP(Right, RIGHT); +SHADOW_VIEW_MARGIN_PADDING_PROP(Bottom, BOTTOM); +SHADOW_VIEW_MARGIN_PADDING_PROP(Left, LEFT); + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.h new file mode 100644 index 00000000..35f81816 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.h @@ -0,0 +1,8 @@ +#import +#import +#import + +extern NSString *const RNCSafeAreaDidChange; + +RCT_EXTERN BOOL +UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIEdgeInsets insets2, CGFloat threshold); diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.m new file mode 100644 index 00000000..c7fbe33c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaUtils.m @@ -0,0 +1,11 @@ +#import "RNCSafeAreaUtils.h" + +#import + +NSString *const RNCSafeAreaDidChange = @"RNCSafeAreaDidChange"; + +BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIEdgeInsets insets2, CGFloat threshold) +{ + return ABS(insets1.left - insets2.left) <= threshold && ABS(insets1.right - insets2.right) <= threshold && + ABS(insets1.top - insets2.top) <= threshold && ABS(insets1.bottom - insets2.bottom) <= threshold; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.h new file mode 100644 index 00000000..f4013d18 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.h @@ -0,0 +1,21 @@ +#import +#import +#import + +#import "RNCSafeAreaViewEdges.h" +#import "RNCSafeAreaViewMode.h" + +NS_ASSUME_NONNULL_BEGIN + +@class RNCSafeAreaView; + +@interface RNCSafeAreaView : RCTView + +- (instancetype)initWithBridge:(RCTBridge *)bridge; + +@property (nonatomic, assign) RNCSafeAreaViewMode mode; +@property (nonatomic, assign) RNCSafeAreaViewEdges edges; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.m new file mode 100644 index 00000000..071001f2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaView.m @@ -0,0 +1,126 @@ +#import "RNCSafeAreaView.h" + +#import +#import + +#import "RNCSafeAreaProvider.h" +#import "RNCSafeAreaUtils.h" +#import "RNCSafeAreaViewEdges.h" +#import "RNCSafeAreaViewLocalData.h" +#import "RNCSafeAreaViewMode.h" + +@implementation RNCSafeAreaView { + __weak RCTBridge *_bridge; + UIEdgeInsets _currentSafeAreaInsets; + RNCSafeAreaViewMode _mode; + RNCSafeAreaViewEdges _edges; + __weak RNCSafeAreaProvider *_Nullable _providerView; +} + +- (instancetype)initWithBridge:(RCTBridge *)bridge +{ + if (self = [super initWithFrame:CGRectZero]) { + _bridge = bridge; + // Defaults + _mode = RNCSafeAreaViewModePadding; + _edges = RNCSafeAreaViewEdgesAll; + } + + return self; +} + +RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : (NSCoder *)decoder) +RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame) + +- (NSString *)description +{ + NSString *superDescription = [super description]; + + // Cutting the last `>` character. + if (superDescription.length > 0 && [superDescription characterAtIndex:superDescription.length - 1] == '>') { + superDescription = [superDescription substringToIndex:superDescription.length - 1]; + } + + return [NSString stringWithFormat:@"%@; RNCSafeAreaInsets = %@; appliedRNCSafeAreaInsets = %@>", + superDescription, + NSStringFromUIEdgeInsets(_providerView.safeAreaInsets), + NSStringFromUIEdgeInsets(_currentSafeAreaInsets)]; +} + +- (void)didMoveToWindow +{ + UIView *previousProviderView = _providerView; + _providerView = [self findNearestProvider]; + + [self invalidateSafeAreaInsets]; + + if (previousProviderView != _providerView) { + if (previousProviderView != nil) { + [NSNotificationCenter.defaultCenter removeObserver:self name:RNCSafeAreaDidChange object:previousProviderView]; + } + + if (_providerView != nil) { + [NSNotificationCenter.defaultCenter addObserver:self + selector:@selector(safeAreaProviderInsetsDidChange:) + name:RNCSafeAreaDidChange + object:_providerView]; + } + } +} + +- (void)safeAreaProviderInsetsDidChange:(NSNotification *)notification +{ + [self invalidateSafeAreaInsets]; +} + +- (void)invalidateSafeAreaInsets +{ + if (_providerView == nil) { + return; + } + UIEdgeInsets safeAreaInsets = _providerView.safeAreaInsets; + + if (UIEdgeInsetsEqualToEdgeInsetsWithThreshold(safeAreaInsets, _currentSafeAreaInsets, 1.0 / RCTScreenScale())) { + return; + } + + _currentSafeAreaInsets = safeAreaInsets; + [self updateLocalData]; +} + +- (nullable RNCSafeAreaProvider *)findNearestProvider +{ + UIView *current = self.reactSuperview; + while (current != nil) { + if ([current isKindOfClass:RNCSafeAreaProvider.class]) { + return (RNCSafeAreaProvider *)current; + } + current = current.reactSuperview; + } + return nil; +} + +- (void)updateLocalData +{ + if (_providerView == nil) { + return; + } + RNCSafeAreaViewLocalData *localData = [[RNCSafeAreaViewLocalData alloc] initWithInsets:_currentSafeAreaInsets + mode:_mode + edges:_edges]; + [_bridge.uiManager setLocalData:localData forView:self]; +} + +- (void)setMode:(RNCSafeAreaViewMode)mode +{ + _mode = mode; + [self updateLocalData]; +} + +- (void)setEdges:(RNCSafeAreaViewEdges)edges +{ + _edges = edges; + [self updateLocalData]; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.h new file mode 100644 index 00000000..1d1a5e95 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.h @@ -0,0 +1,9 @@ +#import + +typedef NS_ENUM(NSInteger, RNCSafeAreaViewEdges) { + RNCSafeAreaViewEdgesTop = 0b1000, + RNCSafeAreaViewEdgesRight = 0b0100, + RNCSafeAreaViewEdgesBottom = 0b0010, + RNCSafeAreaViewEdgesLeft = 0b0001, + RNCSafeAreaViewEdgesAll = 0b1111, +}; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.m new file mode 100644 index 00000000..5e77baf7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewEdges.m @@ -0,0 +1,17 @@ +#import "RNCSafeAreaViewEdges.h" +#import + +@implementation RCTConvert (RNCSafeAreaView) + +RCT_MULTI_ENUM_CONVERTER( + RNCSafeAreaViewEdges, + (@{ + @"top" : @(RNCSafeAreaViewEdgesTop), + @"right" : @(RNCSafeAreaViewEdgesRight), + @"bottom" : @(RNCSafeAreaViewEdgesBottom), + @"left" : @(RNCSafeAreaViewEdgesLeft), + }), + RNCSafeAreaViewEdgesAll, + integerValue); + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.h new file mode 100644 index 00000000..53ba468f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.h @@ -0,0 +1,18 @@ +#import + +#import "RNCSafeAreaViewEdges.h" +#import "RNCSafeAreaViewMode.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewLocalData : NSObject + +- (instancetype)initWithInsets:(UIEdgeInsets)insets mode:(RNCSafeAreaViewMode)mode edges:(RNCSafeAreaViewEdges)edges; + +@property (atomic, readonly) UIEdgeInsets insets; +@property (atomic, readonly) RNCSafeAreaViewMode mode; +@property (atomic, readonly) RNCSafeAreaViewEdges edges; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.m new file mode 100644 index 00000000..a486ed2f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewLocalData.m @@ -0,0 +1,16 @@ +#import "RNCSafeAreaViewLocalData.h" + +@implementation RNCSafeAreaViewLocalData + +- (instancetype)initWithInsets:(UIEdgeInsets)insets mode:(RNCSafeAreaViewMode)mode edges:(RNCSafeAreaViewEdges)edges +{ + if (self = [super init]) { + _insets = insets; + _mode = mode; + _edges = edges; + } + + return self; +} + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.h new file mode 100644 index 00000000..cf92d53f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.h @@ -0,0 +1,9 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RNCSafeAreaViewManager : RCTViewManager + +@end + +NS_ASSUME_NONNULL_END diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.m new file mode 100644 index 00000000..02f1b0d7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewManager.m @@ -0,0 +1,25 @@ +#import "RNCSafeAreaViewManager.h" + +#import "RNCSafeAreaShadowView.h" +#import "RNCSafeAreaView.h" +#import "RNCSafeAreaViewEdges.h" +#import "RNCSafeAreaViewMode.h" + +@implementation RNCSafeAreaViewManager + +RCT_EXPORT_MODULE(RNCSafeAreaView) + +- (UIView *)view +{ + return [[RNCSafeAreaView alloc] initWithBridge:self.bridge]; +} + +- (RNCSafeAreaShadowView *)shadowView +{ + return [RNCSafeAreaShadowView new]; +} + +RCT_EXPORT_VIEW_PROPERTY(mode, RNCSafeAreaViewMode) +RCT_EXPORT_VIEW_PROPERTY(edges, RNCSafeAreaViewEdges) + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.h b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.h new file mode 100644 index 00000000..a43f382e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.h @@ -0,0 +1,7 @@ +#import + +typedef NS_ENUM(NSInteger, RNCSafeAreaViewMode) { + RNCSafeAreaViewModePadding, + RNCSafeAreaViewModeMargin, + RNCSafeAreaViewModeBorder, +}; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.m b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.m new file mode 100644 index 00000000..b50718e7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNCSafeAreaViewMode.m @@ -0,0 +1,15 @@ +#import "RNCSafeAreaViewMode.h" +#import + +@implementation RCTConvert (RNCSafeAreaView) + +RCT_MULTI_ENUM_CONVERTER( + RNCSafeAreaViewMode, + (@{ + @"padding" : @(RNCSafeAreaViewModePadding), + @"margin" : @(RNCSafeAreaViewModeMargin), + }), + RNCSafeAreaViewModePadding, + integerValue); + +@end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.pbxproj b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.pbxproj new file mode 100644 index 00000000..73a79361 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.pbxproj @@ -0,0 +1,346 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0C7844E127C02CEE001807FB /* RNCSafeAreaViewLocalData.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844D227C02CEE001807FB /* RNCSafeAreaViewLocalData.m */; }; + 0C7844E227C02CEE001807FB /* RNCSafeAreaViewMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844D327C02CEE001807FB /* RNCSafeAreaViewMode.m */; }; + 0C7844E327C02CEE001807FB /* RNCSafeAreaShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844D527C02CEE001807FB /* RNCSafeAreaShadowView.m */; }; + 0C7844E427C02CEE001807FB /* RNCSafeAreaProviderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844D627C02CEE001807FB /* RNCSafeAreaProviderManager.m */; }; + 0C7844E527C02CEE001807FB /* RNCSafeAreaViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844D927C02CEE001807FB /* RNCSafeAreaViewManager.m */; }; + 0C7844E627C02CEE001807FB /* RNCSafeAreaViewEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844DE27C02CEE001807FB /* RNCSafeAreaViewEdges.m */; }; + 0C7844E727C02CEE001807FB /* RNCSafeAreaUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844DF27C02CEE001807FB /* RNCSafeAreaUtils.m */; }; + 0C7844E827C02CEE001807FB /* RNCSafeAreaView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844E027C02CEE001807FB /* RNCSafeAreaView.m */; }; + 0C7844EF27C02D03001807FB /* RNCSafeAreaContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844EA27C02D03001807FB /* RNCSafeAreaContext.mm */; }; + 0C7844F027C02D03001807FB /* RNCSafeAreaProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7844ED27C02D03001807FB /* RNCSafeAreaProvider.m */; }; + C923EDBC220C2C1A00D3100F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C923EDBB220C2C1A00D3100F /* SystemConfiguration.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 58B511D91A9E6C8500147676 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0C7844D227C02CEE001807FB /* RNCSafeAreaViewLocalData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaViewLocalData.m; sourceTree = ""; }; + 0C7844D327C02CEE001807FB /* RNCSafeAreaViewMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaViewMode.m; sourceTree = ""; }; + 0C7844D427C02CEE001807FB /* RNCSafeAreaViewLocalData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaViewLocalData.h; sourceTree = ""; }; + 0C7844D527C02CEE001807FB /* RNCSafeAreaShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaShadowView.m; sourceTree = ""; }; + 0C7844D627C02CEE001807FB /* RNCSafeAreaProviderManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaProviderManager.m; sourceTree = ""; }; + 0C7844D727C02CEE001807FB /* RNCSafeAreaShadowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaShadowView.h; sourceTree = ""; }; + 0C7844D827C02CEE001807FB /* RNCSafeAreaView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaView.h; sourceTree = ""; }; + 0C7844D927C02CEE001807FB /* RNCSafeAreaViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaViewManager.m; sourceTree = ""; }; + 0C7844DA27C02CEE001807FB /* RNCSafeAreaViewEdges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaViewEdges.h; sourceTree = ""; }; + 0C7844DB27C02CEE001807FB /* RNCSafeAreaUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaUtils.h; sourceTree = ""; }; + 0C7844DC27C02CEE001807FB /* RNCSafeAreaViewMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaViewMode.h; sourceTree = ""; }; + 0C7844DD27C02CEE001807FB /* RNCSafeAreaViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaViewManager.h; sourceTree = ""; }; + 0C7844DE27C02CEE001807FB /* RNCSafeAreaViewEdges.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaViewEdges.m; sourceTree = ""; }; + 0C7844DF27C02CEE001807FB /* RNCSafeAreaUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaUtils.m; sourceTree = ""; }; + 0C7844E027C02CEE001807FB /* RNCSafeAreaView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaView.m; sourceTree = ""; }; + 0C7844E927C02D03001807FB /* RNCSafeAreaContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaContext.h; sourceTree = ""; }; + 0C7844EA27C02D03001807FB /* RNCSafeAreaContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RNCSafeAreaContext.mm; sourceTree = ""; }; + 0C7844EB27C02D03001807FB /* RNCSafeAreaProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaProvider.h; sourceTree = ""; }; + 0C7844EC27C02D03001807FB /* RNCSafeAreaProviderManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCSafeAreaProviderManager.h; sourceTree = ""; }; + 0C7844ED27C02D03001807FB /* RNCSafeAreaProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCSafeAreaProvider.m; sourceTree = ""; }; + 0C7844EE27C02D03001807FB /* Fabric */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Fabric; sourceTree = ""; }; + 134814201AA4EA6300B7C361 /* libRNCSafeAreaContext.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNCSafeAreaContext.a; sourceTree = BUILT_PRODUCTS_DIR; }; + C923EDBB220C2C1A00D3100F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 58B511D81A9E6C8500147676 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C923EDBC220C2C1A00D3100F /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 134814211AA4EA7D00B7C361 /* Products */ = { + isa = PBXGroup; + children = ( + 134814201AA4EA6300B7C361 /* libRNCSafeAreaContext.a */, + ); + name = Products; + sourceTree = ""; + }; + 58B511D21A9E6C8500147676 = { + isa = PBXGroup; + children = ( + 0C7844EE27C02D03001807FB /* Fabric */, + 0C7844E927C02D03001807FB /* RNCSafeAreaContext.h */, + 0C7844EA27C02D03001807FB /* RNCSafeAreaContext.mm */, + 0C7844EB27C02D03001807FB /* RNCSafeAreaProvider.h */, + 0C7844ED27C02D03001807FB /* RNCSafeAreaProvider.m */, + 0C7844EC27C02D03001807FB /* RNCSafeAreaProviderManager.h */, + 0C7844D627C02CEE001807FB /* RNCSafeAreaProviderManager.m */, + 0C7844D727C02CEE001807FB /* RNCSafeAreaShadowView.h */, + 0C7844D527C02CEE001807FB /* RNCSafeAreaShadowView.m */, + 0C7844DB27C02CEE001807FB /* RNCSafeAreaUtils.h */, + 0C7844DF27C02CEE001807FB /* RNCSafeAreaUtils.m */, + 0C7844D827C02CEE001807FB /* RNCSafeAreaView.h */, + 0C7844E027C02CEE001807FB /* RNCSafeAreaView.m */, + 0C7844DA27C02CEE001807FB /* RNCSafeAreaViewEdges.h */, + 0C7844DE27C02CEE001807FB /* RNCSafeAreaViewEdges.m */, + 0C7844D427C02CEE001807FB /* RNCSafeAreaViewLocalData.h */, + 0C7844D227C02CEE001807FB /* RNCSafeAreaViewLocalData.m */, + 0C7844DD27C02CEE001807FB /* RNCSafeAreaViewManager.h */, + 0C7844D927C02CEE001807FB /* RNCSafeAreaViewManager.m */, + 0C7844DC27C02CEE001807FB /* RNCSafeAreaViewMode.h */, + 0C7844D327C02CEE001807FB /* RNCSafeAreaViewMode.m */, + 134814211AA4EA7D00B7C361 /* Products */, + C923EDBA220C2C1A00D3100F /* Frameworks */, + ); + sourceTree = ""; + }; + C923EDBA220C2C1A00D3100F /* Frameworks */ = { + isa = PBXGroup; + children = ( + C923EDBB220C2C1A00D3100F /* SystemConfiguration.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 58B511DA1A9E6C8500147676 /* RNCSafeAreaContext */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCSafeAreaContext" */; + buildPhases = ( + 58B511D71A9E6C8500147676 /* Sources */, + 58B511D81A9E6C8500147676 /* Frameworks */, + 58B511D91A9E6C8500147676 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNCSafeAreaContext; + productName = RCTDataManager; + productReference = 134814201AA4EA6300B7C361 /* libRNCSafeAreaContext.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58B511D31A9E6C8500147676 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 58B511DA1A9E6C8500147676 = { + CreatedOnToolsVersion = 6.1.1; + }; + }; + }; + buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNSafeAreaContext" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 58B511D21A9E6C8500147676; + productRefGroup = 58B511D21A9E6C8500147676; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58B511DA1A9E6C8500147676 /* RNCSafeAreaContext */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 58B511D71A9E6C8500147676 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C7844E427C02CEE001807FB /* RNCSafeAreaProviderManager.m in Sources */, + 0C7844E727C02CEE001807FB /* RNCSafeAreaUtils.m in Sources */, + 0C7844E827C02CEE001807FB /* RNCSafeAreaView.m in Sources */, + 0C7844E627C02CEE001807FB /* RNCSafeAreaViewEdges.m in Sources */, + 0C7844E527C02CEE001807FB /* RNCSafeAreaViewManager.m in Sources */, + 0C7844EF27C02D03001807FB /* RNCSafeAreaContext.mm in Sources */, + 0C7844E127C02CEE001807FB /* RNCSafeAreaViewLocalData.m in Sources */, + 0C7844E227C02CEE001807FB /* RNCSafeAreaViewMode.m in Sources */, + 0C7844F027C02D03001807FB /* RNCSafeAreaProvider.m in Sources */, + 0C7844E327C02CEE001807FB /* RNCSafeAreaShadowView.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 58B511ED1A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 58B511EE1A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58B511F01A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNCSafeAreaContext; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 58B511F11A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNCSafeAreaContext; + SKIP_INSTALL = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNSafeAreaContext" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511ED1A9E6C8500147676 /* Debug */, + 58B511EE1A9E6C8500147676 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCSafeAreaContext" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511F01A9E6C8500147676 /* Debug */, + 58B511F11A9E6C8500147676 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58B511D31A9E6C8500147676 /* Project object */; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcuserdata/janicduplessis.xcuserdatad/UserInterfaceState.xcuserstate b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/project.xcworkspace/xcuserdata/janicduplessis.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..1e489565a9dbcc0170012db4251b803e05a78b87 GIT binary patch literal 7464 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 Y569<@e`R7OA%XJ8opRT{0%Yp`8v@`B-T(jq literal 0 HcmV?d00001 diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/xcuserdata/janicduplessis.xcuserdatad/xcschemes/xcschememanagement.plist b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/xcuserdata/janicduplessis.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..83686552 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/ios/RNSafeAreaContext.xcodeproj/xcuserdata/janicduplessis.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + RNCSafeAreaContext.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/jest/mock.js b/iut-expo-starter/node_modules/react-native-safe-area-context/jest/mock.js new file mode 100644 index 00000000..0d2ffc71 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/jest/mock.js @@ -0,0 +1,39 @@ +/* global jest */ + +import React from 'react'; + +const MOCK_INITIAL_METRICS = { + frame: { + width: 320, + height: 640, + x: 0, + y: 0, + }, + insets: { + left: 0, + right: 0, + bottom: 0, + top: 0, + }, +}; + +const RNSafeAreaContext = jest.requireActual('react-native-safe-area-context'); + +export default { + ...RNSafeAreaContext, + initialWindowMetrics: MOCK_INITIAL_METRICS, + // Provide a simpler implementation with default values. + SafeAreaProvider: ({ children, initialMetrics }) => { + return ( + + + {children} + + + ); + }, +}; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js new file mode 100644 index 00000000..1549c5e9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js @@ -0,0 +1,43 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompatNativeSafeAreaProvider = CompatNativeSafeAreaProvider; +var React = _interopRequireWildcard(require("react")); +var _reactNative = require("react-native"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function CompatNativeSafeAreaProvider(_ref) { + let { + children, + style, + onInsetsChange + } = _ref; + const window = (0, _reactNative.useWindowDimensions)(); + React.useEffect(() => { + const insets = { + top: 0, + bottom: 0, + left: 0, + right: 0 + }; + const frame = { + x: 0, + y: 0, + width: window.width, + height: window.height + }; + // @ts-ignore: missing properties + onInsetsChange({ + nativeEvent: { + insets, + frame + } + }); + }, [onInsetsChange, window.height, window.width]); + return /*#__PURE__*/React.createElement(_reactNative.View, { + style: style + }, children); +} +//# sourceMappingURL=CompatNativeSafeAreaProvider.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js.map new file mode 100644 index 00000000..1543a683 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/CompatNativeSafeAreaProvider.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CompatNativeSafeAreaProvider","children","style","onInsetsChange","window","useWindowDimensions","React","useEffect","insets","top","bottom","left","right","frame","x","y","width","height","nativeEvent"],"sourceRoot":"../../src","sources":["CompatNativeSafeAreaProvider.tsx"],"mappings":";;;;;;AAAA;AACA;AAAyD;AAAA;AAGlD,SAASA,4BAA4B,OAIZ;EAAA,IAJa;IAC3CC,QAAQ;IACRC,KAAK;IACLC;EAC2B,CAAC;EAC5B,MAAMC,MAAM,GAAG,IAAAC,gCAAmB,GAAE;EACpCC,KAAK,CAACC,SAAS,CAAC,MAAM;IACpB,MAAMC,MAAM,GAAG;MACbC,GAAG,EAAE,CAAC;MACNC,MAAM,EAAE,CAAC;MACTC,IAAI,EAAE,CAAC;MACPC,KAAK,EAAE;IACT,CAAC;IACD,MAAMC,KAAK,GAAG;MACZC,CAAC,EAAE,CAAC;MACJC,CAAC,EAAE,CAAC;MACJC,KAAK,EAAEZ,MAAM,CAACY,KAAK;MACnBC,MAAM,EAAEb,MAAM,CAACa;IACjB,CAAC;IACD;IACAd,cAAc,CAAC;MAAEe,WAAW,EAAE;QAAEV,MAAM;QAAEK;MAAM;IAAE,CAAC,CAAC;EACpD,CAAC,EAAE,CAACV,cAAc,EAAEC,MAAM,CAACa,MAAM,EAAEb,MAAM,CAACY,KAAK,CAAC,CAAC;EACjD,oBAAO,oBAAC,iBAAI;IAAC,KAAK,EAAEd;EAAM,GAAED,QAAQ,CAAQ;AAC9C"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js new file mode 100644 index 00000000..97d85c6c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.initialWindowSafeAreaInsets = exports.initialWindowMetrics = void 0; +const initialWindowMetrics = null; + +/** + * @deprecated + */ +exports.initialWindowMetrics = initialWindowMetrics; +const initialWindowSafeAreaInsets = null; +exports.initialWindowSafeAreaInsets = initialWindowSafeAreaInsets; +//# sourceMappingURL=InitialWindow.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js.map new file mode 100644 index 00000000..3496435a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.js.map @@ -0,0 +1 @@ +{"version":3,"names":["initialWindowMetrics","initialWindowSafeAreaInsets"],"sourceRoot":"../../src","sources":["InitialWindow.ts"],"mappings":";;;;;;AAEO,MAAMA,oBAAoC,GAAG,IAAI;;AAExD;AACA;AACA;AAFA;AAGO,MAAMC,2BAA8C,GAAG,IAAI;AAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js new file mode 100644 index 00000000..5710d99c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.initialWindowSafeAreaInsets = exports.initialWindowMetrics = void 0; +var _NativeSafeAreaContext = _interopRequireDefault(require("./specs/NativeSafeAreaContext")); +var _NativeSafeAreaContex, _NativeSafeAreaContex2; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +const initialWindowMetrics = (_NativeSafeAreaContext.default === null || _NativeSafeAreaContext.default === void 0 ? void 0 : (_NativeSafeAreaContex = _NativeSafeAreaContext.default.getConstants) === null || _NativeSafeAreaContex === void 0 ? void 0 : (_NativeSafeAreaContex2 = _NativeSafeAreaContex.call(_NativeSafeAreaContext.default)) === null || _NativeSafeAreaContex2 === void 0 ? void 0 : _NativeSafeAreaContex2.initialWindowMetrics) ?? null; + +/** + * @deprecated + */ +exports.initialWindowMetrics = initialWindowMetrics; +const initialWindowSafeAreaInsets = initialWindowMetrics === null || initialWindowMetrics === void 0 ? void 0 : initialWindowMetrics.insets; +exports.initialWindowSafeAreaInsets = initialWindowSafeAreaInsets; +//# sourceMappingURL=InitialWindow.native.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js.map new file mode 100644 index 00000000..2f96ac4e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/InitialWindow.native.js.map @@ -0,0 +1 @@ +{"version":3,"names":["initialWindowMetrics","NativeSafeAreaContext","getConstants","initialWindowSafeAreaInsets","insets"],"sourceRoot":"../../src","sources":["InitialWindow.native.ts"],"mappings":";;;;;;AACA;AAAkE;AAAA;AAE3D,MAAMA,oBAAoB,GAAI,CAAAC,8BAAqB,aAArBA,8BAAqB,gDAArBA,8BAAqB,CAAEC,YAAY,oFAAnC,2BAAAD,8BAAqB,CAAkB,2DAAvC,uBACjCD,oBAAoB,KAAI,IAAuB;;AAEnD;AACA;AACA;AAFA;AAGO,MAAMG,2BAA2B,GAAGH,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEI,MAAM;AAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js new file mode 100644 index 00000000..0aa13123 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "NativeSafeAreaProvider", { + enumerable: true, + get: function () { + return _NativeSafeAreaProvider.default; + } +}); +var _NativeSafeAreaProvider = _interopRequireDefault(require("./specs/NativeSafeAreaProvider")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +//# sourceMappingURL=NativeSafeAreaProvider.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js.map new file mode 100644 index 00000000..b1f946d8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.tsx"],"mappings":";;;;;;;;;;;AAAA;AAAoE"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js new file mode 100644 index 00000000..8ad045b8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "NativeSafeAreaProvider", { + enumerable: true, + get: function () { + return _CompatNativeSafeAreaProvider.CompatNativeSafeAreaProvider; + } +}); +var _CompatNativeSafeAreaProvider = require("./CompatNativeSafeAreaProvider"); +//# sourceMappingURL=NativeSafeAreaProvider.macos.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js.map new file mode 100644 index 00000000..ce34f781 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.macos.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.macos.tsx"],"mappings":";;;;;;;;;;;AAAA"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js new file mode 100644 index 00000000..8c066caa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js @@ -0,0 +1,135 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NativeSafeAreaProvider = NativeSafeAreaProvider; +var React = _interopRequireWildcard(require("react")); +var _reactNative = require("react-native"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +/* eslint-env browser */ + +/** + * TODO: + * Currently insets and frame are based on the window and are not + * relative to the provider view. This is inconsistent with iOS and Android. + * However in most cases if the provider view covers the screen this is not + * an issue. + */ + +const CSSTransitions = { + WebkitTransition: 'webkitTransitionEnd', + Transition: 'transitionEnd', + MozTransition: 'transitionend', + MSTransition: 'msTransitionEnd', + OTransition: 'oTransitionEnd' +}; +function NativeSafeAreaProvider(_ref) { + let { + children, + style, + onInsetsChange + } = _ref; + React.useEffect(() => { + // Skip for SSR. + if (typeof document === 'undefined') { + return; + } + const element = createContextElement(); + document.body.appendChild(element); + const onEnd = () => { + const { + paddingTop, + paddingBottom, + paddingLeft, + paddingRight + } = window.getComputedStyle(element); + const insets = { + top: paddingTop ? parseInt(paddingTop, 10) : 0, + bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0, + left: paddingLeft ? parseInt(paddingLeft, 10) : 0, + right: paddingRight ? parseInt(paddingRight, 10) : 0 + }; + const frame = { + x: 0, + y: 0, + width: document.documentElement.offsetWidth, + height: document.documentElement.offsetHeight + }; + // @ts-ignore: missing properties + onInsetsChange({ + nativeEvent: { + insets, + frame + } + }); + }; + element.addEventListener(getSupportedTransitionEvent(), onEnd); + onEnd(); + return () => { + document.body.removeChild(element); + element.removeEventListener(getSupportedTransitionEvent(), onEnd); + }; + }, [onInsetsChange]); + return /*#__PURE__*/React.createElement(_reactNative.View, { + style: style + }, children); +} +let _supportedTransitionEvent = null; +function getSupportedTransitionEvent() { + if (_supportedTransitionEvent != null) { + return _supportedTransitionEvent; + } + const element = document.createElement('invalidtype'); + _supportedTransitionEvent = CSSTransitions.Transition; + for (const key in CSSTransitions) { + if (element.style[key] !== undefined) { + _supportedTransitionEvent = CSSTransitions[key]; + break; + } + } + return _supportedTransitionEvent; +} +let _supportedEnv = null; +function getSupportedEnv() { + if (_supportedEnv !== null) { + return _supportedEnv; + } + const { + CSS + } = window; + if (CSS && CSS.supports && CSS.supports('top: constant(safe-area-inset-top)')) { + _supportedEnv = 'constant'; + } else { + _supportedEnv = 'env'; + } + return _supportedEnv; +} +function getInset(side) { + return `${getSupportedEnv()}(safe-area-inset-${side})`; +} +function createContextElement() { + const element = document.createElement('div'); + const { + style + } = element; + style.position = 'fixed'; + style.left = '0'; + style.top = '0'; + style.width = '0'; + style.height = '0'; + style.zIndex = '-1'; + style.overflow = 'hidden'; + style.visibility = 'hidden'; + // Bacon: Anything faster than this and the callback will be invoked too early with the wrong insets + style.transitionDuration = '0.05s'; + style.transitionProperty = 'padding'; + style.transitionDelay = '0s'; + style.paddingTop = getInset('top'); + style.paddingBottom = getInset('bottom'); + style.paddingLeft = getInset('left'); + style.paddingRight = getInset('right'); + return element; +} +//# sourceMappingURL=NativeSafeAreaProvider.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js.map new file mode 100644 index 00000000..e859c68d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.web.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CSSTransitions","WebkitTransition","Transition","MozTransition","MSTransition","OTransition","NativeSafeAreaProvider","children","style","onInsetsChange","React","useEffect","document","element","createContextElement","body","appendChild","onEnd","paddingTop","paddingBottom","paddingLeft","paddingRight","window","getComputedStyle","insets","top","parseInt","bottom","left","right","frame","x","y","width","documentElement","offsetWidth","height","offsetHeight","nativeEvent","addEventListener","getSupportedTransitionEvent","removeChild","removeEventListener","_supportedTransitionEvent","createElement","key","undefined","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side","position","zIndex","overflow","visibility","transitionDuration","transitionProperty","transitionDelay"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.web.tsx"],"mappings":";;;;;;AAEA;AACA;AAAoC;AAAA;AAHpC;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,cAAsC,GAAG;EAC7CC,gBAAgB,EAAE,qBAAqB;EACvCC,UAAU,EAAE,eAAe;EAC3BC,aAAa,EAAE,eAAe;EAC9BC,YAAY,EAAE,iBAAiB;EAC/BC,WAAW,EAAE;AACf,CAAC;AAEM,SAASC,sBAAsB,OAIN;EAAA,IAJO;IACrCC,QAAQ;IACRC,KAAK;IACLC;EAC2B,CAAC;EAC5BC,KAAK,CAACC,SAAS,CAAC,MAAM;IACpB;IACA,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;MACnC;IACF;IAEA,MAAMC,OAAO,GAAGC,oBAAoB,EAAE;IACtCF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACH,OAAO,CAAC;IAClC,MAAMI,KAAK,GAAG,MAAM;MAClB,MAAM;QAAEC,UAAU;QAAEC,aAAa;QAAEC,WAAW;QAAEC;MAAa,CAAC,GAC5DC,MAAM,CAACC,gBAAgB,CAACV,OAAO,CAAC;MAElC,MAAMW,MAAM,GAAG;QACbC,GAAG,EAAEP,UAAU,GAAGQ,QAAQ,CAACR,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC;QAC9CS,MAAM,EAAER,aAAa,GAAGO,QAAQ,CAACP,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC;QACvDS,IAAI,EAAER,WAAW,GAAGM,QAAQ,CAACN,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC;QACjDS,KAAK,EAAER,YAAY,GAAGK,QAAQ,CAACL,YAAY,EAAE,EAAE,CAAC,GAAG;MACrD,CAAC;MACD,MAAMS,KAAK,GAAG;QACZC,CAAC,EAAE,CAAC;QACJC,CAAC,EAAE,CAAC;QACJC,KAAK,EAAErB,QAAQ,CAACsB,eAAe,CAACC,WAAW;QAC3CC,MAAM,EAAExB,QAAQ,CAACsB,eAAe,CAACG;MACnC,CAAC;MACD;MACA5B,cAAc,CAAC;QAAE6B,WAAW,EAAE;UAAEd,MAAM;UAAEM;QAAM;MAAE,CAAC,CAAC;IACpD,CAAC;IACDjB,OAAO,CAAC0B,gBAAgB,CAACC,2BAA2B,EAAE,EAAEvB,KAAK,CAAC;IAC9DA,KAAK,EAAE;IACP,OAAO,MAAM;MACXL,QAAQ,CAACG,IAAI,CAAC0B,WAAW,CAAC5B,OAAO,CAAC;MAClCA,OAAO,CAAC6B,mBAAmB,CAACF,2BAA2B,EAAE,EAAEvB,KAAK,CAAC;IACnE,CAAC;EACH,CAAC,EAAE,CAACR,cAAc,CAAC,CAAC;EAEpB,oBAAO,oBAAC,iBAAI;IAAC,KAAK,EAAED;EAAM,GAAED,QAAQ,CAAQ;AAC9C;AAEA,IAAIoC,yBAAoD,GAAG,IAAI;AAC/D,SAASH,2BAA2B,GAAW;EAC7C,IAAIG,yBAAyB,IAAI,IAAI,EAAE;IACrC,OAAOA,yBAAyB;EAClC;EACA,MAAM9B,OAAO,GAAGD,QAAQ,CAACgC,aAAa,CAAC,aAAa,CAAC;EAErDD,yBAAyB,GAAG3C,cAAc,CAACE,UAAU;EACrD,KAAK,MAAM2C,GAAG,IAAI7C,cAAc,EAAE;IAChC,IAAIa,OAAO,CAACL,KAAK,CAACqC,GAAG,CAA8B,KAAKC,SAAS,EAAE;MACjEH,yBAAyB,GAAG3C,cAAc,CAAC6C,GAAG,CAAC;MAC/C;IACF;EACF;EACA,OAAOF,yBAAyB;AAClC;AAIA,IAAII,aAA4B,GAAG,IAAI;AACvC,SAASC,eAAe,GAAW;EACjC,IAAID,aAAa,KAAK,IAAI,EAAE;IAC1B,OAAOA,aAAa;EACtB;EACA,MAAM;IAAEE;EAAI,CAAC,GAAG3B,MAAM;EACtB,IACE2B,GAAG,IACHA,GAAG,CAACC,QAAQ,IACZD,GAAG,CAACC,QAAQ,CAAC,oCAAoC,CAAC,EAClD;IACAH,aAAa,GAAG,UAAU;EAC5B,CAAC,MAAM;IACLA,aAAa,GAAG,KAAK;EACvB;EACA,OAAOA,aAAa;AACtB;AAEA,SAASI,QAAQ,CAACC,IAAY,EAAU;EACtC,OAAQ,GAAEJ,eAAe,EAAG,oBAAmBI,IAAK,GAAE;AACxD;AAEA,SAAStC,oBAAoB,GAAgB;EAC3C,MAAMD,OAAO,GAAGD,QAAQ,CAACgC,aAAa,CAAC,KAAK,CAAC;EAC7C,MAAM;IAAEpC;EAAM,CAAC,GAAGK,OAAO;EACzBL,KAAK,CAAC6C,QAAQ,GAAG,OAAO;EACxB7C,KAAK,CAACoB,IAAI,GAAG,GAAG;EAChBpB,KAAK,CAACiB,GAAG,GAAG,GAAG;EACfjB,KAAK,CAACyB,KAAK,GAAG,GAAG;EACjBzB,KAAK,CAAC4B,MAAM,GAAG,GAAG;EAClB5B,KAAK,CAAC8C,MAAM,GAAG,IAAI;EACnB9C,KAAK,CAAC+C,QAAQ,GAAG,QAAQ;EACzB/C,KAAK,CAACgD,UAAU,GAAG,QAAQ;EAC3B;EACAhD,KAAK,CAACiD,kBAAkB,GAAG,OAAO;EAClCjD,KAAK,CAACkD,kBAAkB,GAAG,SAAS;EACpClD,KAAK,CAACmD,eAAe,GAAG,IAAI;EAC5BnD,KAAK,CAACU,UAAU,GAAGiC,QAAQ,CAAC,KAAK,CAAC;EAClC3C,KAAK,CAACW,aAAa,GAAGgC,QAAQ,CAAC,QAAQ,CAAC;EACxC3C,KAAK,CAACY,WAAW,GAAG+B,QAAQ,CAAC,MAAM,CAAC;EACpC3C,KAAK,CAACa,YAAY,GAAG8B,QAAQ,CAAC,OAAO,CAAC;EACtC,OAAOtC,OAAO;AAChB"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js new file mode 100644 index 00000000..4bdcf06c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "NativeSafeAreaProvider", { + enumerable: true, + get: function () { + return _CompatNativeSafeAreaProvider.CompatNativeSafeAreaProvider; + } +}); +var _CompatNativeSafeAreaProvider = require("./CompatNativeSafeAreaProvider"); +//# sourceMappingURL=NativeSafeAreaProvider.windows.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js.map new file mode 100644 index 00000000..99e2cdae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/NativeSafeAreaProvider.windows.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.windows.tsx"],"mappings":";;;;;;;;;;;AAAA"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js new file mode 100644 index 00000000..18d9622d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js @@ -0,0 +1,6 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +//# sourceMappingURL=SafeArea.types.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js.map new file mode 100644 index 00000000..c4c976d4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeArea.types.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["SafeArea.types.ts"],"mappings":""} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js new file mode 100644 index 00000000..3785b7bd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js @@ -0,0 +1,128 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SafeAreaInsetsContext = exports.SafeAreaFrameContext = exports.SafeAreaContext = exports.SafeAreaConsumer = void 0; +exports.SafeAreaProvider = SafeAreaProvider; +exports.useSafeArea = useSafeArea; +exports.useSafeAreaFrame = useSafeAreaFrame; +exports.useSafeAreaInsets = useSafeAreaInsets; +exports.withSafeAreaInsets = withSafeAreaInsets; +var React = _interopRequireWildcard(require("react")); +var _reactNative = require("react-native"); +var _NativeSafeAreaProvider = require("./NativeSafeAreaProvider"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +const isDev = process.env.NODE_ENV !== 'production'; +const SafeAreaInsetsContext = /*#__PURE__*/React.createContext(null); +exports.SafeAreaInsetsContext = SafeAreaInsetsContext; +if (isDev) { + SafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext'; +} +const SafeAreaFrameContext = /*#__PURE__*/React.createContext(null); +exports.SafeAreaFrameContext = SafeAreaFrameContext; +if (isDev) { + SafeAreaFrameContext.displayName = 'SafeAreaFrameContext'; +} +function SafeAreaProvider(_ref) { + let { + children, + initialMetrics, + initialSafeAreaInsets, + style, + ...others + } = _ref; + const parentInsets = useParentSafeAreaInsets(); + const parentFrame = useParentSafeAreaFrame(); + const [insets, setInsets] = React.useState((initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.insets) ?? initialSafeAreaInsets ?? parentInsets ?? null); + const [frame, setFrame] = React.useState((initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.frame) ?? parentFrame ?? { + // Backwards compat so we render anyway if we don't have frame. + x: 0, + y: 0, + width: _reactNative.Dimensions.get('window').width, + height: _reactNative.Dimensions.get('window').height + }); + const onInsetsChange = React.useCallback(event => { + const { + nativeEvent: { + frame: nextFrame, + insets: nextInsets + } + } = event; + if ( + // Backwards compat with old native code that won't send frame. + nextFrame && (nextFrame.height !== frame.height || nextFrame.width !== frame.width || nextFrame.x !== frame.x || nextFrame.y !== frame.y)) { + setFrame(nextFrame); + } + if (!insets || nextInsets.bottom !== insets.bottom || nextInsets.left !== insets.left || nextInsets.right !== insets.right || nextInsets.top !== insets.top) { + setInsets(nextInsets); + } + }, [frame, insets]); + return /*#__PURE__*/React.createElement(_NativeSafeAreaProvider.NativeSafeAreaProvider, _extends({ + style: [styles.fill, style], + onInsetsChange: onInsetsChange + }, others), insets != null ? /*#__PURE__*/React.createElement(SafeAreaFrameContext.Provider, { + value: frame + }, /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Provider, { + value: insets + }, children)) : null); +} +const styles = _reactNative.StyleSheet.create({ + fill: { + flex: 1 + } +}); +function useParentSafeAreaInsets() { + return React.useContext(SafeAreaInsetsContext); +} +function useParentSafeAreaFrame() { + return React.useContext(SafeAreaFrameContext); +} +const NO_INSETS_ERROR = 'No safe area value available. Make sure you are rendering `` at the top of your app.'; +function useSafeAreaInsets() { + const safeArea = React.useContext(SafeAreaInsetsContext); + if (safeArea == null) { + throw new Error(NO_INSETS_ERROR); + } + return safeArea; +} +function useSafeAreaFrame() { + const frame = React.useContext(SafeAreaFrameContext); + if (frame == null) { + throw new Error(NO_INSETS_ERROR); + } + return frame; +} +function withSafeAreaInsets(WrappedComponent) { + return /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Consumer, null, insets => { + if (insets == null) { + throw new Error(NO_INSETS_ERROR); + } + return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, props, { + insets: insets, + ref: ref + })); + })); +} + +/** + * @deprecated + */ +function useSafeArea() { + return useSafeAreaInsets(); +} + +/** + * @deprecated + */ +const SafeAreaConsumer = SafeAreaInsetsContext.Consumer; + +/** + * @deprecated + */ +exports.SafeAreaConsumer = SafeAreaConsumer; +const SafeAreaContext = SafeAreaInsetsContext; +exports.SafeAreaContext = SafeAreaContext; +//# sourceMappingURL=SafeAreaContext.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js.map new file mode 100644 index 00000000..60e15d2c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaContext.js.map @@ -0,0 +1 @@ +{"version":3,"names":["isDev","process","env","NODE_ENV","SafeAreaInsetsContext","React","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","children","initialMetrics","initialSafeAreaInsets","style","others","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","Dimensions","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","bottom","left","right","top","styles","fill","StyleSheet","create","flex","useContext","NO_INSETS_ERROR","useSafeAreaInsets","safeArea","Error","useSafeAreaFrame","withSafeAreaInsets","WrappedComponent","forwardRef","props","ref","useSafeArea","SafeAreaConsumer","Consumer","SafeAreaContext"],"sourceRoot":"../../src","sources":["SafeAreaContext.tsx"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AAAkE;AAAA;AAAA;AAQlE,MAAMA,KAAK,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY;AAE5C,MAAMC,qBAAqB,gBAAGC,KAAK,CAACC,aAAa,CACtD,IAAI,CACL;AAAC;AACF,IAAIN,KAAK,EAAE;EACTI,qBAAqB,CAACG,WAAW,GAAG,uBAAuB;AAC7D;AAEO,MAAMC,oBAAoB,gBAAGH,KAAK,CAACC,aAAa,CAAc,IAAI,CAAC;AAAC;AAC3E,IAAIN,KAAK,EAAE;EACTQ,oBAAoB,CAACD,WAAW,GAAG,sBAAsB;AAC3D;AAWO,SAASE,gBAAgB,OAMN;EAAA,IANO;IAC/BC,QAAQ;IACRC,cAAc;IACdC,qBAAqB;IACrBC,KAAK;IACL,GAAGC;EACkB,CAAC;EACtB,MAAMC,YAAY,GAAGC,uBAAuB,EAAE;EAC9C,MAAMC,WAAW,GAAGC,sBAAsB,EAAE;EAC5C,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGf,KAAK,CAACgB,QAAQ,CACxC,CAAAV,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEQ,MAAM,KAAIP,qBAAqB,IAAIG,YAAY,IAAI,IAAI,CACxE;EACD,MAAM,CAACO,KAAK,EAAEC,QAAQ,CAAC,GAAGlB,KAAK,CAACgB,QAAQ,CACtC,CAAAV,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEW,KAAK,KACnBL,WAAW,IAAI;IACb;IACAO,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,KAAK,EAAEC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACF,KAAK;IACrCG,MAAM,EAAEF,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC;EACnC,CAAC,CACJ;EACD,MAAMC,cAAc,GAAGzB,KAAK,CAAC0B,WAAW,CACrCC,KAAwB,IAAK;IAC5B,MAAM;MACJC,WAAW,EAAE;QAAEX,KAAK,EAAEY,SAAS;QAAEf,MAAM,EAAEgB;MAAW;IACtD,CAAC,GAAGH,KAAK;IAET;IACE;IACAE,SAAS,KACRA,SAAS,CAACL,MAAM,KAAKP,KAAK,CAACO,MAAM,IAChCK,SAAS,CAACR,KAAK,KAAKJ,KAAK,CAACI,KAAK,IAC/BQ,SAAS,CAACV,CAAC,KAAKF,KAAK,CAACE,CAAC,IACvBU,SAAS,CAACT,CAAC,KAAKH,KAAK,CAACG,CAAC,CAAC,EAC1B;MACAF,QAAQ,CAACW,SAAS,CAAC;IACrB;IAEA,IACE,CAACf,MAAM,IACPgB,UAAU,CAACC,MAAM,KAAKjB,MAAM,CAACiB,MAAM,IACnCD,UAAU,CAACE,IAAI,KAAKlB,MAAM,CAACkB,IAAI,IAC/BF,UAAU,CAACG,KAAK,KAAKnB,MAAM,CAACmB,KAAK,IACjCH,UAAU,CAACI,GAAG,KAAKpB,MAAM,CAACoB,GAAG,EAC7B;MACAnB,SAAS,CAACe,UAAU,CAAC;IACvB;EACF,CAAC,EACD,CAACb,KAAK,EAAEH,MAAM,CAAC,CAChB;EAED,oBACE,oBAAC,8CAAsB;IACrB,KAAK,EAAE,CAACqB,MAAM,CAACC,IAAI,EAAE5B,KAAK,CAAE;IAC5B,cAAc,EAAEiB;EAAe,GAC3BhB,MAAM,GAETK,MAAM,IAAI,IAAI,gBACb,oBAAC,oBAAoB,CAAC,QAAQ;IAAC,KAAK,EAAEG;EAAM,gBAC1C,oBAAC,qBAAqB,CAAC,QAAQ;IAAC,KAAK,EAAEH;EAAO,GAC3CT,QAAQ,CACsB,CACH,GAC9B,IAAI,CACe;AAE7B;AAEA,MAAM8B,MAAM,GAAGE,uBAAU,CAACC,MAAM,CAAC;EAC/BF,IAAI,EAAE;IAAEG,IAAI,EAAE;EAAE;AAClB,CAAC,CAAC;AAEF,SAAS5B,uBAAuB,GAAsB;EACpD,OAAOX,KAAK,CAACwC,UAAU,CAACzC,qBAAqB,CAAC;AAChD;AAEA,SAASc,sBAAsB,GAAgB;EAC7C,OAAOb,KAAK,CAACwC,UAAU,CAACrC,oBAAoB,CAAC;AAC/C;AAEA,MAAMsC,eAAe,GACnB,wGAAwG;AAEnG,SAASC,iBAAiB,GAAe;EAC9C,MAAMC,QAAQ,GAAG3C,KAAK,CAACwC,UAAU,CAACzC,qBAAqB,CAAC;EACxD,IAAI4C,QAAQ,IAAI,IAAI,EAAE;IACpB,MAAM,IAAIC,KAAK,CAACH,eAAe,CAAC;EAClC;EACA,OAAOE,QAAQ;AACjB;AAEO,SAASE,gBAAgB,GAAS;EACvC,MAAM5B,KAAK,GAAGjB,KAAK,CAACwC,UAAU,CAACrC,oBAAoB,CAAC;EACpD,IAAIc,KAAK,IAAI,IAAI,EAAE;IACjB,MAAM,IAAI2B,KAAK,CAACH,eAAe,CAAC;EAClC;EACA,OAAOxB,KAAK;AACd;AAMO,SAAS6B,kBAAkB,CAChCC,gBAAkE,EAGlE;EACA,oBAAO/C,KAAK,CAACgD,UAAU,CAAC,CAACC,KAAQ,EAAEC,GAAuB,kBACxD,oBAAC,qBAAqB,CAAC,QAAQ,QAC3BpC,MAAM,IAAK;IACX,IAAIA,MAAM,IAAI,IAAI,EAAE;MAClB,MAAM,IAAI8B,KAAK,CAACH,eAAe,CAAC;IAClC;IACA,oBAAO,oBAAC,gBAAgB,eAAKQ,KAAK;MAAE,MAAM,EAAEnC,MAAO;MAAC,GAAG,EAAEoC;IAAI,GAAG;EAClE,CAAC,CAEJ,CAAC;AACJ;;AAEA;AACA;AACA;AACO,SAASC,WAAW,GAAe;EACxC,OAAOT,iBAAiB,EAAE;AAC5B;;AAEA;AACA;AACA;AACO,MAAMU,gBAAgB,GAAGrD,qBAAqB,CAACsD,QAAQ;;AAE9D;AACA;AACA;AAFA;AAGO,MAAMC,eAAe,GAAGvD,qBAAqB;AAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js new file mode 100644 index 00000000..952dd4ed --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SafeAreaView = void 0; +var React = _interopRequireWildcard(require("react")); +var _NativeSafeAreaView = _interopRequireDefault(require("./specs/NativeSafeAreaView")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +const SafeAreaView = /*#__PURE__*/React.forwardRef((_ref, ref) => { + let { + edges, + ...props + } = _ref; + return /*#__PURE__*/React.createElement(_NativeSafeAreaView.default, _extends({}, props, { + // Codegen doesn't support default values for array types so + // set it here. + edges: edges ?? ['bottom', 'left', 'right', 'top'], + ref: ref + })); +}); +exports.SafeAreaView = SafeAreaView; +//# sourceMappingURL=SafeAreaView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js.map new file mode 100644 index 00000000..7a0072f4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.js.map @@ -0,0 +1 @@ +{"version":3,"names":["SafeAreaView","React","forwardRef","ref","edges","props"],"sourceRoot":"../../src","sources":["SafeAreaView.tsx"],"mappings":";;;;;;AAAA;AAEA;AAA4D;AAAA;AAAA;AAAA;AAMrD,MAAMA,YAEZ,gBAAGC,KAAK,CAACC,UAAU,CAClB,OAAsBC,GAAG,KAAK;EAAA,IAA7B;IAAEC,KAAK;IAAE,GAAGC;EAAM,CAAC;EAClB,oBACE,oBAAC,2BAAkB,eACbA,KAAK;IACT;IACA;IACA,KAAK,EAAED,KAAK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAE;IACnD,GAAG,EAAED;EAAI,GACT;AAEN,CAAC,CACF;AAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js new file mode 100644 index 00000000..cbb19de0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SafeAreaView = void 0; +var _reactNative = require("react-native"); +const SafeAreaView = _reactNative.View; +exports.SafeAreaView = SafeAreaView; +//# sourceMappingURL=SafeAreaView.macos.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js.map new file mode 100644 index 00000000..5a81a5c1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.macos.js.map @@ -0,0 +1 @@ +{"version":3,"names":["SafeAreaView","View"],"sourceRoot":"../../src","sources":["SafeAreaView.macos.tsx"],"mappings":";;;;;;AAAA;AAEO,MAAMA,YAAY,GAAGC,iBAAI;AAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js new file mode 100644 index 00000000..b60d0c09 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js @@ -0,0 +1,83 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SafeAreaView = SafeAreaView; +var React = _interopRequireWildcard(require("react")); +var _reactNative = require("react-native"); +var _SafeAreaContext = require("./SafeAreaContext"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +// prettier-ignore +const TOP = 0b1000, + RIGHT = 0b0100, + BOTTOM = 0b0010, + LEFT = 0b0001, + ALL = 0b1111; + +/* eslint-disable no-bitwise */ + +const edgeBitmaskMap = { + top: TOP, + right: RIGHT, + bottom: BOTTOM, + left: LEFT +}; +function SafeAreaView(_ref) { + let { + style = {}, + mode, + edges, + ...rest + } = _ref; + const insets = (0, _SafeAreaContext.useSafeAreaInsets)(); + const edgeBitmask = edges != null ? edges.reduce((accum, edge) => accum | edgeBitmaskMap[edge], 0) : ALL; + const appliedStyle = React.useMemo(() => { + const insetTop = edgeBitmask & TOP ? insets.top : 0; + const insetRight = edgeBitmask & RIGHT ? insets.right : 0; + const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0; + const insetLeft = edgeBitmask & LEFT ? insets.left : 0; + const flatStyle = _reactNative.StyleSheet.flatten(style); + if (mode === 'margin') { + const { + margin = 0, + marginVertical = margin, + marginHorizontal = margin, + marginTop = marginVertical, + marginRight = marginHorizontal, + marginBottom = marginVertical, + marginLeft = marginHorizontal + } = flatStyle; + const marginStyle = { + marginTop: marginTop + insetTop, + marginRight: marginRight + insetRight, + marginBottom: marginBottom + insetBottom, + marginLeft: marginLeft + insetLeft + }; + return [style, marginStyle]; + } else { + const { + padding = 0, + paddingVertical = padding, + paddingHorizontal = padding, + paddingTop = paddingVertical, + paddingRight = paddingHorizontal, + paddingBottom = paddingVertical, + paddingLeft = paddingHorizontal + } = flatStyle; + const paddingStyle = { + paddingTop: paddingTop + insetTop, + paddingRight: paddingRight + insetRight, + paddingBottom: paddingBottom + insetBottom, + paddingLeft: paddingLeft + insetLeft + }; + return [style, paddingStyle]; + } + }, [style, insets, mode, edgeBitmask]); + return /*#__PURE__*/React.createElement(_reactNative.View, _extends({ + style: appliedStyle + }, rest)); +} +//# sourceMappingURL=SafeAreaView.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js.map new file mode 100644 index 00000000..e0d1b4c0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.web.js.map @@ -0,0 +1 @@ +{"version":3,"names":["TOP","RIGHT","BOTTOM","LEFT","ALL","edgeBitmaskMap","top","right","bottom","left","SafeAreaView","style","mode","edges","rest","insets","useSafeAreaInsets","edgeBitmask","reduce","accum","edge","appliedStyle","React","useMemo","insetTop","insetRight","insetBottom","insetLeft","flatStyle","StyleSheet","flatten","margin","marginVertical","marginHorizontal","marginTop","marginRight","marginBottom","marginLeft","marginStyle","padding","paddingVertical","paddingHorizontal","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingStyle"],"sourceRoot":"../../src","sources":["SafeAreaView.web.tsx"],"mappings":";;;;;;AAAA;AACA;AACA;AAAsD;AAAA;AAAA;AAGtD;AACA,MAAMA,GAAG,GAAM,MAAM;EACfC,KAAK,GAAI,MAAM;EACfC,MAAM,GAAG,MAAM;EACfC,IAAI,GAAK,MAAM;EACfC,GAAG,GAAM,MAAM;;AAErB;;AAEA,MAAMC,cAAoC,GAAG;EAC3CC,GAAG,EAAEN,GAAG;EACRO,KAAK,EAAEN,KAAK;EACZO,MAAM,EAAEN,MAAM;EACdO,IAAI,EAAEN;AACR,CAAC;AAEM,SAASO,YAAY,OAKA;EAAA,IALC;IAC3BC,KAAK,GAAG,CAAC,CAAC;IACVC,IAAI;IACJC,KAAK;IACL,GAAGC;EACoB,CAAC;EACxB,MAAMC,MAAM,GAAG,IAAAC,kCAAiB,GAAE;EAElC,MAAMC,WAAW,GACfJ,KAAK,IAAI,IAAI,GACTA,KAAK,CAACK,MAAM,CAAC,CAACC,KAAK,EAAEC,IAAI,KAAKD,KAAK,GAAGd,cAAc,CAACe,IAAI,CAAC,EAAE,CAAC,CAAC,GAC9DhB,GAAG;EAET,MAAMiB,YAAY,GAAGC,KAAK,CAACC,OAAO,CAAC,MAAM;IACvC,MAAMC,QAAQ,GAAGP,WAAW,GAAGjB,GAAG,GAAGe,MAAM,CAACT,GAAG,GAAG,CAAC;IACnD,MAAMmB,UAAU,GAAGR,WAAW,GAAGhB,KAAK,GAAGc,MAAM,CAACR,KAAK,GAAG,CAAC;IACzD,MAAMmB,WAAW,GAAGT,WAAW,GAAGf,MAAM,GAAGa,MAAM,CAACP,MAAM,GAAG,CAAC;IAC5D,MAAMmB,SAAS,GAAGV,WAAW,GAAGd,IAAI,GAAGY,MAAM,CAACN,IAAI,GAAG,CAAC;IAEtD,MAAMmB,SAAS,GAAGC,uBAAU,CAACC,OAAO,CAACnB,KAAK,CAA2B;IAErE,IAAIC,IAAI,KAAK,QAAQ,EAAE;MACrB,MAAM;QACJmB,MAAM,GAAG,CAAC;QACVC,cAAc,GAAGD,MAAM;QACvBE,gBAAgB,GAAGF,MAAM;QACzBG,SAAS,GAAGF,cAAc;QAC1BG,WAAW,GAAGF,gBAAgB;QAC9BG,YAAY,GAAGJ,cAAc;QAC7BK,UAAU,GAAGJ;MACf,CAAC,GAAGL,SAAS;MAEb,MAAMU,WAAW,GAAG;QAClBJ,SAAS,EAAEA,SAAS,GAAGV,QAAQ;QAC/BW,WAAW,EAAEA,WAAW,GAAGV,UAAU;QACrCW,YAAY,EAAEA,YAAY,GAAGV,WAAW;QACxCW,UAAU,EAAEA,UAAU,GAAGV;MAC3B,CAAC;MAED,OAAO,CAAChB,KAAK,EAAE2B,WAAW,CAAC;IAC7B,CAAC,MAAM;MACL,MAAM;QACJC,OAAO,GAAG,CAAC;QACXC,eAAe,GAAGD,OAAO;QACzBE,iBAAiB,GAAGF,OAAO;QAC3BG,UAAU,GAAGF,eAAe;QAC5BG,YAAY,GAAGF,iBAAiB;QAChCG,aAAa,GAAGJ,eAAe;QAC/BK,WAAW,GAAGJ;MAChB,CAAC,GAAGb,SAAS;MAEb,MAAMkB,YAAY,GAAG;QACnBJ,UAAU,EAAEA,UAAU,GAAGlB,QAAQ;QACjCmB,YAAY,EAAEA,YAAY,GAAGlB,UAAU;QACvCmB,aAAa,EAAEA,aAAa,GAAGlB,WAAW;QAC1CmB,WAAW,EAAEA,WAAW,GAAGlB;MAC7B,CAAC;MAED,OAAO,CAAChB,KAAK,EAAEmC,YAAY,CAAC;IAC9B;EACF,CAAC,EAAE,CAACnC,KAAK,EAAEI,MAAM,EAAEH,IAAI,EAAEK,WAAW,CAAC,CAAC;EAEtC,oBAAO,oBAAC,iBAAI;IAAC,KAAK,EAAEI;EAAa,GAAKP,IAAI,EAAI;AAChD"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js new file mode 100644 index 00000000..3bcb294b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SafeAreaView = void 0; +var _reactNative = require("react-native"); +const SafeAreaView = _reactNative.View; +exports.SafeAreaView = SafeAreaView; +//# sourceMappingURL=SafeAreaView.windows.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js.map new file mode 100644 index 00000000..b5077ac7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/SafeAreaView.windows.js.map @@ -0,0 +1 @@ +{"version":3,"names":["SafeAreaView","View"],"sourceRoot":"../../src","sources":["SafeAreaView.windows.tsx"],"mappings":";;;;;;AAAA;AAEO,MAAMA,YAAY,GAAGC,iBAAI;AAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js new file mode 100644 index 00000000..b5722a70 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js @@ -0,0 +1,50 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var _SafeAreaContext = require("./SafeAreaContext"); +Object.keys(_SafeAreaContext).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _SafeAreaContext[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _SafeAreaContext[key]; + } + }); +}); +var _SafeAreaView = require("./SafeAreaView"); +Object.keys(_SafeAreaView).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _SafeAreaView[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _SafeAreaView[key]; + } + }); +}); +var _InitialWindow = require("./InitialWindow"); +Object.keys(_InitialWindow).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _InitialWindow[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _InitialWindow[key]; + } + }); +}); +var _SafeArea = require("./SafeArea.types"); +Object.keys(_SafeArea).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _SafeArea[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _SafeArea[key]; + } + }); +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js.map new file mode 100644 index 00000000..1caa9f70 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js new file mode 100644 index 00000000..e978f396 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var TurboModuleRegistry = _interopRequireWildcard(require("react-native/Libraries/TurboModule/TurboModuleRegistry")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +// @ts-expect-error +var _default = TurboModuleRegistry.get('RNCSafeAreaContext'); +exports.default = _default; +//# sourceMappingURL=NativeSafeAreaContext.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js.map new file mode 100644 index 00000000..ab553d3d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaContext.js.map @@ -0,0 +1 @@ +{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeSafeAreaContext.ts"],"mappings":";;;;;;AAEA;AAA8F;AAAA;AAqB9F;AAAA,eACeA,mBAAmB,CAACC,GAAG,CAAO,oBAAoB,CAAC;AAAA"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js new file mode 100644 index 00000000..b8f100b1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _default = (0, _codegenNativeComponent.default)('RNCSafeAreaProvider'); +exports.default = _default; +//# sourceMappingURL=NativeSafeAreaProvider.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js.map new file mode 100644 index 00000000..b10d2bd9 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaProvider.js.map @@ -0,0 +1 @@ +{"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.ts"],"mappings":";;;;;;AAIA;AAA6F;AAAA,eAsB9E,IAAAA,+BAAsB,EACnC,qBAAqB,CACtB;AAAA"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js new file mode 100644 index 00000000..9f17f412 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _codegenNativeComponent = _interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeComponent")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _default = (0, _codegenNativeComponent.default)('RNCSafeAreaView', { + interfaceOnly: true +}); +exports.default = _default; +//# sourceMappingURL=NativeSafeAreaView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js.map new file mode 100644 index 00000000..0d23700f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/commonjs/specs/NativeSafeAreaView.js.map @@ -0,0 +1 @@ +{"version":3,"names":["codegenNativeComponent","interfaceOnly"],"sourceRoot":"../../src","sources":["NativeSafeAreaView.ts"],"mappings":";;;;;;AAAA;AAA6F;AAAA,eAU9E,IAAAA,+BAAsB,EAAc,iBAAiB,EAAE;EACpEC,aAAa,EAAE;AACjB,CAAC,CAAC;AAAA"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js new file mode 100644 index 00000000..1730ec19 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js @@ -0,0 +1,35 @@ +import * as React from 'react'; +import { useWindowDimensions, View } from 'react-native'; +export function CompatNativeSafeAreaProvider(_ref) { + let { + children, + style, + onInsetsChange + } = _ref; + const window = useWindowDimensions(); + React.useEffect(() => { + const insets = { + top: 0, + bottom: 0, + left: 0, + right: 0 + }; + const frame = { + x: 0, + y: 0, + width: window.width, + height: window.height + }; + // @ts-ignore: missing properties + onInsetsChange({ + nativeEvent: { + insets, + frame + } + }); + }, [onInsetsChange, window.height, window.width]); + return /*#__PURE__*/React.createElement(View, { + style: style + }, children); +} +//# sourceMappingURL=CompatNativeSafeAreaProvider.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js.map new file mode 100644 index 00000000..6c0a94bd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/CompatNativeSafeAreaProvider.js.map @@ -0,0 +1 @@ +{"version":3,"names":["React","useWindowDimensions","View","CompatNativeSafeAreaProvider","children","style","onInsetsChange","window","useEffect","insets","top","bottom","left","right","frame","x","y","width","height","nativeEvent"],"sourceRoot":"../../src","sources":["CompatNativeSafeAreaProvider.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,mBAAmB,EAAEC,IAAI,QAAQ,cAAc;AAGxD,OAAO,SAASC,4BAA4B,OAIZ;EAAA,IAJa;IAC3CC,QAAQ;IACRC,KAAK;IACLC;EAC2B,CAAC;EAC5B,MAAMC,MAAM,GAAGN,mBAAmB,EAAE;EACpCD,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpB,MAAMC,MAAM,GAAG;MACbC,GAAG,EAAE,CAAC;MACNC,MAAM,EAAE,CAAC;MACTC,IAAI,EAAE,CAAC;MACPC,KAAK,EAAE;IACT,CAAC;IACD,MAAMC,KAAK,GAAG;MACZC,CAAC,EAAE,CAAC;MACJC,CAAC,EAAE,CAAC;MACJC,KAAK,EAAEV,MAAM,CAACU,KAAK;MACnBC,MAAM,EAAEX,MAAM,CAACW;IACjB,CAAC;IACD;IACAZ,cAAc,CAAC;MAAEa,WAAW,EAAE;QAAEV,MAAM;QAAEK;MAAM;IAAE,CAAC,CAAC;EACpD,CAAC,EAAE,CAACR,cAAc,EAAEC,MAAM,CAACW,MAAM,EAAEX,MAAM,CAACU,KAAK,CAAC,CAAC;EACjD,oBAAO,oBAAC,IAAI;IAAC,KAAK,EAAEZ;EAAM,GAAED,QAAQ,CAAQ;AAC9C"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js new file mode 100644 index 00000000..700823b6 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js @@ -0,0 +1,7 @@ +export const initialWindowMetrics = null; + +/** + * @deprecated + */ +export const initialWindowSafeAreaInsets = null; +//# sourceMappingURL=InitialWindow.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js.map new file mode 100644 index 00000000..e1ed3e2d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.js.map @@ -0,0 +1 @@ +{"version":3,"names":["initialWindowMetrics","initialWindowSafeAreaInsets"],"sourceRoot":"../../src","sources":["InitialWindow.ts"],"mappings":"AAEA,OAAO,MAAMA,oBAAoC,GAAG,IAAI;;AAExD;AACA;AACA;AACA,OAAO,MAAMC,2BAA8C,GAAG,IAAI"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js new file mode 100644 index 00000000..309853ce --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js @@ -0,0 +1,9 @@ +var _NativeSafeAreaContex, _NativeSafeAreaContex2; +import NativeSafeAreaContext from './specs/NativeSafeAreaContext'; +export const initialWindowMetrics = (NativeSafeAreaContext === null || NativeSafeAreaContext === void 0 ? void 0 : (_NativeSafeAreaContex = NativeSafeAreaContext.getConstants) === null || _NativeSafeAreaContex === void 0 ? void 0 : (_NativeSafeAreaContex2 = _NativeSafeAreaContex.call(NativeSafeAreaContext)) === null || _NativeSafeAreaContex2 === void 0 ? void 0 : _NativeSafeAreaContex2.initialWindowMetrics) ?? null; + +/** + * @deprecated + */ +export const initialWindowSafeAreaInsets = initialWindowMetrics === null || initialWindowMetrics === void 0 ? void 0 : initialWindowMetrics.insets; +//# sourceMappingURL=InitialWindow.native.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js.map new file mode 100644 index 00000000..6bb416f7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/InitialWindow.native.js.map @@ -0,0 +1 @@ +{"version":3,"names":["NativeSafeAreaContext","initialWindowMetrics","getConstants","initialWindowSafeAreaInsets","insets"],"sourceRoot":"../../src","sources":["InitialWindow.native.ts"],"mappings":";AACA,OAAOA,qBAAqB,MAAM,+BAA+B;AAEjE,OAAO,MAAMC,oBAAoB,GAAI,CAAAD,qBAAqB,aAArBA,qBAAqB,gDAArBA,qBAAqB,CAAEE,YAAY,oFAAnC,2BAAAF,qBAAqB,CAAkB,2DAAvC,uBACjCC,oBAAoB,KAAI,IAAuB;;AAEnD;AACA;AACA;AACA,OAAO,MAAME,2BAA2B,GAAGF,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEG,MAAM"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js new file mode 100644 index 00000000..06c8aa6e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js @@ -0,0 +1,3 @@ +import NativeSafeAreaProvider from './specs/NativeSafeAreaProvider'; +export { NativeSafeAreaProvider }; +//# sourceMappingURL=NativeSafeAreaProvider.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js.map new file mode 100644 index 00000000..5b2cb1e5 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.js.map @@ -0,0 +1 @@ +{"version":3,"names":["NativeSafeAreaProvider"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.tsx"],"mappings":"AAAA,OAAOA,sBAAsB,MAAM,gCAAgC;AAEnE,SAASA,sBAAsB"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js new file mode 100644 index 00000000..c2588890 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js @@ -0,0 +1,2 @@ +export { CompatNativeSafeAreaProvider as NativeSafeAreaProvider } from './CompatNativeSafeAreaProvider'; +//# sourceMappingURL=NativeSafeAreaProvider.macos.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js.map new file mode 100644 index 00000000..6ac43e2c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.macos.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CompatNativeSafeAreaProvider","NativeSafeAreaProvider"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.macos.tsx"],"mappings":"AAAA,SAASA,4BAA4B,IAAIC,sBAAsB,QAAQ,gCAAgC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js new file mode 100644 index 00000000..42a1c6ce --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js @@ -0,0 +1,127 @@ +/* eslint-env browser */ + +import * as React from 'react'; +import { View } from 'react-native'; +/** + * TODO: + * Currently insets and frame are based on the window and are not + * relative to the provider view. This is inconsistent with iOS and Android. + * However in most cases if the provider view covers the screen this is not + * an issue. + */ + +const CSSTransitions = { + WebkitTransition: 'webkitTransitionEnd', + Transition: 'transitionEnd', + MozTransition: 'transitionend', + MSTransition: 'msTransitionEnd', + OTransition: 'oTransitionEnd' +}; +export function NativeSafeAreaProvider(_ref) { + let { + children, + style, + onInsetsChange + } = _ref; + React.useEffect(() => { + // Skip for SSR. + if (typeof document === 'undefined') { + return; + } + const element = createContextElement(); + document.body.appendChild(element); + const onEnd = () => { + const { + paddingTop, + paddingBottom, + paddingLeft, + paddingRight + } = window.getComputedStyle(element); + const insets = { + top: paddingTop ? parseInt(paddingTop, 10) : 0, + bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0, + left: paddingLeft ? parseInt(paddingLeft, 10) : 0, + right: paddingRight ? parseInt(paddingRight, 10) : 0 + }; + const frame = { + x: 0, + y: 0, + width: document.documentElement.offsetWidth, + height: document.documentElement.offsetHeight + }; + // @ts-ignore: missing properties + onInsetsChange({ + nativeEvent: { + insets, + frame + } + }); + }; + element.addEventListener(getSupportedTransitionEvent(), onEnd); + onEnd(); + return () => { + document.body.removeChild(element); + element.removeEventListener(getSupportedTransitionEvent(), onEnd); + }; + }, [onInsetsChange]); + return /*#__PURE__*/React.createElement(View, { + style: style + }, children); +} +let _supportedTransitionEvent = null; +function getSupportedTransitionEvent() { + if (_supportedTransitionEvent != null) { + return _supportedTransitionEvent; + } + const element = document.createElement('invalidtype'); + _supportedTransitionEvent = CSSTransitions.Transition; + for (const key in CSSTransitions) { + if (element.style[key] !== undefined) { + _supportedTransitionEvent = CSSTransitions[key]; + break; + } + } + return _supportedTransitionEvent; +} +let _supportedEnv = null; +function getSupportedEnv() { + if (_supportedEnv !== null) { + return _supportedEnv; + } + const { + CSS + } = window; + if (CSS && CSS.supports && CSS.supports('top: constant(safe-area-inset-top)')) { + _supportedEnv = 'constant'; + } else { + _supportedEnv = 'env'; + } + return _supportedEnv; +} +function getInset(side) { + return `${getSupportedEnv()}(safe-area-inset-${side})`; +} +function createContextElement() { + const element = document.createElement('div'); + const { + style + } = element; + style.position = 'fixed'; + style.left = '0'; + style.top = '0'; + style.width = '0'; + style.height = '0'; + style.zIndex = '-1'; + style.overflow = 'hidden'; + style.visibility = 'hidden'; + // Bacon: Anything faster than this and the callback will be invoked too early with the wrong insets + style.transitionDuration = '0.05s'; + style.transitionProperty = 'padding'; + style.transitionDelay = '0s'; + style.paddingTop = getInset('top'); + style.paddingBottom = getInset('bottom'); + style.paddingLeft = getInset('left'); + style.paddingRight = getInset('right'); + return element; +} +//# sourceMappingURL=NativeSafeAreaProvider.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js.map new file mode 100644 index 00000000..cf984a81 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.web.js.map @@ -0,0 +1 @@ +{"version":3,"names":["React","View","CSSTransitions","WebkitTransition","Transition","MozTransition","MSTransition","OTransition","NativeSafeAreaProvider","children","style","onInsetsChange","useEffect","document","element","createContextElement","body","appendChild","onEnd","paddingTop","paddingBottom","paddingLeft","paddingRight","window","getComputedStyle","insets","top","parseInt","bottom","left","right","frame","x","y","width","documentElement","offsetWidth","height","offsetHeight","nativeEvent","addEventListener","getSupportedTransitionEvent","removeChild","removeEventListener","_supportedTransitionEvent","createElement","key","undefined","_supportedEnv","getSupportedEnv","CSS","supports","getInset","side","position","zIndex","overflow","visibility","transitionDuration","transitionProperty","transitionDelay"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.web.tsx"],"mappings":"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"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js new file mode 100644 index 00000000..257215e7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js @@ -0,0 +1,2 @@ +export { CompatNativeSafeAreaProvider as NativeSafeAreaProvider } from './CompatNativeSafeAreaProvider'; +//# sourceMappingURL=NativeSafeAreaProvider.windows.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js.map new file mode 100644 index 00000000..5532bf51 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/NativeSafeAreaProvider.windows.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CompatNativeSafeAreaProvider","NativeSafeAreaProvider"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.windows.tsx"],"mappings":"AAAA,SAASA,4BAA4B,IAAIC,sBAAsB,QAAQ,gCAAgC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js new file mode 100644 index 00000000..a04f6041 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=SafeArea.types.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js.map new file mode 100644 index 00000000..c4c976d4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeArea.types.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["SafeArea.types.ts"],"mappings":""} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js new file mode 100644 index 00000000..23324aee --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js @@ -0,0 +1,111 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import * as React from 'react'; +import { Dimensions, StyleSheet } from 'react-native'; +import { NativeSafeAreaProvider } from './NativeSafeAreaProvider'; +const isDev = process.env.NODE_ENV !== 'production'; +export const SafeAreaInsetsContext = /*#__PURE__*/React.createContext(null); +if (isDev) { + SafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext'; +} +export const SafeAreaFrameContext = /*#__PURE__*/React.createContext(null); +if (isDev) { + SafeAreaFrameContext.displayName = 'SafeAreaFrameContext'; +} +export function SafeAreaProvider(_ref) { + let { + children, + initialMetrics, + initialSafeAreaInsets, + style, + ...others + } = _ref; + const parentInsets = useParentSafeAreaInsets(); + const parentFrame = useParentSafeAreaFrame(); + const [insets, setInsets] = React.useState((initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.insets) ?? initialSafeAreaInsets ?? parentInsets ?? null); + const [frame, setFrame] = React.useState((initialMetrics === null || initialMetrics === void 0 ? void 0 : initialMetrics.frame) ?? parentFrame ?? { + // Backwards compat so we render anyway if we don't have frame. + x: 0, + y: 0, + width: Dimensions.get('window').width, + height: Dimensions.get('window').height + }); + const onInsetsChange = React.useCallback(event => { + const { + nativeEvent: { + frame: nextFrame, + insets: nextInsets + } + } = event; + if ( + // Backwards compat with old native code that won't send frame. + nextFrame && (nextFrame.height !== frame.height || nextFrame.width !== frame.width || nextFrame.x !== frame.x || nextFrame.y !== frame.y)) { + setFrame(nextFrame); + } + if (!insets || nextInsets.bottom !== insets.bottom || nextInsets.left !== insets.left || nextInsets.right !== insets.right || nextInsets.top !== insets.top) { + setInsets(nextInsets); + } + }, [frame, insets]); + return /*#__PURE__*/React.createElement(NativeSafeAreaProvider, _extends({ + style: [styles.fill, style], + onInsetsChange: onInsetsChange + }, others), insets != null ? /*#__PURE__*/React.createElement(SafeAreaFrameContext.Provider, { + value: frame + }, /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Provider, { + value: insets + }, children)) : null); +} +const styles = StyleSheet.create({ + fill: { + flex: 1 + } +}); +function useParentSafeAreaInsets() { + return React.useContext(SafeAreaInsetsContext); +} +function useParentSafeAreaFrame() { + return React.useContext(SafeAreaFrameContext); +} +const NO_INSETS_ERROR = 'No safe area value available. Make sure you are rendering `` at the top of your app.'; +export function useSafeAreaInsets() { + const safeArea = React.useContext(SafeAreaInsetsContext); + if (safeArea == null) { + throw new Error(NO_INSETS_ERROR); + } + return safeArea; +} +export function useSafeAreaFrame() { + const frame = React.useContext(SafeAreaFrameContext); + if (frame == null) { + throw new Error(NO_INSETS_ERROR); + } + return frame; +} +export function withSafeAreaInsets(WrappedComponent) { + return /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Consumer, null, insets => { + if (insets == null) { + throw new Error(NO_INSETS_ERROR); + } + return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, props, { + insets: insets, + ref: ref + })); + })); +} + +/** + * @deprecated + */ +export function useSafeArea() { + return useSafeAreaInsets(); +} + +/** + * @deprecated + */ +export const SafeAreaConsumer = SafeAreaInsetsContext.Consumer; + +/** + * @deprecated + */ +export const SafeAreaContext = SafeAreaInsetsContext; +//# sourceMappingURL=SafeAreaContext.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js.map new file mode 100644 index 00000000..4c717365 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaContext.js.map @@ -0,0 +1 @@ +{"version":3,"names":["React","Dimensions","StyleSheet","NativeSafeAreaProvider","isDev","process","env","NODE_ENV","SafeAreaInsetsContext","createContext","displayName","SafeAreaFrameContext","SafeAreaProvider","children","initialMetrics","initialSafeAreaInsets","style","others","parentInsets","useParentSafeAreaInsets","parentFrame","useParentSafeAreaFrame","insets","setInsets","useState","frame","setFrame","x","y","width","get","height","onInsetsChange","useCallback","event","nativeEvent","nextFrame","nextInsets","bottom","left","right","top","styles","fill","create","flex","useContext","NO_INSETS_ERROR","useSafeAreaInsets","safeArea","Error","useSafeAreaFrame","withSafeAreaInsets","WrappedComponent","forwardRef","props","ref","useSafeArea","SafeAreaConsumer","Consumer","SafeAreaContext"],"sourceRoot":"../../src","sources":["SafeAreaContext.tsx"],"mappings":"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"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js new file mode 100644 index 00000000..cfe1d26c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js @@ -0,0 +1,16 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import * as React from 'react'; +import NativeSafeAreaView from './specs/NativeSafeAreaView'; +export const SafeAreaView = /*#__PURE__*/React.forwardRef((_ref, ref) => { + let { + edges, + ...props + } = _ref; + return /*#__PURE__*/React.createElement(NativeSafeAreaView, _extends({}, props, { + // Codegen doesn't support default values for array types so + // set it here. + edges: edges ?? ['bottom', 'left', 'right', 'top'], + ref: ref + })); +}); +//# sourceMappingURL=SafeAreaView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js.map new file mode 100644 index 00000000..60e7a49e --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.js.map @@ -0,0 +1 @@ +{"version":3,"names":["React","NativeSafeAreaView","SafeAreaView","forwardRef","ref","edges","props"],"sourceRoot":"../../src","sources":["SafeAreaView.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,kBAAkB,MAAM,4BAA4B;AAM3D,OAAO,MAAMC,YAEZ,gBAAGF,KAAK,CAACG,UAAU,CAClB,OAAsBC,GAAG,KAAK;EAAA,IAA7B;IAAEC,KAAK;IAAE,GAAGC;EAAM,CAAC;EAClB,oBACE,oBAAC,kBAAkB,eACbA,KAAK;IACT;IACA;IACA,KAAK,EAAED,KAAK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAE;IACnD,GAAG,EAAED;EAAI,GACT;AAEN,CAAC,CACF"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js new file mode 100644 index 00000000..0e75c72f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js @@ -0,0 +1,3 @@ +import { View } from 'react-native'; +export const SafeAreaView = View; +//# sourceMappingURL=SafeAreaView.macos.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js.map new file mode 100644 index 00000000..cc95b0d4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.macos.js.map @@ -0,0 +1 @@ +{"version":3,"names":["View","SafeAreaView"],"sourceRoot":"../../src","sources":["SafeAreaView.macos.tsx"],"mappings":"AAAA,SAASA,IAAI,QAAQ,cAAc;AAEnC,OAAO,MAAMC,YAAY,GAAGD,IAAI"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js new file mode 100644 index 00000000..60a2372d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js @@ -0,0 +1,75 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import * as React from 'react'; +import { View, StyleSheet } from 'react-native'; +import { useSafeAreaInsets } from './SafeAreaContext'; +// prettier-ignore +const TOP = 0b1000, + RIGHT = 0b0100, + BOTTOM = 0b0010, + LEFT = 0b0001, + ALL = 0b1111; + +/* eslint-disable no-bitwise */ + +const edgeBitmaskMap = { + top: TOP, + right: RIGHT, + bottom: BOTTOM, + left: LEFT +}; +export function SafeAreaView(_ref) { + let { + style = {}, + mode, + edges, + ...rest + } = _ref; + const insets = useSafeAreaInsets(); + const edgeBitmask = edges != null ? edges.reduce((accum, edge) => accum | edgeBitmaskMap[edge], 0) : ALL; + const appliedStyle = React.useMemo(() => { + const insetTop = edgeBitmask & TOP ? insets.top : 0; + const insetRight = edgeBitmask & RIGHT ? insets.right : 0; + const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0; + const insetLeft = edgeBitmask & LEFT ? insets.left : 0; + const flatStyle = StyleSheet.flatten(style); + if (mode === 'margin') { + const { + margin = 0, + marginVertical = margin, + marginHorizontal = margin, + marginTop = marginVertical, + marginRight = marginHorizontal, + marginBottom = marginVertical, + marginLeft = marginHorizontal + } = flatStyle; + const marginStyle = { + marginTop: marginTop + insetTop, + marginRight: marginRight + insetRight, + marginBottom: marginBottom + insetBottom, + marginLeft: marginLeft + insetLeft + }; + return [style, marginStyle]; + } else { + const { + padding = 0, + paddingVertical = padding, + paddingHorizontal = padding, + paddingTop = paddingVertical, + paddingRight = paddingHorizontal, + paddingBottom = paddingVertical, + paddingLeft = paddingHorizontal + } = flatStyle; + const paddingStyle = { + paddingTop: paddingTop + insetTop, + paddingRight: paddingRight + insetRight, + paddingBottom: paddingBottom + insetBottom, + paddingLeft: paddingLeft + insetLeft + }; + return [style, paddingStyle]; + } + }, [style, insets, mode, edgeBitmask]); + return /*#__PURE__*/React.createElement(View, _extends({ + style: appliedStyle + }, rest)); +} +//# sourceMappingURL=SafeAreaView.web.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js.map new file mode 100644 index 00000000..e7ad4161 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.web.js.map @@ -0,0 +1 @@ +{"version":3,"names":["React","View","StyleSheet","useSafeAreaInsets","TOP","RIGHT","BOTTOM","LEFT","ALL","edgeBitmaskMap","top","right","bottom","left","SafeAreaView","style","mode","edges","rest","insets","edgeBitmask","reduce","accum","edge","appliedStyle","useMemo","insetTop","insetRight","insetBottom","insetLeft","flatStyle","flatten","margin","marginVertical","marginHorizontal","marginTop","marginRight","marginBottom","marginLeft","marginStyle","padding","paddingVertical","paddingHorizontal","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingStyle"],"sourceRoot":"../../src","sources":["SafeAreaView.web.tsx"],"mappings":"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"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js new file mode 100644 index 00000000..735cc0cd --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js @@ -0,0 +1,3 @@ +import { View } from 'react-native'; +export const SafeAreaView = View; +//# sourceMappingURL=SafeAreaView.windows.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js.map new file mode 100644 index 00000000..125934df --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/SafeAreaView.windows.js.map @@ -0,0 +1 @@ +{"version":3,"names":["View","SafeAreaView"],"sourceRoot":"../../src","sources":["SafeAreaView.windows.tsx"],"mappings":"AAAA,SAASA,IAAI,QAAQ,cAAc;AAEnC,OAAO,MAAMC,YAAY,GAAGD,IAAI"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js new file mode 100644 index 00000000..adf23c99 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js @@ -0,0 +1,5 @@ +export * from './SafeAreaContext'; +export * from './SafeAreaView'; +export * from './InitialWindow'; +export * from './SafeArea.types'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js.map new file mode 100644 index 00000000..2bb2c012 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,mBAAmB;AACjC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js new file mode 100644 index 00000000..7539ee04 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js @@ -0,0 +1,4 @@ +import * as TurboModuleRegistry from 'react-native/Libraries/TurboModule/TurboModuleRegistry'; +// @ts-expect-error +export default TurboModuleRegistry.get('RNCSafeAreaContext'); +//# sourceMappingURL=NativeSafeAreaContext.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js.map new file mode 100644 index 00000000..11427f2d --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaContext.js.map @@ -0,0 +1 @@ +{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeSafeAreaContext.ts"],"mappings":"AAEA,OAAO,KAAKA,mBAAmB,MAAM,wDAAwD;AAqB7F;AACA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,oBAAoB,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js new file mode 100644 index 00000000..c3d906cb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js @@ -0,0 +1,3 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +export default codegenNativeComponent('RNCSafeAreaProvider'); +//# sourceMappingURL=NativeSafeAreaProvider.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js.map new file mode 100644 index 00000000..4690bdd7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaProvider.js.map @@ -0,0 +1 @@ +{"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../src","sources":["NativeSafeAreaProvider.ts"],"mappings":"AAIA,OAAOA,sBAAsB,MAAM,yDAAyD;AAsB5F,eAAeA,sBAAsB,CACnC,qBAAqB,CACtB"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js new file mode 100644 index 00000000..15034bc7 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js @@ -0,0 +1,5 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +export default codegenNativeComponent('RNCSafeAreaView', { + interfaceOnly: true +}); +//# sourceMappingURL=NativeSafeAreaView.js.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js.map new file mode 100644 index 00000000..973b9bae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/module/specs/NativeSafeAreaView.js.map @@ -0,0 +1 @@ +{"version":3,"names":["codegenNativeComponent","interfaceOnly"],"sourceRoot":"../../src","sources":["NativeSafeAreaView.ts"],"mappings":"AAAA,OAAOA,sBAAsB,MAAM,yDAAyD;AAU5F,eAAeA,sBAAsB,CAAc,iBAAiB,EAAE;EACpEC,aAAa,EAAE;AACjB,CAAC,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts new file mode 100644 index 00000000..57652f4b --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts @@ -0,0 +1,4 @@ +/// +import type { NativeSafeAreaProviderProps } from './SafeArea.types'; +export declare function CompatNativeSafeAreaProvider({ children, style, onInsetsChange, }: NativeSafeAreaProviderProps): JSX.Element; +//# sourceMappingURL=CompatNativeSafeAreaProvider.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts.map new file mode 100644 index 00000000..b409e4cb --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/CompatNativeSafeAreaProvider.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CompatNativeSafeAreaProvider.d.ts","sourceRoot":"","sources":["../../src/CompatNativeSafeAreaProvider.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEpE,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,KAAK,EACL,cAAc,GACf,EAAE,2BAA2B,eAmB7B"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts new file mode 100644 index 00000000..fdb70053 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts @@ -0,0 +1,7 @@ +import type { EdgeInsets, Metrics } from './SafeArea.types'; +export declare const initialWindowMetrics: Metrics | null; +/** + * @deprecated + */ +export declare const initialWindowSafeAreaInsets: EdgeInsets | null; +//# sourceMappingURL=InitialWindow.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts.map new file mode 100644 index 00000000..ae58dc8c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InitialWindow.d.ts","sourceRoot":"","sources":["../../src/InitialWindow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,EAAE,OAAO,GAAG,IAAW,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,UAAU,GAAG,IAAW,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts new file mode 100644 index 00000000..7635b907 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts @@ -0,0 +1,7 @@ +import type { Metrics } from './SafeArea.types'; +export declare const initialWindowMetrics: Metrics | null; +/** + * @deprecated + */ +export declare const initialWindowSafeAreaInsets: import("./SafeArea.types").EdgeInsets | undefined; +//# sourceMappingURL=InitialWindow.native.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts.map new file mode 100644 index 00000000..496bdaca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/InitialWindow.native.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InitialWindow.native.d.ts","sourceRoot":"","sources":["../../src/InitialWindow.native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,eAAO,MAAM,oBAAoB,gBACkB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,2BAA2B,mDAA+B,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts new file mode 100644 index 00000000..a6db59c4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts @@ -0,0 +1,3 @@ +import NativeSafeAreaProvider from './specs/NativeSafeAreaProvider'; +export { NativeSafeAreaProvider }; +//# sourceMappingURL=NativeSafeAreaProvider.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts.map new file mode 100644 index 00000000..8e8b36f2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaProvider.d.ts","sourceRoot":"","sources":["../../src/NativeSafeAreaProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts new file mode 100644 index 00000000..bf91c365 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts @@ -0,0 +1,2 @@ +export { CompatNativeSafeAreaProvider as NativeSafeAreaProvider } from './CompatNativeSafeAreaProvider'; +//# sourceMappingURL=NativeSafeAreaProvider.macos.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts.map new file mode 100644 index 00000000..9ee1c177 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.macos.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaProvider.macos.d.ts","sourceRoot":"","sources":["../../src/NativeSafeAreaProvider.macos.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts new file mode 100644 index 00000000..3efc86aa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts @@ -0,0 +1,4 @@ +/// +import type { NativeSafeAreaProviderProps } from './SafeArea.types'; +export declare function NativeSafeAreaProvider({ children, style, onInsetsChange, }: NativeSafeAreaProviderProps): JSX.Element; +//# sourceMappingURL=NativeSafeAreaProvider.web.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts.map new file mode 100644 index 00000000..451107da --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.web.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaProvider.web.d.ts","sourceRoot":"","sources":["../../src/NativeSafeAreaProvider.web.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAkBpE,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,KAAK,EACL,cAAc,GACf,EAAE,2BAA2B,eAqC7B"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts new file mode 100644 index 00000000..f8ff9781 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts @@ -0,0 +1,2 @@ +export { CompatNativeSafeAreaProvider as NativeSafeAreaProvider } from './CompatNativeSafeAreaProvider'; +//# sourceMappingURL=NativeSafeAreaProvider.windows.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts.map new file mode 100644 index 00000000..1870c7b8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/NativeSafeAreaProvider.windows.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaProvider.windows.d.ts","sourceRoot":"","sources":["../../src/NativeSafeAreaProvider.windows.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts new file mode 100644 index 00000000..8ed53721 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts @@ -0,0 +1,31 @@ +import type * as React from 'react'; +import type { NativeSyntheticEvent, ViewProps } from 'react-native'; +export type Edge = 'top' | 'right' | 'bottom' | 'left'; +export interface EdgeInsets { + top: number; + right: number; + bottom: number; + left: number; +} +export interface Rect { + x: number; + y: number; + width: number; + height: number; +} +export interface Metrics { + insets: EdgeInsets; + frame: Rect; +} +export type InsetChangedEvent = NativeSyntheticEvent; +export type InsetChangeNativeCallback = (event: InsetChangedEvent) => void; +export interface NativeSafeAreaProviderProps extends ViewProps { + children?: React.ReactNode; + onInsetsChange: InsetChangeNativeCallback; +} +export interface NativeSafeAreaViewProps extends ViewProps { + children?: React.ReactNode; + mode?: 'padding' | 'margin'; + edges?: ReadonlyArray; +} +//# sourceMappingURL=SafeArea.types.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts.map new file mode 100644 index 00000000..0a6da64f --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeArea.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SafeArea.types.d.ts","sourceRoot":"","sources":["../../src/SafeArea.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAE3E,MAAM,WAAW,2BAA4B,SAAQ,SAAS;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,cAAc,EAAE,yBAAyB,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAwB,SAAQ,SAAS;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;CAC7B"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts new file mode 100644 index 00000000..c1443e4a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts @@ -0,0 +1,33 @@ +import * as React from 'react'; +import { ViewProps } from 'react-native'; +import type { EdgeInsets, Metrics, Rect } from './SafeArea.types'; +export declare const SafeAreaInsetsContext: React.Context; +export declare const SafeAreaFrameContext: React.Context; +export interface SafeAreaProviderProps extends ViewProps { + children?: React.ReactNode; + initialMetrics?: Metrics | null; + /** + * @deprecated + */ + initialSafeAreaInsets?: EdgeInsets | null; +} +export declare function SafeAreaProvider({ children, initialMetrics, initialSafeAreaInsets, style, ...others }: SafeAreaProviderProps): JSX.Element; +export declare function useSafeAreaInsets(): EdgeInsets; +export declare function useSafeAreaFrame(): Rect; +export type WithSafeAreaInsetsProps = { + insets: EdgeInsets; +}; +export declare function withSafeAreaInsets(WrappedComponent: React.ComponentType): React.ForwardRefExoticComponent & React.RefAttributes>; +/** + * @deprecated + */ +export declare function useSafeArea(): EdgeInsets; +/** + * @deprecated + */ +export declare const SafeAreaConsumer: React.Consumer; +/** + * @deprecated + */ +export declare const SafeAreaContext: React.Context; +//# sourceMappingURL=SafeAreaContext.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts.map new file mode 100644 index 00000000..88803317 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SafeAreaContext.d.ts","sourceRoot":"","sources":["../../src/SafeAreaContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA0B,SAAS,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,KAAK,EACV,UAAU,EAEV,OAAO,EACP,IAAI,EACL,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,qBAAqB,kCAEjC,CAAC;AAKF,eAAO,MAAM,oBAAoB,4BAAyC,CAAC;AAK3E,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC;;OAEG;IACH,qBAAqB,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC3C;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,KAAK,EACL,GAAG,MAAM,EACV,EAAE,qBAAqB,eA6DvB;AAiBD,wBAAgB,iBAAiB,IAAI,UAAU,CAM9C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,uBAAuB,CAAC,GACjE,KAAK,CAAC,yBAAyB,CAChC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CACxD,CAWA;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAExC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,mCAAiC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,eAAe,kCAAwB,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts new file mode 100644 index 00000000..b3c5616a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import type { NativeSafeAreaViewProps } from './SafeArea.types'; +import NativeSafeAreaView from './specs/NativeSafeAreaView'; +type NativeSafeAreaViewInstance = InstanceType; +export type SafeAreaViewProps = NativeSafeAreaViewProps; +export declare const SafeAreaView: React.ForwardRefExoticComponent>; +export {}; +//# sourceMappingURL=SafeAreaView.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts.map new file mode 100644 index 00000000..cd3911d3 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SafeAreaView.d.ts","sourceRoot":"","sources":["../../src/SafeAreaView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAE5D,KAAK,0BAA0B,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,yBAAyB,CACxD,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAapE,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts new file mode 100644 index 00000000..793f0573 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts @@ -0,0 +1,3 @@ +import { View } from 'react-native'; +export declare const SafeAreaView: typeof View; +//# sourceMappingURL=SafeAreaView.macos.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts.map new file mode 100644 index 00000000..38d72995 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.macos.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SafeAreaView.macos.d.ts","sourceRoot":"","sources":["../../src/SafeAreaView.macos.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,eAAO,MAAM,YAAY,aAAO,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts new file mode 100644 index 00000000..aa629956 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts @@ -0,0 +1,4 @@ +/// +import type { NativeSafeAreaViewProps } from './SafeArea.types'; +export declare function SafeAreaView({ style, mode, edges, ...rest }: NativeSafeAreaViewProps): JSX.Element; +//# sourceMappingURL=SafeAreaView.web.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts.map new file mode 100644 index 00000000..09bd1f97 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.web.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SafeAreaView.web.d.ts","sourceRoot":"","sources":["../../src/SafeAreaView.web.tsx"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAQ,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAkBtE,wBAAgB,YAAY,CAAC,EAC3B,KAAU,EACV,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,EACR,EAAE,uBAAuB,eA0DzB"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts new file mode 100644 index 00000000..81daedd2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts @@ -0,0 +1,3 @@ +import { View } from 'react-native'; +export declare const SafeAreaView: typeof View; +//# sourceMappingURL=SafeAreaView.windows.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts.map new file mode 100644 index 00000000..ad4c07aa --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/SafeAreaView.windows.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SafeAreaView.windows.d.ts","sourceRoot":"","sources":["../../src/SafeAreaView.windows.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,eAAO,MAAM,YAAY,aAAO,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts new file mode 100644 index 00000000..225e006c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts @@ -0,0 +1,5 @@ +export * from './SafeAreaContext'; +export * from './SafeAreaView'; +export * from './InitialWindow'; +export * from './SafeArea.types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts.map new file mode 100644 index 00000000..3d8649fc --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts new file mode 100644 index 00000000..cedd50e2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts @@ -0,0 +1,23 @@ +import type { Double } from 'react-native/Libraries/Types/CodegenTypes'; +import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport'; +export interface Spec extends TurboModule { + getConstants: () => { + initialWindowMetrics?: { + insets: { + top: Double; + right: Double; + bottom: Double; + left: Double; + }; + frame: { + x: Double; + y: Double; + width: Double; + height: Double; + }; + }; + }; +} +declare const _default: any; +export default _default; +//# sourceMappingURL=NativeSafeAreaContext.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts.map new file mode 100644 index 00000000..358c18a0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaContext.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeSafeAreaContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAGhF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,YAAY,EAAE,MAAM;QAClB,oBAAoB,CAAC,EAAE;YACrB,MAAM,EAAE;gBACN,GAAG,EAAE,MAAM,CAAC;gBACZ,KAAK,EAAE,MAAM,CAAC;gBACd,MAAM,EAAE,MAAM,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,KAAK,EAAE;gBACL,CAAC,EAAE,MAAM,CAAC;gBACV,CAAC,EAAE,MAAM,CAAC;gBACV,KAAK,EAAE,MAAM,CAAC;gBACd,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;CACH;;AAGD,wBAAmE"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts new file mode 100644 index 00000000..cbbb3c94 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts @@ -0,0 +1,22 @@ +import type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes'; +import type { ViewProps, HostComponent } from 'react-native'; +export type Event = Readonly<{ + insets: Readonly<{ + top: Double; + right: Double; + bottom: Double; + left: Double; + }>; + frame: Readonly<{ + x: Double; + y: Double; + width: Double; + height: Double; + }>; +}>; +export interface NativeProps extends ViewProps { + onInsetsChange?: DirectEventHandler; +} +declare const _default: HostComponent; +export default _default; +//# sourceMappingURL=NativeSafeAreaProvider.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts.map new file mode 100644 index 00000000..ed941505 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaProvider.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaProvider.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeSafeAreaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EACP,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,QAAQ,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,KAAK,EAAE,QAAQ,CAAC;QACd,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,cAAc,CAAC,EAAE,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;CACjE;;AAED,wBAEgC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts new file mode 100644 index 00000000..f3a0b5a4 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts @@ -0,0 +1,9 @@ +import type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes'; +import type { ViewProps, HostComponent } from 'react-native'; +export interface NativeProps extends ViewProps { + mode?: WithDefault<'padding' | 'margin', 'padding'>; + edges?: readonly string[]; +} +declare const _default: HostComponent; +export default _default; +//# sourceMappingURL=NativeSafeAreaView.d.ts.map \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts.map b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts.map new file mode 100644 index 00000000..ee936d47 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/lib/typescript/specs/NativeSafeAreaView.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NativeSafeAreaView.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeSafeAreaView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEpD,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;;AAED,wBAEiC"} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/node_modules/.bin/react-native b/iut-expo-starter/node_modules/react-native-safe-area-context/node_modules/.bin/react-native new file mode 120000 index 00000000..415c9a27 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/node_modules/.bin/react-native @@ -0,0 +1 @@ +../../../react-native/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/package.json b/iut-expo-starter/node_modules/react-native-safe-area-context/package.json new file mode 100644 index 00000000..05179190 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/package.json @@ -0,0 +1,136 @@ +{ + "name": "react-native-safe-area-context", + "version": "4.5.0", + "description": "A flexible way to handle safe area, also works on Android and web.", + "main": "lib/commonjs/index.js", + "module": "lib/module/index.js", + "react-native": "src/index.tsx", + "types": "lib/typescript/index.d.ts", + "source": "src/index.tsx", + "sideEffects": false, + "files": [ + "src", + "lib", + "android", + "ios", + "common", + "jest", + "*.podspec", + "react-native.config.js", + "!**/__tests__", + "!example" + ], + "author": "Janic Duplessis ", + "contributors": [ + "Evan Bacon (https://github.com/evanbacon)" + ], + "homepage": "https://github.com/th3rdwave/react-native-safe-area-context#readme", + "license": "MIT", + "scripts": { + "start": "react-native start", + "test": "yarn validate:prettier && yarn validate:eslint && yarn validate:typescript && yarn validate:jest", + "validate:eslint": "eslint \"src/**/*.{js,ts,tsx}\" \"example/**/*.{js,ts,tsx}\" \"fabric-example/**/*.{js,ts,tsx}\"", + "validate:typescript": "tsc --project ./ --noEmit", + "validate:prettier": "prettier \"src/**/*.{js,ts,tsx}\" \"example/**/*.{js,ts,tsx}\" \"fabric-example/**/*.{js,ts,tsx}\" --check", + "validate:jest": "jest", + "clang-format": "clang-format -i --glob='{ios,android,common}/**/*.{h,cpp,m,mm}'", + "release": "release-it", + "prepublish": "yarn test", + "prepare": "bob build" + }, + "keywords": [ + "react-native", + "react native", + "react-native-web", + "expo-web", + "safe area", + "view" + ], + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "devDependencies": { + "@commitlint/config-conventional": "^17.4.2", + "@react-native-community/eslint-config": "^3.2.0", + "@react-native/eslint-plugin-specs": "^0.71.0", + "@release-it/conventional-changelog": "^5.1.1", + "@types/jest": "^29.2.6", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@types/react-test-renderer": "^18.0.0", + "@typescript-eslint/eslint-plugin": "^5.48.2", + "@typescript-eslint/parser": "^5.48.2", + "babel-plugin-module-resolver": "^5.0.0", + "clang-format": "^1.8.0", + "commitlint": "^17.4.2", + "eslint": "^8.32.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "husky": "^8.0.3", + "jest": "^29.3.1", + "metro-react-native-babel-preset": "^0.74.0", + "prettier": "^2.8.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-native": "0.71.0", + "react-native-builder-bob": "^0.20.3", + "react-test-renderer": "^18.2.0", + "release-it": "^15.6.0", + "typescript": "^4.9.4" + }, + "repository": { + "type": "git", + "url": "https://github.com/th3rdwave/react-native-safe-area-context.git" + }, + "jest": { + "preset": "react-native", + "testEnvironment": "node", + "clearMocks": true, + "modulePathIgnorePatterns": [ + "/lib/" + ] + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "release-it": { + "git": { + "commitMessage": "chore: release ${version}", + "tagName": "v${version}" + }, + "npm": { + "publish": true + }, + "github": { + "release": true + }, + "plugins": { + "@release-it/conventional-changelog": { + "preset": "angular" + } + } + }, + "react-native-builder-bob": { + "source": "src", + "output": "lib", + "targets": [ + "commonjs", + "module", + "typescript" + ] + }, + "codegenConfig": { + "android": { + "javaPackageName": "com.th3rdwave.safeareacontext" + }, + "name": "safeareacontext", + "type": "all", + "jsSrcsDir": "./src/specs" + } +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec b/iut-expo-starter/node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec new file mode 100644 index 00000000..7453c3a0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/react-native-safe-area-context.podspec @@ -0,0 +1,51 @@ +require 'json' + +fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1' + +package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) + +folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32' + +Pod::Spec.new do |s| + s.name = "react-native-safe-area-context" + s.version = package['version'] + s.summary = package['description'] + s.license = package['license'] + + s.authors = package['author'] + s.homepage = package['homepage'] + s.platforms = { :ios => "11.0", :tvos => "11.0" } + + s.source = { :git => "https://github.com/th3rdwave/react-native-safe-area-context.git", :tag => "v#{s.version}" } + s.source_files = "ios/**/*.{h,m,mm}" + s.exclude_files = "ios/Fabric" + + s.compiler_flags = folly_compiler_flags + + s.pod_target_xcconfig = { + "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"", + "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", + } + + s.dependency "React-Core" + s.dependency "RCT-Folly" + s.dependency "RCTRequired" + s.dependency "RCTTypeSafety" + s.dependency "ReactCommon/turbomodule/core" + + if fabric_enabled + s.subspec "common" do |ss| + ss.source_files = "common/cpp/**/*.{cpp,h}" + ss.header_dir = "react/renderer/components/safeareacontext" + ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp\"" } + end + + s.subspec "fabric" do |ss| + ss.dependency "React-Codegen" + ss.dependency "React-RCTFabric" + ss.dependency "react-native-safe-area-context/common" + ss.source_files = "ios/Fabric/**/*.{h,m,mm}" + ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp\"" } + end + end +end diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/react-native.config.js b/iut-expo-starter/node_modules/react-native-safe-area-context/react-native.config.js new file mode 100644 index 00000000..a1cfbff8 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/react-native.config.js @@ -0,0 +1,29 @@ +let supportsCodegenConfig = false; +try { + const rnCliAndroidVersion = require.main.require( + '@react-native-community/cli-platform-android/package.json', + ).version; + const [major] = rnCliAndroidVersion.split('.'); + supportsCodegenConfig = major >= 9; +} catch (e) { + // ignore +} + +module.exports = { + dependency: { + platforms: { + android: supportsCodegenConfig + ? { + libraryName: 'safeareacontext', + componentDescriptors: [ + 'RNCSafeAreaProviderComponentDescriptor', + 'RNCSafeAreaViewComponentDescriptor', + ], + cmakeListsPath: 'src/main/jni/CMakeLists.txt', + } + : {}, + macos: null, + windows: null, + }, + }, +}; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/CompatNativeSafeAreaProvider.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/CompatNativeSafeAreaProvider.tsx new file mode 100644 index 00000000..114ad8d1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/CompatNativeSafeAreaProvider.tsx @@ -0,0 +1,28 @@ +import * as React from 'react'; +import { useWindowDimensions, View } from 'react-native'; +import type { NativeSafeAreaProviderProps } from './SafeArea.types'; + +export function CompatNativeSafeAreaProvider({ + children, + style, + onInsetsChange, +}: NativeSafeAreaProviderProps) { + const window = useWindowDimensions(); + React.useEffect(() => { + const insets = { + top: 0, + bottom: 0, + left: 0, + right: 0, + }; + const frame = { + x: 0, + y: 0, + width: window.width, + height: window.height, + }; + // @ts-ignore: missing properties + onInsetsChange({ nativeEvent: { insets, frame } }); + }, [onInsetsChange, window.height, window.width]); + return {children}; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.native.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.native.ts new file mode 100644 index 00000000..5ff96845 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.native.ts @@ -0,0 +1,10 @@ +import type { Metrics } from './SafeArea.types'; +import NativeSafeAreaContext from './specs/NativeSafeAreaContext'; + +export const initialWindowMetrics = (NativeSafeAreaContext?.getConstants?.() + ?.initialWindowMetrics ?? null) as Metrics | null; + +/** + * @deprecated + */ +export const initialWindowSafeAreaInsets = initialWindowMetrics?.insets; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.ts new file mode 100644 index 00000000..b9730967 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/InitialWindow.ts @@ -0,0 +1,8 @@ +import type { EdgeInsets, Metrics } from './SafeArea.types'; + +export const initialWindowMetrics: Metrics | null = null; + +/** + * @deprecated + */ +export const initialWindowSafeAreaInsets: EdgeInsets | null = null; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.macos.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.macos.tsx new file mode 100644 index 00000000..969c3eae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.macos.tsx @@ -0,0 +1 @@ +export { CompatNativeSafeAreaProvider as NativeSafeAreaProvider } from './CompatNativeSafeAreaProvider'; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.tsx new file mode 100644 index 00000000..d078d068 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.tsx @@ -0,0 +1,3 @@ +import NativeSafeAreaProvider from './specs/NativeSafeAreaProvider'; + +export { NativeSafeAreaProvider }; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.web.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.web.tsx new file mode 100644 index 00000000..d3eceed2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.web.tsx @@ -0,0 +1,127 @@ +/* eslint-env browser */ + +import * as React from 'react'; +import { View } from 'react-native'; +import type { NativeSafeAreaProviderProps } from './SafeArea.types'; + +/** + * TODO: + * Currently insets and frame are based on the window and are not + * relative to the provider view. This is inconsistent with iOS and Android. + * However in most cases if the provider view covers the screen this is not + * an issue. + */ + +const CSSTransitions: Record = { + WebkitTransition: 'webkitTransitionEnd', + Transition: 'transitionEnd', + MozTransition: 'transitionend', + MSTransition: 'msTransitionEnd', + OTransition: 'oTransitionEnd', +}; + +export function NativeSafeAreaProvider({ + children, + style, + onInsetsChange, +}: NativeSafeAreaProviderProps) { + React.useEffect(() => { + // Skip for SSR. + if (typeof document === 'undefined') { + return; + } + + const element = createContextElement(); + document.body.appendChild(element); + const onEnd = () => { + const { paddingTop, paddingBottom, paddingLeft, paddingRight } = + window.getComputedStyle(element); + + const insets = { + top: paddingTop ? parseInt(paddingTop, 10) : 0, + bottom: paddingBottom ? parseInt(paddingBottom, 10) : 0, + left: paddingLeft ? parseInt(paddingLeft, 10) : 0, + right: paddingRight ? parseInt(paddingRight, 10) : 0, + }; + const frame = { + x: 0, + y: 0, + width: document.documentElement.offsetWidth, + height: document.documentElement.offsetHeight, + }; + // @ts-ignore: missing properties + onInsetsChange({ nativeEvent: { insets, frame } }); + }; + element.addEventListener(getSupportedTransitionEvent(), onEnd); + onEnd(); + return () => { + document.body.removeChild(element); + element.removeEventListener(getSupportedTransitionEvent(), onEnd); + }; + }, [onInsetsChange]); + + return {children}; +} + +let _supportedTransitionEvent: string | null | undefined = null; +function getSupportedTransitionEvent(): string { + if (_supportedTransitionEvent != null) { + return _supportedTransitionEvent; + } + const element = document.createElement('invalidtype'); + + _supportedTransitionEvent = CSSTransitions.Transition; + for (const key in CSSTransitions) { + if (element.style[key as keyof CSSStyleDeclaration] !== undefined) { + _supportedTransitionEvent = CSSTransitions[key]; + break; + } + } + return _supportedTransitionEvent as string; +} + +type CssEnv = 'constant' | 'env'; + +let _supportedEnv: CssEnv | null = null; +function getSupportedEnv(): CssEnv { + if (_supportedEnv !== null) { + return _supportedEnv; + } + const { CSS } = window; + if ( + CSS && + CSS.supports && + CSS.supports('top: constant(safe-area-inset-top)') + ) { + _supportedEnv = 'constant'; + } else { + _supportedEnv = 'env'; + } + return _supportedEnv; +} + +function getInset(side: string): string { + return `${getSupportedEnv()}(safe-area-inset-${side})`; +} + +function createContextElement(): HTMLElement { + const element = document.createElement('div'); + const { style } = element; + style.position = 'fixed'; + style.left = '0'; + style.top = '0'; + style.width = '0'; + style.height = '0'; + style.zIndex = '-1'; + style.overflow = 'hidden'; + style.visibility = 'hidden'; + // Bacon: Anything faster than this and the callback will be invoked too early with the wrong insets + style.transitionDuration = '0.05s'; + style.transitionProperty = 'padding'; + style.transitionDelay = '0s'; + style.paddingTop = getInset('top'); + style.paddingBottom = getInset('bottom'); + style.paddingLeft = getInset('left'); + style.paddingRight = getInset('right'); + return element; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.windows.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.windows.tsx new file mode 100644 index 00000000..969c3eae --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.windows.tsx @@ -0,0 +1 @@ +export { CompatNativeSafeAreaProvider as NativeSafeAreaProvider } from './CompatNativeSafeAreaProvider'; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeArea.types.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeArea.types.ts new file mode 100644 index 00000000..6def7b2c --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeArea.types.ts @@ -0,0 +1,38 @@ +import type * as React from 'react'; +import type { NativeSyntheticEvent, ViewProps } from 'react-native'; + +export type Edge = 'top' | 'right' | 'bottom' | 'left'; + +export interface EdgeInsets { + top: number; + right: number; + bottom: number; + left: number; +} + +export interface Rect { + x: number; + y: number; + width: number; + height: number; +} + +export interface Metrics { + insets: EdgeInsets; + frame: Rect; +} + +export type InsetChangedEvent = NativeSyntheticEvent; + +export type InsetChangeNativeCallback = (event: InsetChangedEvent) => void; + +export interface NativeSafeAreaProviderProps extends ViewProps { + children?: React.ReactNode; + onInsetsChange: InsetChangeNativeCallback; +} + +export interface NativeSafeAreaViewProps extends ViewProps { + children?: React.ReactNode; + mode?: 'padding' | 'margin'; + edges?: ReadonlyArray; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaContext.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaContext.tsx new file mode 100644 index 00000000..af72c101 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaContext.tsx @@ -0,0 +1,170 @@ +import * as React from 'react'; +import { Dimensions, StyleSheet, ViewProps } from 'react-native'; +import { NativeSafeAreaProvider } from './NativeSafeAreaProvider'; +import type { + EdgeInsets, + InsetChangedEvent, + Metrics, + Rect, +} from './SafeArea.types'; + +const isDev = process.env.NODE_ENV !== 'production'; + +export const SafeAreaInsetsContext = React.createContext( + null, +); +if (isDev) { + SafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext'; +} + +export const SafeAreaFrameContext = React.createContext(null); +if (isDev) { + SafeAreaFrameContext.displayName = 'SafeAreaFrameContext'; +} + +export interface SafeAreaProviderProps extends ViewProps { + children?: React.ReactNode; + initialMetrics?: Metrics | null; + /** + * @deprecated + */ + initialSafeAreaInsets?: EdgeInsets | null; +} + +export function SafeAreaProvider({ + children, + initialMetrics, + initialSafeAreaInsets, + style, + ...others +}: SafeAreaProviderProps) { + const parentInsets = useParentSafeAreaInsets(); + const parentFrame = useParentSafeAreaFrame(); + const [insets, setInsets] = React.useState( + initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? null, + ); + const [frame, setFrame] = React.useState( + initialMetrics?.frame ?? + parentFrame ?? { + // Backwards compat so we render anyway if we don't have frame. + x: 0, + y: 0, + width: Dimensions.get('window').width, + height: Dimensions.get('window').height, + }, + ); + const onInsetsChange = React.useCallback( + (event: InsetChangedEvent) => { + const { + nativeEvent: { frame: nextFrame, insets: nextInsets }, + } = event; + + if ( + // Backwards compat with old native code that won't send frame. + nextFrame && + (nextFrame.height !== frame.height || + nextFrame.width !== frame.width || + nextFrame.x !== frame.x || + nextFrame.y !== frame.y) + ) { + setFrame(nextFrame); + } + + if ( + !insets || + nextInsets.bottom !== insets.bottom || + nextInsets.left !== insets.left || + nextInsets.right !== insets.right || + nextInsets.top !== insets.top + ) { + setInsets(nextInsets); + } + }, + [frame, insets], + ); + + return ( + + {insets != null ? ( + + + {children} + + + ) : null} + + ); +} + +const styles = StyleSheet.create({ + fill: { flex: 1 }, +}); + +function useParentSafeAreaInsets(): EdgeInsets | null { + return React.useContext(SafeAreaInsetsContext); +} + +function useParentSafeAreaFrame(): Rect | null { + return React.useContext(SafeAreaFrameContext); +} + +const NO_INSETS_ERROR = + 'No safe area value available. Make sure you are rendering `` at the top of your app.'; + +export function useSafeAreaInsets(): EdgeInsets { + const safeArea = React.useContext(SafeAreaInsetsContext); + if (safeArea == null) { + throw new Error(NO_INSETS_ERROR); + } + return safeArea; +} + +export function useSafeAreaFrame(): Rect { + const frame = React.useContext(SafeAreaFrameContext); + if (frame == null) { + throw new Error(NO_INSETS_ERROR); + } + return frame; +} + +export type WithSafeAreaInsetsProps = { + insets: EdgeInsets; +}; + +export function withSafeAreaInsets( + WrappedComponent: React.ComponentType, +): React.ForwardRefExoticComponent< + React.PropsWithoutRef & React.RefAttributes +> { + return React.forwardRef((props: T, ref: React.Ref) => ( + + {(insets) => { + if (insets == null) { + throw new Error(NO_INSETS_ERROR); + } + return ; + }} + + )); +} + +/** + * @deprecated + */ +export function useSafeArea(): EdgeInsets { + return useSafeAreaInsets(); +} + +/** + * @deprecated + */ +export const SafeAreaConsumer = SafeAreaInsetsContext.Consumer; + +/** + * @deprecated + */ +export const SafeAreaContext = SafeAreaInsetsContext; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.macos.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.macos.tsx new file mode 100644 index 00000000..f274c5e0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.macos.tsx @@ -0,0 +1,3 @@ +import { View } from 'react-native'; + +export const SafeAreaView = View; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.tsx new file mode 100644 index 00000000..1ac620de --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.tsx @@ -0,0 +1,23 @@ +import * as React from 'react'; +import type { NativeSafeAreaViewProps } from './SafeArea.types'; +import NativeSafeAreaView from './specs/NativeSafeAreaView'; + +type NativeSafeAreaViewInstance = InstanceType; + +export type SafeAreaViewProps = NativeSafeAreaViewProps; + +export const SafeAreaView: React.ForwardRefExoticComponent< + SafeAreaViewProps & React.RefAttributes +> = React.forwardRef( + ({ edges, ...props }, ref) => { + return ( + + ); + }, +); diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.web.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.web.tsx new file mode 100644 index 00000000..37f44bb2 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.web.tsx @@ -0,0 +1,85 @@ +import * as React from 'react'; +import { View, StyleSheet } from 'react-native'; +import { useSafeAreaInsets } from './SafeAreaContext'; +import type { Edge, NativeSafeAreaViewProps } from './SafeArea.types'; + +// prettier-ignore +const TOP = 0b1000, + RIGHT = 0b0100, + BOTTOM = 0b0010, + LEFT = 0b0001, + ALL = 0b1111; + +/* eslint-disable no-bitwise */ + +const edgeBitmaskMap: Record = { + top: TOP, + right: RIGHT, + bottom: BOTTOM, + left: LEFT, +}; + +export function SafeAreaView({ + style = {}, + mode, + edges, + ...rest +}: NativeSafeAreaViewProps) { + const insets = useSafeAreaInsets(); + + const edgeBitmask = + edges != null + ? edges.reduce((accum, edge) => accum | edgeBitmaskMap[edge], 0) + : ALL; + + const appliedStyle = React.useMemo(() => { + const insetTop = edgeBitmask & TOP ? insets.top : 0; + const insetRight = edgeBitmask & RIGHT ? insets.right : 0; + const insetBottom = edgeBitmask & BOTTOM ? insets.bottom : 0; + const insetLeft = edgeBitmask & LEFT ? insets.left : 0; + + const flatStyle = StyleSheet.flatten(style) as Record; + + if (mode === 'margin') { + const { + margin = 0, + marginVertical = margin, + marginHorizontal = margin, + marginTop = marginVertical, + marginRight = marginHorizontal, + marginBottom = marginVertical, + marginLeft = marginHorizontal, + } = flatStyle; + + const marginStyle = { + marginTop: marginTop + insetTop, + marginRight: marginRight + insetRight, + marginBottom: marginBottom + insetBottom, + marginLeft: marginLeft + insetLeft, + }; + + return [style, marginStyle]; + } else { + const { + padding = 0, + paddingVertical = padding, + paddingHorizontal = padding, + paddingTop = paddingVertical, + paddingRight = paddingHorizontal, + paddingBottom = paddingVertical, + paddingLeft = paddingHorizontal, + } = flatStyle; + + const paddingStyle = { + paddingTop: paddingTop + insetTop, + paddingRight: paddingRight + insetRight, + paddingBottom: paddingBottom + insetBottom, + paddingLeft: paddingLeft + insetLeft, + }; + + return [style, paddingStyle]; + } + }, [style, insets, mode, edgeBitmask]); + + return ; +} diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.windows.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.windows.tsx new file mode 100644 index 00000000..f274c5e0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/SafeAreaView.windows.tsx @@ -0,0 +1,3 @@ +import { View } from 'react-native'; + +export const SafeAreaView = View; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/index.tsx b/iut-expo-starter/node_modules/react-native-safe-area-context/src/index.tsx new file mode 100644 index 00000000..ef4c2b99 --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/index.tsx @@ -0,0 +1,4 @@ +export * from './SafeAreaContext'; +export * from './SafeAreaView'; +export * from './InitialWindow'; +export * from './SafeArea.types'; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaContext.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaContext.ts new file mode 100644 index 00000000..b43101ca --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaContext.ts @@ -0,0 +1,25 @@ +import type { Double } from 'react-native/Libraries/Types/CodegenTypes'; +import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport'; +import * as TurboModuleRegistry from 'react-native/Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + getConstants: () => { + initialWindowMetrics?: { + insets: { + top: Double; + right: Double; + bottom: Double; + left: Double; + }; + frame: { + x: Double; + y: Double; + width: Double; + height: Double; + }; + }; + }; +} + +// @ts-expect-error +export default TurboModuleRegistry.get('RNCSafeAreaContext'); diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaProvider.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaProvider.ts new file mode 100644 index 00000000..af5e731a --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaProvider.ts @@ -0,0 +1,29 @@ +import type { + DirectEventHandler, + Double, +} from 'react-native/Libraries/Types/CodegenTypes'; +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +import type { ViewProps, HostComponent } from 'react-native'; + +export type Event = Readonly<{ + insets: Readonly<{ + top: Double; + right: Double; + bottom: Double; + left: Double; + }>; + frame: Readonly<{ + x: Double; + y: Double; + width: Double; + height: Double; + }>; +}>; + +export interface NativeProps extends ViewProps { + onInsetsChange?: DirectEventHandler; +} + +export default codegenNativeComponent( + 'RNCSafeAreaProvider', +) as HostComponent; diff --git a/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaView.ts b/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaView.ts new file mode 100644 index 00000000..a57644ef --- /dev/null +++ b/iut-expo-starter/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaView.ts @@ -0,0 +1,13 @@ +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +import type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes'; +import type { ViewProps, HostComponent } from 'react-native'; + +export interface NativeProps extends ViewProps { + mode?: WithDefault<'padding' | 'margin', 'padding'>; + // Should be `'top' | 'right' | 'bottom' | 'left'` but that generates invalid code. + edges?: readonly string[]; +} + +export default codegenNativeComponent('RNCSafeAreaView', { + interfaceOnly: true, +}) as HostComponent; diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/LICENSE b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/LICENSE new file mode 100644 index 00000000..b96dcb04 --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/README.md b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/README.md new file mode 100644 index 00000000..d2559776 --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/README.md @@ -0,0 +1,104 @@ +# `react-is` + +This package allows you to test arbitrary values and see if they're a particular React element type. + +## Installation + +```sh +# Yarn +yarn add react-is + +# NPM +npm install react-is +``` + +## Usage + +### Determining if a Component is Valid + +```js +import React from "react"; +import * as ReactIs from "react-is"; + +class ClassComponent extends React.Component { + render() { + return React.createElement("div"); + } +} + +const FunctionComponent = () => React.createElement("div"); + +const ForwardRefComponent = React.forwardRef((props, ref) => + React.createElement(Component, { forwardedRef: ref, ...props }) +); + +const Context = React.createContext(false); + +ReactIs.isValidElementType("div"); // true +ReactIs.isValidElementType(ClassComponent); // true +ReactIs.isValidElementType(FunctionComponent); // true +ReactIs.isValidElementType(ForwardRefComponent); // true +ReactIs.isValidElementType(Context.Provider); // true +ReactIs.isValidElementType(Context.Consumer); // true +ReactIs.isValidElementType(React.createFactory("div")); // true +``` + +### Determining an Element's Type + +#### Context + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +const ThemeContext = React.createContext("blue"); + +ReactIs.isContextConsumer(); // true +ReactIs.isContextProvider(); // true +ReactIs.typeOf() === ReactIs.ContextProvider; // true +ReactIs.typeOf() === ReactIs.ContextConsumer; // true +``` + +#### Element + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +ReactIs.isElement(

); // true +ReactIs.typeOf(
) === ReactIs.Element; // true +``` + +#### Fragment + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +ReactIs.isFragment(<>); // true +ReactIs.typeOf(<>) === ReactIs.Fragment; // true +``` + +#### Portal + +```js +import React from "react"; +import ReactDOM from "react-dom"; +import * as ReactIs from 'react-is'; + +const div = document.createElement("div"); +const portal = ReactDOM.createPortal(
, div); + +ReactIs.isPortal(portal); // true +ReactIs.typeOf(portal) === ReactIs.Portal; // true +``` + +#### StrictMode + +```js +import React from "react"; +import * as ReactIs from 'react-is'; + +ReactIs.isStrictMode(); // true +ReactIs.typeOf() === ReactIs.StrictMode; // true +``` diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.development.js b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.development.js new file mode 100644 index 00000000..6ed9c03d --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.development.js @@ -0,0 +1,221 @@ +/** + * @license React + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. +var REACT_ELEMENT_TYPE = Symbol.for('react.element'); +var REACT_PORTAL_TYPE = Symbol.for('react.portal'); +var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); +var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode'); +var REACT_PROFILER_TYPE = Symbol.for('react.profiler'); +var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); +var REACT_CONTEXT_TYPE = Symbol.for('react.context'); +var REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context'); +var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); +var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense'); +var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list'); +var REACT_MEMO_TYPE = Symbol.for('react.memo'); +var REACT_LAZY_TYPE = Symbol.for('react.lazy'); +var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen'); + +// ----------------------------------------------------------------------------- + +var enableScopeAPI = false; // Experimental Create Event Handle API. +var enableCacheElement = false; +var enableTransitionTracing = false; // No known bugs, but needs performance testing + +var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber +// stuff. Intended to enable React core members to more easily debug scheduling +// issues in DEV builds. + +var enableDebugTracing = false; // Track which Fiber(s) schedule render work. + +var REACT_MODULE_REFERENCE; + +{ + REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); +} + +function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { + return true; + } + } + + return false; +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + case REACT_SUSPENSE_LIST_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_SERVER_CONTEXT_TYPE: + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var SuspenseList = REACT_SUSPENSE_LIST_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; +var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); + } + } + + return false; +} +function isConcurrentMode(object) { + { + if (!hasWarnedAboutDeprecatedIsConcurrentMode) { + hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); + } + } + + return false; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} +function isSuspenseList(object) { + return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; +} + +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.SuspenseList = SuspenseList; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isSuspenseList = isSuspenseList; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.production.min.js b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.production.min.js new file mode 100644 index 00000000..f2322cbb --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/cjs/react-is.production.min.js @@ -0,0 +1,14 @@ +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict';var b=Symbol.for("react.element"),c=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),e=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),g=Symbol.for("react.provider"),h=Symbol.for("react.context"),k=Symbol.for("react.server_context"),l=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),n=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),t=Symbol.for("react.offscreen"),u;u=Symbol.for("react.module.reference"); +function v(a){if("object"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m; +exports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p}; +exports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||"object"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v; diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/index.js b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/index.js new file mode 100644 index 00000000..3ae098d0 --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/index.js @@ -0,0 +1,7 @@ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/package.json b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/package.json new file mode 100644 index 00000000..4cd3c3bc --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/package.json @@ -0,0 +1,26 @@ +{ + "name": "react-is", + "version": "18.2.0", + "description": "Brand checking of React Elements.", + "main": "index.js", + "repository": { + "type": "git", + "url": "https://github.com/facebook/react.git", + "directory": "packages/react-is" + }, + "keywords": [ + "react" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/facebook/react/issues" + }, + "homepage": "https://reactjs.org/", + "files": [ + "LICENSE", + "README.md", + "index.js", + "cjs/", + "umd/" + ] +} \ No newline at end of file diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.development.js b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.development.js new file mode 100644 index 00000000..1257aef1 --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.development.js @@ -0,0 +1,220 @@ +/** + * @license React + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.ReactIs = {})); +}(this, (function (exports) { 'use strict'; + + // ATTENTION + // When adding new symbols to this file, + // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' + // The Symbol used to tag the ReactElement-like types. + var REACT_ELEMENT_TYPE = Symbol.for('react.element'); + var REACT_PORTAL_TYPE = Symbol.for('react.portal'); + var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); + var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode'); + var REACT_PROFILER_TYPE = Symbol.for('react.profiler'); + var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); + var REACT_CONTEXT_TYPE = Symbol.for('react.context'); + var REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context'); + var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); + var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense'); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list'); + var REACT_MEMO_TYPE = Symbol.for('react.memo'); + var REACT_LAZY_TYPE = Symbol.for('react.lazy'); + var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen'); + + // ----------------------------------------------------------------------------- + + var enableScopeAPI = false; // Experimental Create Event Handle API. + var enableCacheElement = false; + var enableTransitionTracing = false; // No known bugs, but needs performance testing + + var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber + // stuff. Intended to enable React core members to more easily debug scheduling + // issues in DEV builds. + + var enableDebugTracing = false; // Track which Fiber(s) schedule render work. + + var REACT_MODULE_REFERENCE; + + { + REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); + } + + function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { + return true; + } + } + + return false; + } + + function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + case REACT_SUSPENSE_LIST_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_SERVER_CONTEXT_TYPE: + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; + } + var ContextConsumer = REACT_CONTEXT_TYPE; + var ContextProvider = REACT_PROVIDER_TYPE; + var Element = REACT_ELEMENT_TYPE; + var ForwardRef = REACT_FORWARD_REF_TYPE; + var Fragment = REACT_FRAGMENT_TYPE; + var Lazy = REACT_LAZY_TYPE; + var Memo = REACT_MEMO_TYPE; + var Portal = REACT_PORTAL_TYPE; + var Profiler = REACT_PROFILER_TYPE; + var StrictMode = REACT_STRICT_MODE_TYPE; + var Suspense = REACT_SUSPENSE_TYPE; + var SuspenseList = REACT_SUSPENSE_LIST_TYPE; + var hasWarnedAboutDeprecatedIsAsyncMode = false; + var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated + + function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); + } + } + + return false; + } + function isConcurrentMode(object) { + { + if (!hasWarnedAboutDeprecatedIsConcurrentMode) { + hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); + } + } + + return false; + } + function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; + } + function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; + } + function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; + } + function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; + } + function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; + } + function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; + } + function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; + } + function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; + } + function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; + } + function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; + } + function isSuspenseList(object) { + return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; + } + + exports.ContextConsumer = ContextConsumer; + exports.ContextProvider = ContextProvider; + exports.Element = Element; + exports.ForwardRef = ForwardRef; + exports.Fragment = Fragment; + exports.Lazy = Lazy; + exports.Memo = Memo; + exports.Portal = Portal; + exports.Profiler = Profiler; + exports.StrictMode = StrictMode; + exports.Suspense = Suspense; + exports.SuspenseList = SuspenseList; + exports.isAsyncMode = isAsyncMode; + exports.isConcurrentMode = isConcurrentMode; + exports.isContextConsumer = isContextConsumer; + exports.isContextProvider = isContextProvider; + exports.isElement = isElement; + exports.isForwardRef = isForwardRef; + exports.isFragment = isFragment; + exports.isLazy = isLazy; + exports.isMemo = isMemo; + exports.isPortal = isPortal; + exports.isProfiler = isProfiler; + exports.isStrictMode = isStrictMode; + exports.isSuspense = isSuspense; + exports.isSuspenseList = isSuspenseList; + exports.isValidElementType = isValidElementType; + exports.typeOf = typeOf; + +}))); diff --git a/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.production.min.js b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.production.min.js new file mode 100644 index 00000000..84a9cdee --- /dev/null +++ b/iut-expo-starter/node_modules/react-shallow-renderer/node_modules/react-is/umd/react-is.production.min.js @@ -0,0 +1,15 @@ +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +(function(){'use strict';(function(b,c){"object"===typeof exports&&"undefined"!==typeof module?c(exports):"function"===typeof define&&define.amd?define(["exports"],c):(b=b||self,c(b.ReactIs={}))})(this,function(b){function c(a){if("object"===typeof a&&null!==a){var b=a.$$typeof;switch(b){case q:switch(a=a.type,a){case d:case e:case f:case g:case h:return a;default:switch(a=a&&a.$$typeof,a){case t:case k:case l:case m:case n:case p:return a;default:return b}}case r:return b}}}var q=Symbol.for("react.element"), +r=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),e=Symbol.for("react.profiler"),p=Symbol.for("react.provider"),k=Symbol.for("react.context"),t=Symbol.for("react.server_context"),l=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),n=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),u=Symbol.for("react.offscreen");var v=Symbol.for("react.module.reference");b.ContextConsumer=k;b.ContextProvider=p;b.Element= +q;b.ForwardRef=l;b.Fragment=d;b.Lazy=m;b.Memo=n;b.Portal=r;b.Profiler=e;b.StrictMode=f;b.Suspense=g;b.SuspenseList=h;b.isAsyncMode=function(a){return!1};b.isConcurrentMode=function(a){return!1};b.isContextConsumer=function(a){return c(a)===k};b.isContextProvider=function(a){return c(a)===p};b.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===q};b.isForwardRef=function(a){return c(a)===l};b.isFragment=function(a){return c(a)===d};b.isLazy=function(a){return c(a)===m};b.isMemo= +function(a){return c(a)===n};b.isPortal=function(a){return c(a)===r};b.isProfiler=function(a){return c(a)===e};b.isStrictMode=function(a){return c(a)===f};b.isSuspense=function(a){return c(a)===g};b.isSuspenseList=function(a){return c(a)===h};b.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===d||a===e||a===f||a===g||a===h||a===u||"object"===typeof a&&null!==a&&(a.$$typeof===m||a.$$typeof===n||a.$$typeof===p||a.$$typeof===k||a.$$typeof===l||a.$$typeof===v||void 0!== +a.getModuleId)?!0:!1};b.typeOf=c}); +})(); diff --git a/iut-expo-starter/node_modules/webpack/node_modules/.bin/json5 b/iut-expo-starter/node_modules/webpack/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/webpack/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/node_modules/xdl/node_modules/@expo/config/node_modules/.bin/json5 b/iut-expo-starter/node_modules/xdl/node_modules/@expo/config/node_modules/.bin/json5 deleted file mode 120000 index 217f3798..00000000 --- a/iut-expo-starter/node_modules/xdl/node_modules/@expo/config/node_modules/.bin/json5 +++ /dev/null @@ -1 +0,0 @@ -../json5/lib/cli.js \ No newline at end of file diff --git a/iut-expo-starter/package.json b/iut-expo-starter/package.json index 18054e82..e760dbf7 100644 --- a/iut-expo-starter/package.json +++ b/iut-expo-starter/package.json @@ -15,6 +15,8 @@ "react": "18.1.0", "react-dom": "18.1.0", "react-native": "0.70.5", + "react-native-gesture-handler": "^2.9.0", + "react-native-safe-area-context": "^4.5.0", "react-native-web": "~0.18.9" }, "devDependencies": { diff --git a/iut-expo-starter/yarn.lock b/iut-expo-starter/yarn.lock index bd800c4a..0720cda9 100644 --- a/iut-expo-starter/yarn.lock +++ b/iut-expo-starter/yarn.lock @@ -3,57 +3,58 @@ "@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" + version "2.2.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" +"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.18.6": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.5.5": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.8.3": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/code-frame@~7.10.4", "@babel/code-frame@7.10.4": - "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": - "integrity" "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz" - "version" "7.20.10" + version "7.20.10" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz" + integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.12.9", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.4.0-0": - "integrity" "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz" - "version" "7.20.12" +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0": + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz" + integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" @@ -65,73 +66,51 @@ "@babel/template" "^7.20.7" "@babel/traverse" "^7.20.12" "@babel/types" "^7.20.7" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.2" - "semver" "^6.3.0" - -"@babel/core@7.9.0": - "integrity" "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.1" - "json5" "^2.1.2" - "lodash" "^4.17.13" - "resolve" "^1.3.2" - "semver" "^5.4.1" - "source-map" "^0.5.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" "@babel/generator@^7.14.0", "@babel/generator@^7.20.7", "@babel/generator@^7.9.0": - "integrity" "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz" + integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== dependencies: "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" + jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": - "integrity" "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== dependencies: "@babel/compat-data" "^7.20.5" "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.21.3" - "lru-cache" "^5.1.1" - "semver" "^6.3.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.12", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": - "integrity" "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" - "version" "7.20.12" + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -143,70 +122,70 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - "integrity" "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz" - "version" "7.20.5" + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.2.1" + regexpu-core "^5.2.1" "@babel/helper-define-polyfill-provider@^0.3.3": - "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" "@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: "@babel/types" "^7.18.6" "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" "@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.20.7": - "integrity" "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== dependencies: "@babel/types" "^7.20.7" "@babel/helper-module-imports@^7.18.6": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.9.0": - "integrity" "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz" - "version" "7.20.11" + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" @@ -218,21 +197,21 @@ "@babel/types" "^7.20.7" "@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -240,9 +219,9 @@ "@babel/types" "^7.18.9" "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": - "integrity" "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.20.7" @@ -252,45 +231,45 @@ "@babel/types" "^7.20.7" "@babel/helper-simple-access@^7.20.2": - "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - "integrity" "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.19.4": - "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - "version" "7.19.4" + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz" - "version" "7.20.5" + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== dependencies: "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" @@ -298,48 +277,48 @@ "@babel/types" "^7.20.5" "@babel/helpers@^7.20.7", "@babel/helpers@^7.9.0": - "integrity" "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz" + integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== dependencies: "@babel/template" "^7.20.7" "@babel/traverse" "^7.20.13" "@babel/types" "^7.20.7" "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" + chalk "^2.0.0" + js-tokens "^4.0.0" "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.20.13", "@babel/parser@^7.20.7", "@babel/parser@^7.9.0": - "integrity" "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz" + integrity sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-proposal-optional-chaining" "^7.20.7" "@babel/plugin-proposal-async-generator-functions@^7.0.0", "@babel/plugin-proposal-async-generator-functions@^7.20.1": - "integrity" "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.20.2" @@ -347,26 +326,26 @@ "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz" + integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.7" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.12.9": - "integrity" "sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz" + integrity sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.12" "@babel/helper-plugin-utils" "^7.20.2" @@ -375,65 +354,65 @@ "@babel/plugin-syntax-decorators" "^7.19.0" "@babel/plugin-proposal-dynamic-import@^7.18.6": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-default-from@^7.0.0": - "integrity" "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" - "version" "7.18.10" + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" + integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-default-from" "^7.18.6" "@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.12.13", "@babel/plugin-proposal-object-rest-spread@^7.20.2": - "integrity" "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: "@babel/compat-data" "^7.20.5" "@babel/helper-compilation-targets" "^7.20.7" @@ -442,34 +421,34 @@ "@babel/plugin-transform-parameters" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": - "integrity" "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz" - "version" "7.20.5" + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-create-class-features-plugin" "^7.20.5" @@ -477,187 +456,187 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-decorators@^7.19.0": - "integrity" "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.18.6": - "integrity" "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" + integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.2.0": - "integrity" "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-import-assertions@^7.20.0": - "integrity" "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.18.6": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.20.0": - "integrity" "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.18.6": - "integrity" "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.18.6": - "integrity" "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.18.6": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.20.2": - "integrity" "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz" - "version" "7.20.11" + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz" + integrity sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.20.2": - "integrity" "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz" + integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-compilation-targets" "^7.20.7" @@ -667,105 +646,105 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" + globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.18.9": - "integrity" "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/template" "^7.20.7" "@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.2": - "integrity" "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-duplicate-keys@^7.18.9": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.18.6": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": - "integrity" "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" + integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-flow" "^7.18.6" "@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.18.8": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.18.9": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.18.9": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.18.6": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.19.6": - "integrity" "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz" - "version" "7.20.11" + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6": - "integrity" "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz" - "version" "7.20.11" + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== dependencies: "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-simple-access" "^7.20.2" "@babel/plugin-transform-modules-systemjs@^7.19.6": - "integrity" "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz" - "version" "7.20.11" + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-module-transforms" "^7.20.11" @@ -773,75 +752,75 @@ "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - "integrity" "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz" - "version" "7.20.5" + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.20.5" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-new-target@^7.18.6": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.18.6": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": - "integrity" "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-display-name@^7.0.0": - "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-self@^7.0.0": - "integrity" "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-source@^7.0.0": - "integrity" "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.12.17": - "integrity" "sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz" + integrity sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" @@ -850,96 +829,96 @@ "@babel/types" "^7.20.7" "@babel/plugin-transform-regenerator@^7.18.6": - "integrity" "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz" - "version" "7.20.5" + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" - "regenerator-transform" "^0.15.1" + regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@^7.0.0": - "integrity" "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.19.0" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "semver" "^6.3.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.18.6": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.19.0": - "integrity" "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.18.6": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.18.9": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.5.0": - "integrity" "sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz" + integrity sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.12" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.18.6": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.12.9": - "integrity" "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" - "version" "7.20.2" +"@babel/preset-env@^7.12.9": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -1011,79 +990,79 @@ "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" "@babel/types" "^7.20.2" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "core-js-compat" "^3.25.1" - "semver" "^6.3.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" "@babel/preset-flow@^7.13.13": - "integrity" "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-flow-strip-types" "^7.18.6" "@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" - "esutils" "^2.0.2" + esutils "^2.0.2" "@babel/preset-typescript@^7.13.0": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6" "@babel/register@^7.13.16": - "integrity" "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==" - "resolved" "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== dependencies: - "clone-deep" "^4.0.1" - "find-cache-dir" "^2.0.0" - "make-dir" "^2.1.0" - "pirates" "^4.0.5" - "source-map-support" "^0.5.16" + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.6", "@babel/runtime@^7.8.4": - "integrity" "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz" - "version" "7.20.13" +"@babel/runtime@7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== dependencies: - "regenerator-runtime" "^0.13.11" + regenerator-runtime "^0.13.4" -"@babel/runtime@7.9.0": - "integrity" "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz" - "version" "7.9.0" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.6", "@babel/runtime@^7.8.4": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== dependencies: - "regenerator-runtime" "^0.13.4" + regenerator-runtime "^0.13.11" "@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.8.6": - "integrity" "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" "@babel/traverse@^7.14.0", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.9.0": - "integrity" "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.20.7" @@ -1093,42 +1072,49 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/parser" "^7.20.13" "@babel/types" "^7.20.7" - "debug" "^4.1.0" - "globals" "^11.1.0" + debug "^4.1.0" + globals "^11.1.0" "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.4.4", "@babel/types@^7.9.0": - "integrity" "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" + to-fast-properties "^2.0.0" "@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" "@expo/apple-utils@0.0.0-alpha.31": - "integrity" "sha512-lGJOS8eAPcZhaRl5GZFIg4ZNSRY1k10wYeYXjHUbHxbZGE9lkzrATY8OvrVpcu8qQh3lvPguel63V4mrnoAuOA==" - "resolved" "https://registry.npmjs.org/@expo/apple-utils/-/apple-utils-0.0.0-alpha.31.tgz" - "version" "0.0.0-alpha.31" + version "0.0.0-alpha.31" + resolved "https://registry.npmjs.org/@expo/apple-utils/-/apple-utils-0.0.0-alpha.31.tgz" + integrity sha512-lGJOS8eAPcZhaRl5GZFIg4ZNSRY1k10wYeYXjHUbHxbZGE9lkzrATY8OvrVpcu8qQh3lvPguel63V4mrnoAuOA== -"@expo/bunyan@^4.0.0", "@expo/bunyan@4.0.0": - "integrity" "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==" - "resolved" "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz" - "version" "4.0.0" +"@expo/bunyan@4.0.0", "@expo/bunyan@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz" + integrity sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA== dependencies: - "uuid" "^8.0.0" + uuid "^8.0.0" optionalDependencies: - "mv" "~2" - "safe-json-stringify" "~1" + mv "~2" + safe-json-stringify "~1" "@expo/cli@0.4.11": - "integrity" "sha512-L9Ci9RBh0aPFEDF1AjDYPk54OgeUJIKzxF3lRgITm+lQpI3IEKjAc9LaYeQeO1mlZMUQmPkHArF8iyz1eOeVoQ==" - "resolved" "https://registry.npmjs.org/@expo/cli/-/cli-0.4.11.tgz" - "version" "0.4.11" + version "0.4.11" + resolved "https://registry.npmjs.org/@expo/cli/-/cli-0.4.11.tgz" + integrity sha512-L9Ci9RBh0aPFEDF1AjDYPk54OgeUJIKzxF3lRgITm+lQpI3IEKjAc9LaYeQeO1mlZMUQmPkHArF8iyz1eOeVoQ== dependencies: "@babel/runtime" "^7.14.0" "@expo/code-signing-certificates" "0.0.5" @@ -1147,830 +1133,800 @@ "@expo/xcpretty" "^4.2.1" "@urql/core" "2.3.6" "@urql/exchange-retry" "0.3.0" - "accepts" "^1.3.8" - "arg" "4.1.0" - "better-opn" "~3.0.2" - "bplist-parser" "^0.3.1" - "cacache" "^15.3.0" - "chalk" "^4.0.0" - "ci-info" "^3.3.0" - "debug" "^4.3.4" - "env-editor" "^0.4.1" - "form-data" "^3.0.1" - "freeport-async" "2.0.0" - "fs-extra" "~8.1.0" - "getenv" "^1.0.0" - "graphql" "15.8.0" - "graphql-tag" "^2.10.1" - "https-proxy-agent" "^5.0.1" - "internal-ip" "4.3.0" - "is-root" "^2.1.0" - "js-yaml" "^3.13.1" - "json-schema-deref-sync" "^0.13.0" - "md5-file" "^3.2.3" - "md5hex" "^1.0.0" - "minipass" "3.1.6" - "node-fetch" "^2.6.7" - "node-forge" "^1.3.1" - "npm-package-arg" "^7.0.0" - "ora" "3.4.0" - "pretty-bytes" "5.6.0" - "progress" "2.0.3" - "prompts" "^2.3.2" - "qrcode-terminal" "0.11.0" - "requireg" "^0.2.2" - "resolve-from" "^5.0.0" - "semver" "^6.3.0" - "send" "^0.18.0" - "slugify" "^1.3.4" - "structured-headers" "^0.4.1" - "tar" "^6.0.5" - "tempy" "^0.7.1" - "terminal-link" "^2.1.1" - "text-table" "^0.2.0" - "url-join" "4.0.0" - "uuid" "^3.4.0" - "wrap-ansi" "^7.0.0" + accepts "^1.3.8" + arg "4.1.0" + better-opn "~3.0.2" + bplist-parser "^0.3.1" + cacache "^15.3.0" + chalk "^4.0.0" + ci-info "^3.3.0" + debug "^4.3.4" + env-editor "^0.4.1" + form-data "^3.0.1" + freeport-async "2.0.0" + fs-extra "~8.1.0" + getenv "^1.0.0" + graphql "15.8.0" + graphql-tag "^2.10.1" + https-proxy-agent "^5.0.1" + internal-ip "4.3.0" + is-root "^2.1.0" + js-yaml "^3.13.1" + json-schema-deref-sync "^0.13.0" + md5-file "^3.2.3" + md5hex "^1.0.0" + minipass "3.1.6" + node-fetch "^2.6.7" + node-forge "^1.3.1" + npm-package-arg "^7.0.0" + ora "3.4.0" + pretty-bytes "5.6.0" + progress "2.0.3" + prompts "^2.3.2" + qrcode-terminal "0.11.0" + requireg "^0.2.2" + resolve-from "^5.0.0" + semver "^6.3.0" + send "^0.18.0" + slugify "^1.3.4" + structured-headers "^0.4.1" + tar "^6.0.5" + tempy "^0.7.1" + terminal-link "^2.1.1" + text-table "^0.2.0" + url-join "4.0.0" + uuid "^3.4.0" + wrap-ansi "^7.0.0" "@expo/code-signing-certificates@0.0.5": - "integrity" "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==" - "resolved" "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz" - "version" "0.0.5" + version "0.0.5" + resolved "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz" + integrity sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw== dependencies: - "node-forge" "^1.2.1" - "nullthrows" "^1.1.1" - -"@expo/config-plugins@~5.0.3": - "integrity" "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==" - "resolved" "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz" - "version" "5.0.4" - dependencies: - "@expo/config-types" "^47.0.0" - "@expo/json-file" "8.2.36" - "@expo/plist" "0.0.18" - "@expo/sdk-runtime-versions" "^1.0.0" - "@react-native/normalize-color" "^2.0.0" - "chalk" "^4.1.2" - "debug" "^4.3.1" - "find-up" "~5.0.0" - "getenv" "^1.0.0" - "glob" "7.1.6" - "resolve-from" "^5.0.0" - "semver" "^7.3.5" - "slash" "^3.0.0" - "xcode" "^3.0.1" - "xml2js" "0.4.23" + node-forge "^1.2.1" + nullthrows "^1.1.1" "@expo/config-plugins@4.1.5": - "integrity" "sha512-RVvU40RtZt12HavuDAe+LDIq9lHj7sheOfMEHdmpJ/uTA8pgvkbc56XF6JHQD+yRr6+uhhb+JnAasGq49dsQbw==" - "resolved" "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-4.1.5.tgz" - "version" "4.1.5" + version "4.1.5" + resolved "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-4.1.5.tgz" + integrity sha512-RVvU40RtZt12HavuDAe+LDIq9lHj7sheOfMEHdmpJ/uTA8pgvkbc56XF6JHQD+yRr6+uhhb+JnAasGq49dsQbw== dependencies: "@expo/config-types" "^45.0.0" "@expo/json-file" "8.2.36" "@expo/plist" "0.0.18" "@expo/sdk-runtime-versions" "^1.0.0" "@react-native/normalize-color" "^2.0.0" - "chalk" "^4.1.2" - "debug" "^4.3.1" - "find-up" "~5.0.0" - "getenv" "^1.0.0" - "glob" "7.1.6" - "resolve-from" "^5.0.0" - "semver" "^7.3.5" - "slash" "^3.0.0" - "xcode" "^3.0.1" - "xml2js" "0.4.23" - -"@expo/config-plugins@5.0.4": - "integrity" "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==" - "resolved" "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz" - "version" "5.0.4" + chalk "^4.1.2" + debug "^4.3.1" + find-up "~5.0.0" + getenv "^1.0.0" + glob "7.1.6" + resolve-from "^5.0.0" + semver "^7.3.5" + slash "^3.0.0" + xcode "^3.0.1" + xml2js "0.4.23" + +"@expo/config-plugins@5.0.4", "@expo/config-plugins@~5.0.3": + version "5.0.4" + resolved "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz" + integrity sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg== dependencies: "@expo/config-types" "^47.0.0" "@expo/json-file" "8.2.36" "@expo/plist" "0.0.18" "@expo/sdk-runtime-versions" "^1.0.0" "@react-native/normalize-color" "^2.0.0" - "chalk" "^4.1.2" - "debug" "^4.3.1" - "find-up" "~5.0.0" - "getenv" "^1.0.0" - "glob" "7.1.6" - "resolve-from" "^5.0.0" - "semver" "^7.3.5" - "slash" "^3.0.0" - "xcode" "^3.0.1" - "xml2js" "0.4.23" + chalk "^4.1.2" + debug "^4.3.1" + find-up "~5.0.0" + getenv "^1.0.0" + glob "7.1.6" + resolve-from "^5.0.0" + semver "^7.3.5" + slash "^3.0.0" + xcode "^3.0.1" + xml2js "0.4.23" "@expo/config-types@^45.0.0": - "integrity" "sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA==" - "resolved" "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz" - "version" "45.0.0" + version "45.0.0" + resolved "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz" + integrity sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA== "@expo/config-types@^47.0.0": - "integrity" "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" - "resolved" "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz" - "version" "47.0.0" - -"@expo/config@~7.0.2", "@expo/config@7.0.3": - "integrity" "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==" - "resolved" "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "@babel/code-frame" "~7.10.4" - "@expo/config-plugins" "~5.0.3" - "@expo/config-types" "^47.0.0" - "@expo/json-file" "8.2.36" - "getenv" "^1.0.0" - "glob" "7.1.6" - "require-from-string" "^2.0.2" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "slugify" "^1.3.4" - "sucrase" "^3.20.0" + version "47.0.0" + resolved "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz" + integrity sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g== "@expo/config@6.0.24": - "integrity" "sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA==" - "resolved" "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz" - "version" "6.0.24" + version "6.0.24" + resolved "https://registry.npmjs.org/@expo/config/-/config-6.0.24.tgz" + integrity sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA== dependencies: "@babel/code-frame" "~7.10.4" "@expo/config-plugins" "4.1.5" "@expo/config-types" "^45.0.0" "@expo/json-file" "8.2.36" - "getenv" "^1.0.0" - "glob" "7.1.6" - "require-from-string" "^2.0.2" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "slugify" "^1.3.4" - "sucrase" "^3.20.0" + getenv "^1.0.0" + glob "7.1.6" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + semver "7.3.2" + slugify "^1.3.4" + sucrase "^3.20.0" + +"@expo/config@7.0.3", "@expo/config@~7.0.2": + version "7.0.3" + resolved "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz" + integrity sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA== + dependencies: + "@babel/code-frame" "~7.10.4" + "@expo/config-plugins" "~5.0.3" + "@expo/config-types" "^47.0.0" + "@expo/json-file" "8.2.36" + getenv "^1.0.0" + glob "7.1.6" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + semver "7.3.2" + slugify "^1.3.4" + sucrase "^3.20.0" "@expo/dev-server@0.1.115": - "integrity" "sha512-kqr71GAXzBVmjT+qSmqckBKY6Y9lFf4Oy1S4aVygx72CNgyzVTw4CPqT5RsNhcvQEEdACgarczDbPnNkmrm7GQ==" - "resolved" "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.115.tgz" - "version" "0.1.115" + version "0.1.115" + resolved "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.115.tgz" + integrity sha512-kqr71GAXzBVmjT+qSmqckBKY6Y9lFf4Oy1S4aVygx72CNgyzVTw4CPqT5RsNhcvQEEdACgarczDbPnNkmrm7GQ== dependencies: "@expo/bunyan" "4.0.0" "@expo/metro-config" "0.3.18" "@expo/osascript" "2.0.33" - "body-parser" "1.19.0" - "chalk" "^4.0.0" - "connect" "^3.7.0" - "fs-extra" "9.0.0" - "node-fetch" "^2.6.0" - "open" "^8.3.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "serialize-error" "6.0.0" - "temp-dir" "^2.0.0" + body-parser "1.19.0" + chalk "^4.0.0" + connect "^3.7.0" + fs-extra "9.0.0" + node-fetch "^2.6.0" + open "^8.3.0" + resolve-from "^5.0.0" + semver "7.3.2" + serialize-error "6.0.0" + temp-dir "^2.0.0" "@expo/dev-server@0.1.124": - "integrity" "sha512-iHczVcf+rgWupCY/3b3ePIizNtzsy1O/w8jdKv3bKvoOfXiVIVOo4KGiVDpAJOahKiMOsRlbKeemB8OLNKzdSA==" - "resolved" "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.124.tgz" - "version" "0.1.124" + version "0.1.124" + resolved "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.124.tgz" + integrity sha512-iHczVcf+rgWupCY/3b3ePIizNtzsy1O/w8jdKv3bKvoOfXiVIVOo4KGiVDpAJOahKiMOsRlbKeemB8OLNKzdSA== dependencies: "@expo/bunyan" "4.0.0" "@expo/metro-config" "~0.5.1" "@expo/osascript" "2.0.33" "@expo/spawn-async" "^1.5.0" - "body-parser" "^1.20.1" - "chalk" "^4.0.0" - "connect" "^3.7.0" - "fs-extra" "9.0.0" - "is-docker" "^2.0.0" - "is-wsl" "^2.1.1" - "node-fetch" "^2.6.0" - "open" "^8.3.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "serialize-error" "6.0.0" - "temp-dir" "^2.0.0" + body-parser "^1.20.1" + chalk "^4.0.0" + connect "^3.7.0" + fs-extra "9.0.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" + node-fetch "^2.6.0" + open "^8.3.0" + resolve-from "^5.0.0" + semver "7.3.2" + serialize-error "6.0.0" + temp-dir "^2.0.0" "@expo/devcert@^1.0.0": - "integrity" "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==" - "resolved" "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "application-config-path" "^0.1.0" - "command-exists" "^1.2.4" - "debug" "^3.1.0" - "eol" "^0.9.1" - "get-port" "^3.2.0" - "glob" "^7.1.2" - "lodash" "^4.17.4" - "mkdirp" "^0.5.1" - "password-prompt" "^1.0.4" - "rimraf" "^2.6.2" - "sudo-prompt" "^8.2.0" - "tmp" "^0.0.33" - "tslib" "^2.4.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz" + integrity sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA== + dependencies: + application-config-path "^0.1.0" + command-exists "^1.2.4" + debug "^3.1.0" + eol "^0.9.1" + get-port "^3.2.0" + glob "^7.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + password-prompt "^1.0.4" + rimraf "^2.6.2" + sudo-prompt "^8.2.0" + tmp "^0.0.33" + tslib "^2.4.0" "@expo/image-utils@0.3.21": - "integrity" "sha512-Ha7pNcpl52RJIeYz3gR1ajOgPPl7WLZWiLqtLi94s9J0a7FvmNBMqd/VKrfHNj8QmtZxXcmXr7y7tPhZbVFg7w==" - "resolved" "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.21.tgz" - "version" "0.3.21" + version "0.3.21" + resolved "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.21.tgz" + integrity sha512-Ha7pNcpl52RJIeYz3gR1ajOgPPl7WLZWiLqtLi94s9J0a7FvmNBMqd/VKrfHNj8QmtZxXcmXr7y7tPhZbVFg7w== dependencies: "@expo/spawn-async" "1.5.0" - "chalk" "^4.0.0" - "fs-extra" "9.0.0" - "getenv" "^1.0.0" - "jimp-compact" "0.16.1" - "mime" "^2.4.4" - "node-fetch" "^2.6.0" - "parse-png" "^2.1.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "tempy" "0.3.0" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + mime "^2.4.4" + node-fetch "^2.6.0" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "7.3.2" + tempy "0.3.0" "@expo/image-utils@0.3.22": - "integrity" "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==" - "resolved" "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz" - "version" "0.3.22" + version "0.3.22" + resolved "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz" + integrity sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ== dependencies: "@expo/spawn-async" "1.5.0" - "chalk" "^4.0.0" - "fs-extra" "9.0.0" - "getenv" "^1.0.0" - "jimp-compact" "0.16.1" - "mime" "^2.4.4" - "node-fetch" "^2.6.0" - "parse-png" "^2.1.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "tempy" "0.3.0" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + mime "^2.4.4" + node-fetch "^2.6.0" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "7.3.2" + tempy "0.3.0" "@expo/image-utils@0.3.23": - "integrity" "sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw==" - "resolved" "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz" - "version" "0.3.23" + version "0.3.23" + resolved "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz" + integrity sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw== dependencies: "@expo/spawn-async" "1.5.0" - "chalk" "^4.0.0" - "fs-extra" "9.0.0" - "getenv" "^1.0.0" - "jimp-compact" "0.16.1" - "mime" "^2.4.4" - "node-fetch" "^2.6.0" - "parse-png" "^2.1.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "tempy" "0.3.0" - -"@expo/json-file@^8.2.35": - "integrity" "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==" - "resolved" "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz" - "version" "8.2.37" - dependencies: - "@babel/code-frame" "~7.10.4" - "json5" "^2.2.2" - "write-file-atomic" "^2.3.0" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + mime "^2.4.4" + node-fetch "^2.6.0" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "7.3.2" + tempy "0.3.0" "@expo/json-file@8.2.36": - "integrity" "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==" - "resolved" "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz" - "version" "8.2.36" + version "8.2.36" + resolved "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz" + integrity sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ== dependencies: "@babel/code-frame" "~7.10.4" - "json5" "^1.0.1" - "write-file-atomic" "^2.3.0" + json5 "^1.0.1" + write-file-atomic "^2.3.0" -"@expo/json-file@8.2.37": - "integrity" "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==" - "resolved" "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz" - "version" "8.2.37" +"@expo/json-file@8.2.37", "@expo/json-file@^8.2.35": + version "8.2.37" + resolved "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz" + integrity sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q== dependencies: "@babel/code-frame" "~7.10.4" - "json5" "^2.2.2" - "write-file-atomic" "^2.3.0" + json5 "^2.2.2" + write-file-atomic "^2.3.0" -"@expo/metro-config@~0.5.0", "@expo/metro-config@~0.5.1": - "integrity" "sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==" - "resolved" "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz" - "version" "0.5.2" +"@expo/metro-config@0.3.18": + version "0.3.18" + resolved "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.3.18.tgz" + integrity sha512-DWtwV67kD8X2uOKIs5QyHlHD+6L6RAgudZZDBmu433ZvL62HAUYfjEi3+i0jeMiUqN85o1vbXg6xqWnBCpS50g== dependencies: - "@expo/config" "~7.0.2" + "@expo/config" "6.0.24" "@expo/json-file" "8.2.36" - "chalk" "^4.1.0" - "debug" "^4.3.2" - "find-yarn-workspace-root" "~2.0.0" - "getenv" "^1.0.0" - "resolve-from" "^5.0.0" - "sucrase" "^3.20.0" + chalk "^4.1.0" + debug "^4.3.2" + find-yarn-workspace-root "~2.0.0" + getenv "^1.0.0" + resolve-from "^5.0.0" + sucrase "^3.20.0" -"@expo/metro-config@0.3.18": - "integrity" "sha512-DWtwV67kD8X2uOKIs5QyHlHD+6L6RAgudZZDBmu433ZvL62HAUYfjEi3+i0jeMiUqN85o1vbXg6xqWnBCpS50g==" - "resolved" "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.3.18.tgz" - "version" "0.3.18" +"@expo/metro-config@~0.5.0", "@expo/metro-config@~0.5.1": + version "0.5.2" + resolved "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz" + integrity sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog== dependencies: - "@expo/config" "6.0.24" + "@expo/config" "~7.0.2" "@expo/json-file" "8.2.36" - "chalk" "^4.1.0" - "debug" "^4.3.2" - "find-yarn-workspace-root" "~2.0.0" - "getenv" "^1.0.0" - "resolve-from" "^5.0.0" - "sucrase" "^3.20.0" - -"@expo/osascript@^2.0.31", "@expo/osascript@2.0.33": - "integrity" "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==" - "resolved" "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz" - "version" "2.0.33" + chalk "^4.1.0" + debug "^4.3.2" + find-yarn-workspace-root "~2.0.0" + getenv "^1.0.0" + resolve-from "^5.0.0" + sucrase "^3.20.0" + +"@expo/osascript@2.0.33", "@expo/osascript@^2.0.31": + version "2.0.33" + resolved "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz" + integrity sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ== dependencies: "@expo/spawn-async" "^1.5.0" - "exec-async" "^2.2.0" + exec-async "^2.2.0" -"@expo/package-manager@~0.0.53": - "integrity" "sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ==" - "resolved" "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.57.tgz" - "version" "0.0.57" +"@expo/package-manager@0.0.56": + version "0.0.56" + resolved "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.56.tgz" + integrity sha512-PGk34uz4XDyhoNIlPh2D+BDsiXYuW2jXavTiax8d32uvHlRO6FN0cAsqlWD6fx3H2hRn8cU/leTuc4M7pYovCQ== dependencies: "@expo/json-file" "8.2.36" "@expo/spawn-async" "^1.5.0" - "ansi-regex" "^5.0.0" - "chalk" "^4.0.0" - "find-up" "^5.0.0" - "find-yarn-workspace-root" "~2.0.0" - "npm-package-arg" "^7.0.0" - "rimraf" "^3.0.2" - "split" "^1.0.1" - "sudo-prompt" "9.1.1" + ansi-regex "^5.0.0" + chalk "^4.0.0" + find-up "^5.0.0" + find-yarn-workspace-root "~2.0.0" + npm-package-arg "^7.0.0" + rimraf "^3.0.2" + split "^1.0.1" + sudo-prompt "9.1.1" -"@expo/package-manager@0.0.56": - "integrity" "sha512-PGk34uz4XDyhoNIlPh2D+BDsiXYuW2jXavTiax8d32uvHlRO6FN0cAsqlWD6fx3H2hRn8cU/leTuc4M7pYovCQ==" - "resolved" "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.56.tgz" - "version" "0.0.56" +"@expo/package-manager@~0.0.53": + version "0.0.57" + resolved "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.57.tgz" + integrity sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ== dependencies: "@expo/json-file" "8.2.36" "@expo/spawn-async" "^1.5.0" - "ansi-regex" "^5.0.0" - "chalk" "^4.0.0" - "find-up" "^5.0.0" - "find-yarn-workspace-root" "~2.0.0" - "npm-package-arg" "^7.0.0" - "rimraf" "^3.0.2" - "split" "^1.0.1" - "sudo-prompt" "9.1.1" - -"@expo/plist@^0.0.18", "@expo/plist@0.0.18": - "integrity" "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==" - "resolved" "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz" - "version" "0.0.18" + ansi-regex "^5.0.0" + chalk "^4.0.0" + find-up "^5.0.0" + find-yarn-workspace-root "~2.0.0" + npm-package-arg "^7.0.0" + rimraf "^3.0.2" + split "^1.0.1" + sudo-prompt "9.1.1" + +"@expo/plist@0.0.18", "@expo/plist@^0.0.18": + version "0.0.18" + resolved "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz" + integrity sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w== dependencies: "@xmldom/xmldom" "~0.7.0" - "base64-js" "^1.2.3" - "xmlbuilder" "^14.0.0" + base64-js "^1.2.3" + xmlbuilder "^14.0.0" "@expo/plist@0.0.20": - "integrity" "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==" - "resolved" "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz" - "version" "0.0.20" + version "0.0.20" + resolved "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz" + integrity sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA== dependencies: "@xmldom/xmldom" "~0.7.7" - "base64-js" "^1.2.3" - "xmlbuilder" "^14.0.0" + base64-js "^1.2.3" + xmlbuilder "^14.0.0" "@expo/prebuild-config@4.0.3": - "integrity" "sha512-ZRMn0a9Wo/coKXLMvizUytqtG5pniUHaBMSS28yFTcGVvyDJh2nFVkBf9po52mSkbm9rGp/Pev6GAf57m6S2BA==" - "resolved" "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-4.0.3.tgz" - "version" "4.0.3" + version "4.0.3" + resolved "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-4.0.3.tgz" + integrity sha512-ZRMn0a9Wo/coKXLMvizUytqtG5pniUHaBMSS28yFTcGVvyDJh2nFVkBf9po52mSkbm9rGp/Pev6GAf57m6S2BA== dependencies: "@expo/config" "6.0.24" "@expo/config-plugins" "4.1.5" "@expo/config-types" "^45.0.0" "@expo/image-utils" "0.3.21" "@expo/json-file" "8.2.36" - "debug" "^4.3.1" - "expo-modules-autolinking" "0.8.1" - "fs-extra" "^9.0.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "xml2js" "0.4.23" + debug "^4.3.1" + expo-modules-autolinking "0.8.1" + fs-extra "^9.0.0" + resolve-from "^5.0.0" + semver "7.3.2" + xml2js "0.4.23" "@expo/prebuild-config@5.0.7": - "integrity" "sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==" - "resolved" "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz" - "version" "5.0.7" + version "5.0.7" + resolved "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz" + integrity sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew== dependencies: "@expo/config" "~7.0.2" "@expo/config-plugins" "~5.0.3" "@expo/config-types" "^47.0.0" "@expo/image-utils" "0.3.22" "@expo/json-file" "8.2.36" - "debug" "^4.3.1" - "fs-extra" "^9.0.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "xml2js" "0.4.23" + debug "^4.3.1" + fs-extra "^9.0.0" + resolve-from "^5.0.0" + semver "7.3.2" + xml2js "0.4.23" "@expo/rudder-sdk-node@1.1.1": - "integrity" "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==" - "resolved" "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz" + integrity sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ== dependencies: "@expo/bunyan" "^4.0.0" "@segment/loosely-validate-event" "^2.0.0" - "fetch-retry" "^4.1.1" - "md5" "^2.2.1" - "node-fetch" "^2.6.1" - "remove-trailing-slash" "^0.1.0" - "uuid" "^8.3.2" + fetch-retry "^4.1.1" + md5 "^2.2.1" + node-fetch "^2.6.1" + remove-trailing-slash "^0.1.0" + uuid "^8.3.2" "@expo/schemer@1.4.4": - "integrity" "sha512-cZo7hhjuEpOl5qf8nidZPlusRX4GXWRh24pOkM6LP2FGLMNdfazcJj1TU6h3h9FY5G6xLfGxpDhF/JETL9Qj+A==" - "resolved" "https://registry.npmjs.org/@expo/schemer/-/schemer-1.4.4.tgz" - "version" "1.4.4" + version "1.4.4" + resolved "https://registry.npmjs.org/@expo/schemer/-/schemer-1.4.4.tgz" + integrity sha512-cZo7hhjuEpOl5qf8nidZPlusRX4GXWRh24pOkM6LP2FGLMNdfazcJj1TU6h3h9FY5G6xLfGxpDhF/JETL9Qj+A== dependencies: - "ajv" "^8.1.0" - "ajv-formats" "^2.0.2" - "json-schema-traverse" "^1.0.0" - "lodash" "^4.17.21" - "probe-image-size" "^7.1.0" - "read-chunk" "^3.2.0" + ajv "^8.1.0" + ajv-formats "^2.0.2" + json-schema-traverse "^1.0.0" + lodash "^4.17.21" + probe-image-size "^7.1.0" + read-chunk "^3.2.0" "@expo/sdk-runtime-versions@^1.0.0": - "integrity" "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==" - "resolved" "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz" + integrity sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ== -"@expo/spawn-async@^1.5.0": - "integrity" "sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ==" - "resolved" "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz" - "version" "1.7.0" +"@expo/spawn-async@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz" + integrity sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew== dependencies: - "cross-spawn" "^7.0.3" + cross-spawn "^6.0.5" -"@expo/spawn-async@1.5.0": - "integrity" "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==" - "resolved" "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz" - "version" "1.5.0" +"@expo/spawn-async@^1.5.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.0.tgz" + integrity sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ== dependencies: - "cross-spawn" "^6.0.5" + cross-spawn "^7.0.3" "@expo/vector-icons@^13.0.0": - "integrity" "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==" - "resolved" "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz" - "version" "13.0.0" + version "13.0.0" + resolved "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz" + integrity sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA== "@expo/webpack-config@0.17.4": - "integrity" "sha512-vn37RDhYowfLc2oRaXhmbI/9FStjQFXPONG3yRLfwUnA4dRtfXapJUSKHJKRwOy4fBBmTrb2tthtsdb4zeWmsw==" - "resolved" "https://registry.npmjs.org/@expo/webpack-config/-/webpack-config-0.17.4.tgz" - "version" "0.17.4" + version "0.17.4" + resolved "https://registry.npmjs.org/@expo/webpack-config/-/webpack-config-0.17.4.tgz" + integrity sha512-vn37RDhYowfLc2oRaXhmbI/9FStjQFXPONG3yRLfwUnA4dRtfXapJUSKHJKRwOy4fBBmTrb2tthtsdb4zeWmsw== dependencies: "@babel/core" "7.9.0" - "babel-loader" "8.1.0" - "chalk" "^4.0.0" - "clean-webpack-plugin" "^3.0.0" - "copy-webpack-plugin" "~6.0.3" - "css-loader" "~3.6.0" - "expo-pwa" "0.0.124" - "file-loader" "~6.0.0" - "find-yarn-workspace-root" "~2.0.0" - "getenv" "^1.0.0" - "html-loader" "~1.1.0" - "html-webpack-plugin" "~4.3.0" - "image-size" "^1.0.0" - "is-wsl" "^2.0.0" - "loader-utils" "^2.0.0" - "mini-css-extract-plugin" "^0.5.0" - "node-html-parser" "^1.2.12" - "optimize-css-assets-webpack-plugin" "^5.0.3" - "pnp-webpack-plugin" "^1.5.0" - "postcss-safe-parser" "^4.0.2" - "react-dev-utils" "~11.0.1" - "schema-utils" "^3.1.1" - "semver" "~7.3.2" - "style-loader" "~1.2.1" - "terser-webpack-plugin" "^3.0.6" - "url-loader" "~4.1.0" - "webpack" "4.43.0" - "webpack-dev-server" "3.11.0" - "webpack-manifest-plugin" "~2.2.0" + babel-loader "8.1.0" + chalk "^4.0.0" + clean-webpack-plugin "^3.0.0" + copy-webpack-plugin "~6.0.3" + css-loader "~3.6.0" + expo-pwa "0.0.124" + file-loader "~6.0.0" + find-yarn-workspace-root "~2.0.0" + getenv "^1.0.0" + html-loader "~1.1.0" + html-webpack-plugin "~4.3.0" + image-size "^1.0.0" + is-wsl "^2.0.0" + loader-utils "^2.0.0" + mini-css-extract-plugin "^0.5.0" + node-html-parser "^1.2.12" + optimize-css-assets-webpack-plugin "^5.0.3" + pnp-webpack-plugin "^1.5.0" + postcss-safe-parser "^4.0.2" + react-dev-utils "~11.0.1" + schema-utils "^3.1.1" + semver "~7.3.2" + style-loader "~1.2.1" + terser-webpack-plugin "^3.0.6" + url-loader "~4.1.0" + webpack "4.43.0" + webpack-dev-server "3.11.0" + webpack-manifest-plugin "~2.2.0" "@expo/xcpretty@^4.1.0", "@expo/xcpretty@^4.2.1": - "integrity" "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==" - "resolved" "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz" - "version" "4.2.2" + version "4.2.2" + resolved "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz" + integrity sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw== dependencies: "@babel/code-frame" "7.10.4" - "chalk" "^4.1.0" - "find-up" "^5.0.0" - "js-yaml" "^4.1.0" + chalk "^4.1.0" + find-up "^5.0.0" + js-yaml "^4.1.0" "@gar/promisify@^1.0.1": - "integrity" "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" - "resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" - "version" "1.1.3" + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@graphql-typed-document-node/core@^3.1.0": - "integrity" "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==" - "resolved" "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz" - "version" "3.1.1" + version "3.1.1" + resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz" + integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== "@hapi/hoek@^9.0.0": - "integrity" "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - "version" "9.3.0" + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/topo@^5.0.0": - "integrity" "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==" - "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - "version" "5.1.0" + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" "@jest/create-cache-key-function@^29.0.3": - "integrity" "sha512-RmQicJx9z6izyunr/9m7ncJc2NbvIdcrC2VGXl0A7fHsh6aMO38nC8353bzitg5RuEERoVV2pbbLMlhcBL67KQ==" - "resolved" "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.4.0.tgz" - "version" "29.4.0" + version "29.4.0" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.4.0.tgz" + integrity sha512-RmQicJx9z6izyunr/9m7ncJc2NbvIdcrC2VGXl0A7fHsh6aMO38nC8353bzitg5RuEERoVV2pbbLMlhcBL67KQ== dependencies: "@jest/types" "^29.4.0" "@jest/schemas@^29.4.0": - "integrity" "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz" - "version" "29.4.0" + version "29.4.0" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz" + integrity sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ== dependencies: "@sinclair/typebox" "^0.25.16" "@jest/types@^26.6.2": - "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^15.0.0" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jest/types@^27.5.1": - "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^16.0.0" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jest/types@^29.4.0": - "integrity" "sha512-1S2Dt5uQp7R0bGY/L2BpuwCSji7v12kY3o8zqwlkbYBmOY956SKk+zOWqmfhHSINegiAVqOXydAYuWpzX6TYsQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.4.0.tgz" - "version" "29.4.0" + version "29.4.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.4.0.tgz" + integrity sha512-1S2Dt5uQp7R0bGY/L2BpuwCSji7v12kY3o8zqwlkbYBmOY956SKk+zOWqmfhHSINegiAVqOXydAYuWpzX6TYsQ== dependencies: "@jest/schemas" "^29.4.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - "version" "0.3.17" + version "0.3.17" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" + run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" + fastq "^1.6.0" "@npmcli/fs@^1.0.0": - "integrity" "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==" - "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" - "semver" "^7.3.5" + semver "^7.3.5" "@npmcli/move-file@^1.0.1": - "integrity" "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==" - "resolved" "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: - "mkdirp" "^1.0.4" - "rimraf" "^3.0.2" + mkdirp "^1.0.4" + rimraf "^3.0.2" "@react-native-community/cli-clean@^9.2.1": - "integrity" "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz" - "version" "9.2.1" + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz" + integrity sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ== dependencies: "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "execa" "^1.0.0" - "prompts" "^2.4.0" + chalk "^4.1.2" + execa "^1.0.0" + prompts "^2.4.0" "@react-native-community/cli-config@^9.2.1": - "integrity" "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz" - "version" "9.2.1" + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz" + integrity sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ== dependencies: "@react-native-community/cli-tools" "^9.2.1" - "cosmiconfig" "^5.1.0" - "deepmerge" "^3.2.0" - "glob" "^7.1.3" - "joi" "^17.2.1" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + glob "^7.1.3" + joi "^17.2.1" "@react-native-community/cli-debugger-ui@^9.0.0": - "integrity" "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz" - "version" "9.0.0" + version "9.0.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz" + integrity sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA== dependencies: - "serve-static" "^1.13.1" + serve-static "^1.13.1" "@react-native-community/cli-doctor@^9.2.1": - "integrity" "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz" - "version" "9.3.0" + version "9.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz" + integrity sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA== dependencies: "@react-native-community/cli-config" "^9.2.1" "@react-native-community/cli-platform-ios" "^9.3.0" "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "command-exists" "^1.2.8" - "envinfo" "^7.7.2" - "execa" "^1.0.0" - "hermes-profile-transformer" "^0.0.6" - "ip" "^1.1.5" - "node-stream-zip" "^1.9.1" - "ora" "^5.4.1" - "prompts" "^2.4.0" - "semver" "^6.3.0" - "strip-ansi" "^5.2.0" - "sudo-prompt" "^9.0.0" - "wcwidth" "^1.0.1" + chalk "^4.1.2" + command-exists "^1.2.8" + envinfo "^7.7.2" + execa "^1.0.0" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + node-stream-zip "^1.9.1" + ora "^5.4.1" + prompts "^2.4.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" "@react-native-community/cli-hermes@^9.2.1": - "integrity" "sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz" - "version" "9.3.1" + version "9.3.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz" + integrity sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ== dependencies: "@react-native-community/cli-platform-android" "^9.3.1" "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "hermes-profile-transformer" "^0.0.6" - "ip" "^1.1.5" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" -"@react-native-community/cli-platform-android@^9.3.1": - "integrity" "sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz" - "version" "9.3.1" +"@react-native-community/cli-platform-android@9.2.1": + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz" + integrity sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg== dependencies: "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "execa" "^1.0.0" - "fs-extra" "^8.1.0" - "glob" "^7.1.3" - "logkitty" "^0.7.1" - "slash" "^3.0.0" + chalk "^4.1.2" + execa "^1.0.0" + fs-extra "^8.1.0" + glob "^7.1.3" + logkitty "^0.7.1" + slash "^3.0.0" -"@react-native-community/cli-platform-android@9.2.1": - "integrity" "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz" - "version" "9.2.1" +"@react-native-community/cli-platform-android@^9.3.1": + version "9.3.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz" + integrity sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew== dependencies: "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "execa" "^1.0.0" - "fs-extra" "^8.1.0" - "glob" "^7.1.3" - "logkitty" "^0.7.1" - "slash" "^3.0.0" + chalk "^4.1.2" + execa "^1.0.0" + fs-extra "^8.1.0" + glob "^7.1.3" + logkitty "^0.7.1" + slash "^3.0.0" -"@react-native-community/cli-platform-ios@^9.3.0": - "integrity" "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz" - "version" "9.3.0" +"@react-native-community/cli-platform-ios@9.2.1": + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz" + integrity sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg== dependencies: "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "execa" "^1.0.0" - "glob" "^7.1.3" - "ora" "^5.4.1" + chalk "^4.1.2" + execa "^1.0.0" + glob "^7.1.3" + ora "^5.4.1" -"@react-native-community/cli-platform-ios@9.2.1": - "integrity" "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz" - "version" "9.2.1" +"@react-native-community/cli-platform-ios@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz" + integrity sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw== dependencies: "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "execa" "^1.0.0" - "glob" "^7.1.3" - "ora" "^5.4.1" + chalk "^4.1.2" + execa "^1.0.0" + glob "^7.1.3" + ora "^5.4.1" "@react-native-community/cli-plugin-metro@^9.2.1": - "integrity" "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz" - "version" "9.2.1" + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz" + integrity sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ== dependencies: "@react-native-community/cli-server-api" "^9.2.1" "@react-native-community/cli-tools" "^9.2.1" - "chalk" "^4.1.2" - "metro" "0.72.3" - "metro-config" "0.72.3" - "metro-core" "0.72.3" - "metro-react-native-babel-transformer" "0.72.3" - "metro-resolver" "0.72.3" - "metro-runtime" "0.72.3" - "readline" "^1.3.0" + chalk "^4.1.2" + metro "0.72.3" + metro-config "0.72.3" + metro-core "0.72.3" + metro-react-native-babel-transformer "0.72.3" + metro-resolver "0.72.3" + metro-runtime "0.72.3" + readline "^1.3.0" "@react-native-community/cli-server-api@^9.2.1": - "integrity" "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz" - "version" "9.2.1" + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz" + integrity sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw== dependencies: "@react-native-community/cli-debugger-ui" "^9.0.0" "@react-native-community/cli-tools" "^9.2.1" - "compression" "^1.7.1" - "connect" "^3.6.5" - "errorhandler" "^1.5.0" - "nocache" "^3.0.1" - "pretty-format" "^26.6.2" - "serve-static" "^1.13.1" - "ws" "^7.5.1" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.0" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" "@react-native-community/cli-tools@^9.2.1": - "integrity" "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz" - "version" "9.2.1" - dependencies: - "appdirsjs" "^1.2.4" - "chalk" "^4.1.2" - "find-up" "^5.0.0" - "mime" "^2.4.1" - "node-fetch" "^2.6.0" - "open" "^6.2.0" - "ora" "^5.4.1" - "semver" "^6.3.0" - "shell-quote" "^1.7.3" + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz" + integrity sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^6.3.0" + shell-quote "^1.7.3" "@react-native-community/cli-types@^9.1.0": - "integrity" "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz" - "version" "9.1.0" + version "9.1.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz" + integrity sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g== dependencies: - "joi" "^17.2.1" + joi "^17.2.1" "@react-native-community/cli@9.2.1": - "integrity" "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==" - "resolved" "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz" - "version" "9.2.1" + version "9.2.1" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz" + integrity sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ== dependencies: "@react-native-community/cli-clean" "^9.2.1" "@react-native-community/cli-config" "^9.2.1" @@ -1981,93 +1937,93 @@ "@react-native-community/cli-server-api" "^9.2.1" "@react-native-community/cli-tools" "^9.2.1" "@react-native-community/cli-types" "^9.1.0" - "chalk" "^4.1.2" - "commander" "^9.4.0" - "execa" "^1.0.0" - "find-up" "^4.1.0" - "fs-extra" "^8.1.0" - "graceful-fs" "^4.1.3" - "prompts" "^2.4.0" - "semver" "^6.3.0" + chalk "^4.1.2" + commander "^9.4.0" + execa "^1.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.0" + semver "^6.3.0" "@react-native/assets@1.0.0": - "integrity" "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==" - "resolved" "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz" - "version" "1.0.0" - -"@react-native/normalize-color@^2.0.0": - "integrity" "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==" - "resolved" "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz" - "version" "2.1.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz" + integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== "@react-native/normalize-color@2.0.0": - "integrity" "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==" - "resolved" "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz" + integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== + +"@react-native/normalize-color@^2.0.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz" + integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== "@react-native/polyfills@2.0.0": - "integrity" "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==" - "resolved" "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz" + integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== "@segment/loosely-validate-event@^2.0.0": - "integrity" "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==" - "resolved" "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz" + integrity sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw== dependencies: - "component-type" "^1.2.1" - "join-component" "^1.1.0" + component-type "^1.2.1" + join-component "^1.1.0" "@sideway/address@^4.1.3": - "integrity" "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==" - "resolved" "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" - "version" "4.1.4" + version "4.1.4" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" "@sideway/formula@^3.0.0": - "integrity" "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - "resolved" "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== "@sideway/pinpoint@^2.0.0": - "integrity" "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - "resolved" "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== "@sinclair/typebox@^0.25.16": - "integrity" "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz" - "version" "0.25.21" + version "0.25.21" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz" + integrity sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g== "@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0": - "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" - "version" "4.6.0" + version "4.6.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "defer-to-connect" "^1.0.1" + defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": - "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" - "version" "4.0.6" + version "4.0.6" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - "defer-to-connect" "^2.0.0" + defer-to-connect "^2.0.0" "@types/cacheable-request@^6.0.1": - "integrity" "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==" - "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" - "version" "6.0.3" + version "6.0.3" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "^3.1.4" @@ -2075,246 +2031,251 @@ "@types/responselike" "^1.0.0" "@types/glob@^7.1.1": - "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" +"@types/hammerjs@^2.0.36": + version "2.0.41" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa" + integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA== + "@types/html-minifier-terser@^5.0.0": - "integrity" "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz" + integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== "@types/http-cache-semantics@*": - "integrity" "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" - "version" "4.0.1" + version "4.0.1" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": - "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - "version" "7.0.11" + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/keyv@^3.1.4": - "integrity" "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==" - "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" - "version" "3.1.4" + version "3.1.4" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" "@types/minimatch@*": - "integrity" "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node@*": - "integrity" "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" - "version" "18.11.18" + version "18.11.18" + resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" + integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== "@types/prop-types@*": - "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - "version" "15.7.5" + version "15.7.5" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/q@^1.5.1": - "integrity" "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - "resolved" "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" - "version" "1.5.5" + version "1.5.5" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/react-native@~0.70.6": - "integrity" "sha512-0C6sIo13ztzM2llaWdTq0Vpscx3VdU0T8F45kEurWv3l5n+BHm/Mkr8Z+N29eXDYGhTvCz5y2jegB8JyiVa5kw==" - "resolved" "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.9.tgz" - "version" "0.70.9" + version "0.70.9" + resolved "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.9.tgz" + integrity sha512-0C6sIo13ztzM2llaWdTq0Vpscx3VdU0T8F45kEurWv3l5n+BHm/Mkr8Z+N29eXDYGhTvCz5y2jegB8JyiVa5kw== dependencies: "@types/react" "*" "@types/react@*", "@types/react@~18.0.14": - "integrity" "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz" - "version" "18.0.27" + version "18.0.27" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz" + integrity sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" "@types/responselike@^1.0.0": - "integrity" "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==" - "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== dependencies: "@types/node" "*" "@types/retry@^0.12.0": - "integrity" "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" - "version" "0.12.2" + version "0.12.2" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== "@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" + version "0.16.2" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/source-list-map@*": - "integrity" "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" - "resolved" "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" - "version" "0.1.2" + version "0.1.2" + resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/tapable@^1", "@types/tapable@^1.0.5": - "integrity" "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==" - "resolved" "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" - "version" "1.0.8" + version "1.0.8" + resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/uglify-js@*": - "integrity" "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==" - "resolved" "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz" - "version" "3.17.1" + version "3.17.1" + resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== dependencies: - "source-map" "^0.6.1" + source-map "^0.6.1" "@types/webpack-sources@*": - "integrity" "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==" - "resolved" "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" - "version" "3.2.0" + version "3.2.0" + resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== dependencies: "@types/node" "*" "@types/source-list-map" "*" - "source-map" "^0.7.3" + source-map "^0.7.3" "@types/webpack@^4.4.31", "@types/webpack@^4.41.8": - "integrity" "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==" - "resolved" "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz" - "version" "4.41.33" + version "4.41.33" + resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== dependencies: "@types/node" "*" "@types/tapable" "^1" "@types/uglify-js" "*" "@types/webpack-sources" "*" - "anymatch" "^3.0.0" - "source-map" "^0.6.0" + anymatch "^3.0.0" + source-map "^0.6.0" "@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^15.0.0": - "integrity" "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz" - "version" "15.0.15" + version "15.0.15" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz" + integrity sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - "integrity" "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz" - "version" "16.0.5" + version "16.0.5" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz" + integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - "integrity" "sha512-eknWrTHofQuPk2iuqDm1waA7V6xPlbgBoaaXEgYkClhLOnB0TtbW+srJaOToAgawPxPlHQzwypFA2bhZaUGP5A==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.20.tgz" - "version" "17.0.20" + version "17.0.20" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.20.tgz" + integrity sha512-eknWrTHofQuPk2iuqDm1waA7V6xPlbgBoaaXEgYkClhLOnB0TtbW+srJaOToAgawPxPlHQzwypFA2bhZaUGP5A== dependencies: "@types/yargs-parser" "*" -"@urql/core@>=2.3.1": - "integrity" "sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q==" - "resolved" "https://registry.npmjs.org/@urql/core/-/core-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "wonka" "^6.1.2" - "@urql/core@2.3.6": - "integrity" "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==" - "resolved" "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz" - "version" "2.3.6" + version "2.3.6" + resolved "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz" + integrity sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw== dependencies: "@graphql-typed-document-node/core" "^3.1.0" - "wonka" "^4.0.14" + wonka "^4.0.14" + +"@urql/core@>=2.3.1": + version "3.1.1" + resolved "https://registry.npmjs.org/@urql/core/-/core-3.1.1.tgz" + integrity sha512-Mnxtq4I4QeFJsgs7Iytw+HyhiGxISR6qtyk66c9tipozLZ6QVxrCiUPF2HY4BxNIabaxcp+rivadvm8NAnXj4Q== + dependencies: + wonka "^6.1.2" "@urql/exchange-retry@0.3.0": - "integrity" "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==" - "resolved" "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz" - "version" "0.3.0" + version "0.3.0" + resolved "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz" + integrity sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg== dependencies: "@urql/core" ">=2.3.1" - "wonka" "^4.0.14" + wonka "^4.0.14" "@webassemblyjs/ast@1.9.0": - "integrity" "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@webassemblyjs/floating-point-hex-parser@1.9.0": - "integrity" "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@webassemblyjs/helper-api-error@1.9.0": - "integrity" "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@webassemblyjs/helper-buffer@1.9.0": - "integrity" "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": - "integrity" "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": - "integrity" "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": - "integrity" "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode@1.9.0": - "integrity" "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@webassemblyjs/helper-wasm-section@1.9.0": - "integrity" "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -2322,28 +2283,28 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/ieee754@1.9.0": - "integrity" "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.9.0": - "integrity" "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.9.0": - "integrity" "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@webassemblyjs/wasm-edit@1.9.0": - "integrity" "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -2355,9 +2316,9 @@ "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/wasm-gen@1.9.0": - "integrity" "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" @@ -2366,9 +2327,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wasm-opt@1.9.0": - "integrity" "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -2376,9 +2337,9 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wasm-parser@1.9.0": - "integrity" "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" @@ -2388,9 +2349,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wast-parser@1.9.0": - "integrity" "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/floating-point-hex-parser" "1.9.0" @@ -2400,488 +2361,481 @@ "@xtuc/long" "4.2.2" "@webassemblyjs/wast-printer@1.9.0": - "integrity" "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" "@xmldom/xmldom@~0.7.0", "@xmldom/xmldom@~0.7.7": - "integrity" "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==" - "resolved" "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz" - "version" "0.7.9" + version "0.7.9" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz" + integrity sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA== "@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" - -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "event-target-shim" "^5.0.0" - -"absolute-path@^0.0.0": - "integrity" "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==" - "resolved" "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz" - "version" "0.0.0" - -"accepts@^1.3.7", "accepts@^1.3.8", "accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.7", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" - dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" - -"acorn@^6.4.1": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"address@^1.0.1": - "integrity" "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.2.2.tgz" - "version" "1.2.2" - -"address@1.1.2": - "integrity" "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.1.2.tgz" - "version" "1.1.2" - -"agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "debug" "4" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv-errors@^1.0.0": - "integrity" "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - "resolved" "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" - "version" "1.0.1" - -"ajv-formats@^2.0.2": - "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" - "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ajv" "^8.0.0" - -"ajv-keywords@^3.1.0", "ajv-keywords@^3.4.1", "ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv@^6.1.0", "ajv@^6.10.2", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1", "ajv@>=5.0.0": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"ajv@^8.0.0", "ajv@^8.1.0": - "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - "version" "8.12.0" - dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" - -"alphanum-sort@^1.0.0": - "integrity" "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" - "resolved" "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" - "version" "1.0.2" - -"anser@^1.4.9": - "integrity" "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" - "resolved" "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" - "version" "1.4.10" - -"ansi-align@^3.0.0": - "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" - "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "string-width" "^4.1.0" - -"ansi-colors@^3.0.0": - "integrity" "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - "version" "3.2.4" - -"ansi-escapes@^3.1.0": - "integrity" "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" - "version" "3.2.0" - -"ansi-escapes@^4.2.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" - -"ansi-fragments@^0.2.1": - "integrity" "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==" - "resolved" "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "colorette" "^1.0.7" - "slice-ansi" "^2.0.0" - "strip-ansi" "^5.0.0" - -"ansi-html@0.0.7": - "integrity" "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==" - "resolved" "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" - "version" "0.0.7" - -"ansi-regex@^2.0.0": - "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^4.1.0": - "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - "version" "4.1.1" - -"ansi-regex@^5.0.0", "ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^3.2.0": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"any-promise@^1.0.0": - "integrity" "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - "version" "1.3.0" - -"anymatch@^2.0.0": - "integrity" "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "micromatch" "^3.1.4" - "normalize-path" "^2.1.1" - -"anymatch@^3.0.0", "anymatch@^3.0.3", "anymatch@~3.1.2": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"appdirsjs@^1.2.4": - "integrity" "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" - "resolved" "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" - "version" "1.2.7" - -"application-config-path@^0.1.0": - "integrity" "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" - "resolved" "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz" - "version" "0.1.1" - -"aproba@^1.1.1": - "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - "version" "1.2.0" - -"arg@4.1.0": - "integrity" "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz" - "version" "4.1.0" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"arr-diff@^4.0.0": - "integrity" "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - "version" "4.0.0" - -"arr-flatten@^1.1.0": - "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - "version" "1.1.0" - -"arr-union@^3.1.0": - "integrity" "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" - "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - "version" "3.1.0" - -"array-flatten@^2.1.0": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" - -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-union@^1.0.1": - "integrity" "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "array-uniq" "^1.0.1" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"array-uniq@^1.0.1": - "integrity" "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" - "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - "version" "1.0.3" - -"array-unique@^0.3.2": - "integrity" "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - "version" "0.3.2" - -"array.prototype.reduce@^1.0.5": - "integrity" "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==" - "resolved" "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" - -"arrify@^2.0.1": - "integrity" "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - "version" "2.0.1" - -"asap@~2.0.3", "asap@~2.0.6": - "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" - -"asn1.js@^5.2.0": - "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" - "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bn.js" "^4.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "safer-buffer" "^2.1.0" - -"assert@^1.1.1": - "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" - "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "object-assign" "^4.1.1" - "util" "0.10.3" - -"assign-symbols@^1.0.0": - "integrity" "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" - "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - "version" "1.0.0" - -"ast-types@0.14.2": - "integrity" "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" - "version" "0.14.2" - dependencies: - "tslib" "^2.0.1" - -"astral-regex@^1.0.0": - "integrity" "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - "version" "1.0.0" - -"async-each@^1.0.1": - "integrity" "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - "resolved" "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" - "version" "1.0.3" - -"async-limiter@~1.0.0": - "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - "version" "1.0.1" - -"async@^2.6.4": - "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" - "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" - "version" "2.6.4" - dependencies: - "lodash" "^4.17.14" - -"async@^3.2.2": - "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - "version" "3.2.4" - -"async@~1.5": - "integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - "version" "1.5.2" - -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" - -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" - -"atob@^2.1.2": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"axios@0.21.1": - "integrity" "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz" - "version" "0.21.1" - dependencies: - "follow-redirects" "^1.10.0" - -"babel-core@^7.0.0-bridge.0": - "integrity" "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" - "version" "7.0.0-bridge.0" - -"babel-loader@8.1.0": - "integrity" "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==" - "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "find-cache-dir" "^2.1.0" - "loader-utils" "^1.4.0" - "mkdirp" "^0.5.3" - "pify" "^4.0.1" - "schema-utils" "^2.6.5" - -"babel-plugin-module-resolver@^4.1.0": - "integrity" "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==" - "resolved" "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "find-babel-config" "^1.2.0" - "glob" "^7.1.6" - "pkg-up" "^3.1.0" - "reselect" "^4.0.0" - "resolve" "^1.13.1" - -"babel-plugin-polyfill-corejs2@^0.3.3": - "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - "version" "0.3.3" + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz" + integrity sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA== + +accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +address@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-formats@^2.0.2: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.1.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" + integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" + integrity sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +application-config-path@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz" + integrity sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw== + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arg@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz" + integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +async@^3.2.2: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +async@~1.5: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axios@0.21.1: + version "0.21.1" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-module-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz" + integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== + dependencies: + find-babel-config "^1.2.0" + glob "^7.1.6" + pkg-up "^3.1.0" + reselect "^4.0.0" + resolve "^1.13.1" + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" "@babel/helper-define-polyfill-provider" "^0.3.3" - "semver" "^6.1.1" + semver "^6.1.1" -"babel-plugin-polyfill-corejs3@^0.6.0": - "integrity" "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" - "version" "0.6.0" +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" - "core-js-compat" "^3.25.1" + core-js-compat "^3.25.1" -"babel-plugin-polyfill-regenerator@^0.4.1": - "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - "version" "0.4.1" +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -"babel-plugin-react-native-web@~0.18.2": - "integrity" "sha512-wSjYFaflJIzo3E/1vpzkx2HvKnodEEvYHv4rgxwloqOQY7wBC3RNRZ8Zhnlm77iaZg7W4Zp1d0iuVtVQHPxIdA==" - "resolved" "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.11.tgz" - "version" "0.18.11" +babel-plugin-react-native-web@~0.18.2: + version "0.18.11" + resolved "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.11.tgz" + integrity sha512-wSjYFaflJIzo3E/1vpzkx2HvKnodEEvYHv4rgxwloqOQY7wBC3RNRZ8Zhnlm77iaZg7W4Zp1d0iuVtVQHPxIdA== -"babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0": - "integrity" "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz" - "version" "7.0.0-beta.0" +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== -"babel-preset-expo@~9.2.2": - "integrity" "sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==" - "resolved" "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz" - "version" "9.2.2" +babel-preset-expo@~9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz" + integrity sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ== dependencies: "@babel/plugin-proposal-decorators" "^7.12.9" "@babel/plugin-proposal-object-rest-spread" "^7.12.13" "@babel/plugin-transform-react-jsx" "^7.12.17" "@babel/preset-env" "^7.12.9" - "babel-plugin-module-resolver" "^4.1.0" - "babel-plugin-react-native-web" "~0.18.2" - "metro-react-native-babel-preset" "0.72.3" + babel-plugin-module-resolver "^4.1.0" + babel-plugin-react-native-web "~0.18.2" + metro-react-native-babel-preset "0.72.3" -"babel-preset-fbjs@^3.4.0": - "integrity" "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==" - "resolved" "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz" - "version" "3.4.0" +babel-preset-fbjs@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== dependencies: "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-object-rest-spread" "^7.0.0" @@ -2909,2125 +2863,2014 @@ "@babel/plugin-transform-shorthand-properties" "^7.0.0" "@babel/plugin-transform-spread" "^7.0.0" "@babel/plugin-transform-template-literals" "^7.0.0" - "babel-plugin-syntax-trailing-function-commas" "^7.0.0-beta.0" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"base@^0.11.1": - "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" - "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - "version" "0.11.2" - dependencies: - "cache-base" "^1.0.1" - "class-utils" "^0.3.5" - "component-emitter" "^1.2.1" - "define-property" "^1.0.0" - "isobject" "^3.0.1" - "mixin-deep" "^1.2.0" - "pascalcase" "^0.1.1" - -"base64-js@^1.0.2", "base64-js@^1.1.2", "base64-js@^1.2.3", "base64-js@^1.3.1", "base64-js@^1.5.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"batch@0.6.1": - "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"better-opn@^3.0.1", "better-opn@~3.0.2": - "integrity" "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==" - "resolved" "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "open" "^8.0.4" - -"big-integer@^1.6.44", "big-integer@1.6.x": - "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - "version" "1.6.51" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"binary-extensions@^1.0.0": - "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" - "version" "1.13.1" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bindings@^1.5.0": - "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" - "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "file-uri-to-path" "1.0.0" - -"bl@^4.1.0": - "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" - "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "buffer" "^5.5.0" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" - -"bluebird@^3.5.5": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" - -"blueimp-md5@^2.10.0": - "integrity" "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" - "resolved" "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz" - "version" "2.19.0" - -"bn.js@^4.0.0", "bn.js@^4.1.0", "bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^5.0.0": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"bn.js@^5.1.1": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"body-parser@^1.20.1", "body-parser@1.20.1": - "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - "version" "1.20.1" - dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.11.0" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" - -"body-parser@1.18.3": - "integrity" "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz" - "version" "1.18.3" - dependencies: - "bytes" "3.0.0" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "~1.1.2" - "http-errors" "~1.6.3" - "iconv-lite" "0.4.23" - "on-finished" "~2.3.0" - "qs" "6.5.2" - "raw-body" "2.3.3" - "type-is" "~1.6.16" - -"body-parser@1.19.0": - "integrity" "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" - "version" "1.19.0" - dependencies: - "bytes" "3.1.0" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "~1.1.2" - "http-errors" "1.7.2" - "iconv-lite" "0.4.24" - "on-finished" "~2.3.0" - "qs" "6.7.0" - "raw-body" "2.4.0" - "type-is" "~1.6.17" - -"bonjour@^3.5.0": - "integrity" "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==" - "resolved" "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" - "version" "3.5.0" - dependencies: - "array-flatten" "^2.1.0" - "deep-equal" "^1.0.1" - "dns-equal" "^1.0.0" - "dns-txt" "^2.0.2" - "multicast-dns" "^6.0.1" - "multicast-dns-service-types" "^1.1.0" - -"boolbase@^1.0.0", "boolbase@~1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"boxen@^5.0.1": - "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" - "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "ansi-align" "^3.0.0" - "camelcase" "^6.2.0" - "chalk" "^4.1.0" - "cli-boxes" "^2.2.1" - "string-width" "^4.2.2" - "type-fest" "^0.20.2" - "widest-line" "^3.1.0" - "wrap-ansi" "^7.0.0" - -"bplist-creator@0.1.0": - "integrity" "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==" - "resolved" "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "stream-buffers" "2.2.x" - -"bplist-parser@^0.3.0", "bplist-parser@^0.3.1": - "integrity" "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "big-integer" "1.6.x" - -"bplist-parser@0.2.0": - "integrity" "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "big-integer" "^1.6.44" - -"bplist-parser@0.3.1": - "integrity" "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "big-integer" "1.6.x" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"braces@^2.3.1", "braces@^2.3.2": - "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" - "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - "version" "2.3.2" - dependencies: - "arr-flatten" "^1.1.0" - "array-unique" "^0.3.2" - "extend-shallow" "^2.0.1" - "fill-range" "^4.0.0" - "isobject" "^3.0.1" - "repeat-element" "^1.1.2" - "snapdragon" "^0.8.1" - "snapdragon-node" "^2.0.1" - "split-string" "^3.0.2" - "to-regex" "^3.0.1" - -"braces@^3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"brorand@^1.0.1", "brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"browserify-aes@^1.0.0", "browserify-aes@^1.0.4": - "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" - "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-xor" "^1.0.3" - "cipher-base" "^1.0.0" - "create-hash" "^1.1.0" - "evp_bytestokey" "^1.0.3" - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"browserify-cipher@^1.0.0": - "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" - "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "browserify-aes" "^1.0.4" - "browserify-des" "^1.0.0" - "evp_bytestokey" "^1.0.0" - -"browserify-des@^1.0.0": - "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" - "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "cipher-base" "^1.0.1" - "des.js" "^1.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": - "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" - "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "bn.js" "^5.0.0" - "randombytes" "^2.0.1" - -"browserify-sign@^4.0.0": - "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" - "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "bn.js" "^5.1.1" - "browserify-rsa" "^4.0.1" - "create-hash" "^1.2.0" - "create-hmac" "^1.1.7" - "elliptic" "^6.5.3" - "inherits" "^2.0.4" - "parse-asn1" "^5.1.5" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" - -"browserify-zlib@^0.2.0": - "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" - "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "pako" "~1.0.5" - -"browserslist@^4.0.0", "browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@>= 4.21.0": - "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - "version" "4.21.4" - dependencies: - "caniuse-lite" "^1.0.30001400" - "electron-to-chromium" "^1.4.251" - "node-releases" "^2.0.6" - "update-browserslist-db" "^1.0.9" - -"browserslist@4.14.2": - "integrity" "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" - "version" "4.14.2" - dependencies: - "caniuse-lite" "^1.0.30001125" - "electron-to-chromium" "^1.3.564" - "escalade" "^3.0.2" - "node-releases" "^1.1.61" - -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-int64" "^0.4.0" - -"buffer-alloc-unsafe@^1.1.0": - "integrity" "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - "resolved" "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" - "version" "1.1.0" - -"buffer-alloc@^1.1.0": - "integrity" "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==" - "resolved" "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-alloc-unsafe" "^1.1.0" - "buffer-fill" "^1.0.0" - -"buffer-fill@^1.0.0": - "integrity" "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" - "resolved" "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" - "version" "1.0.0" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer-indexof@^1.0.0": - "integrity" "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - "resolved" "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" - "version" "1.1.1" - -"buffer-xor@^1.0.3": - "integrity" "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - "version" "1.0.3" - -"buffer@^4.3.0": - "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - "version" "4.9.2" - dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - "isarray" "^1.0.0" - -"buffer@^5.5.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"builtin-status-codes@^3.0.0": - "integrity" "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" - -"builtins@^1.0.3": - "integrity" "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" - "resolved" "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" - "version" "1.0.3" - -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.0": - "integrity" "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" - "version" "3.1.0" - -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" - -"cacache@^12.0.2": - "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" - "version" "12.0.4" - dependencies: - "bluebird" "^3.5.5" - "chownr" "^1.1.1" - "figgy-pudding" "^3.5.1" - "glob" "^7.1.4" - "graceful-fs" "^4.1.15" - "infer-owner" "^1.0.3" - "lru-cache" "^5.1.1" - "mississippi" "^3.0.0" - "mkdirp" "^0.5.1" - "move-concurrently" "^1.0.1" - "promise-inflight" "^1.0.1" - "rimraf" "^2.6.3" - "ssri" "^6.0.1" - "unique-filename" "^1.1.1" - "y18n" "^4.0.0" - -"cacache@^15.0.5", "cacache@^15.3.0": - "integrity" "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - "version" "15.3.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +better-opn@^3.0.1, better-opn@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz" + integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== + dependencies: + open "^8.0.4" + +big-integer@1.6.x, big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +blueimp-md5@^2.10.0: + version "2.19.0" + resolved "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz" + integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.18.3: + version "1.18.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz" + integrity sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ== + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +body-parser@1.20.1, body-parser@^1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" + integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boxen@^5.0.1: + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +bplist-creator@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz" + integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg== + dependencies: + stream-buffers "2.2.x" + +bplist-parser@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +bplist-parser@0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz" + integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== + dependencies: + big-integer "1.6.x" + +bplist-parser@^0.3.0, bplist-parser@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz" + integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== + dependencies: + big-integer "1.6.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.21.3, browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5, cacache@^15.3.0: + version "15.3.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "glob" "^7.1.4" - "infer-owner" "^1.0.4" - "lru-cache" "^6.0.0" - "minipass" "^3.1.1" - "minipass-collect" "^1.0.2" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.2" - "mkdirp" "^1.0.3" - "p-map" "^4.0.0" - "promise-inflight" "^1.0.1" - "rimraf" "^3.0.2" - "ssri" "^8.0.1" - "tar" "^6.0.2" - "unique-filename" "^1.1.1" - -"cache-base@^1.0.1": - "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" - "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "collection-visit" "^1.0.0" - "component-emitter" "^1.2.1" - "get-value" "^2.0.6" - "has-value" "^1.0.0" - "isobject" "^3.0.1" - "set-value" "^2.0.0" - "to-object-path" "^0.3.0" - "union-value" "^1.0.0" - "unset-value" "^1.0.0" - -"cacheable-lookup@^5.0.3": - "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" - "version" "5.0.4" - -"cacheable-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^3.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^4.1.0" - "responselike" "^1.0.2" - -"cacheable-request@^7.0.2": - "integrity" "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" - "version" "7.0.2" - dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^4.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^6.0.1" - "responselike" "^2.0.0" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"caller-callsite@^2.0.0": - "integrity" "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==" - "resolved" "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "callsites" "^2.0.0" - -"caller-path@^2.0.0": - "integrity" "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==" - "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "caller-callsite" "^2.0.0" - -"callsite@^1.0.0": - "integrity" "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==" - "resolved" "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" - "version" "1.0.0" - -"callsites@^2.0.0": - "integrity" "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - "version" "2.0.0" - -"camel-case@^4.1.1": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" - -"camelcase@^5.0.0", "camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.0.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"camelcase@^6.2.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" - -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001125": - "integrity" "sha512-tq2YI+MJnooG96XpbTRYkBxLxklZPOdLmNIOdIhvf7SNJan6u5vCKum8iT7ZfCt70m1GPkuC7P3TtX6UuhupuA==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz" - "version" "1.0.30001448" - -"caniuse-lite@^1.0.30001400": - "integrity" "sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz" - "version" "1.0.30001447" - -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.0.1": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.1": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"charenc@~0.0.1", "charenc@0.0.2": - "integrity" "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" - "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - "version" "0.0.2" - -"chokidar@^2.1.8": - "integrity" "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" - "version" "2.1.8" - dependencies: - "anymatch" "^2.0.0" - "async-each" "^1.0.1" - "braces" "^2.3.2" - "glob-parent" "^3.1.0" - "inherits" "^2.0.3" - "is-binary-path" "^1.0.0" - "is-glob" "^4.0.0" - "normalize-path" "^3.0.0" - "path-is-absolute" "^1.0.0" - "readdirp" "^2.2.1" - "upath" "^1.1.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsite@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + integrity sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ== + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125: + version "1.0.30001448" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz" + integrity sha512-tq2YI+MJnooG96XpbTRYkBxLxklZPOdLmNIOdIhvf7SNJan6u5vCKum8iT7ZfCt70m1GPkuC7P3TtX6UuhupuA== + +caniuse-lite@^1.0.30001400: + version "1.0.30001447" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz" + integrity sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +charenc@0.0.2, charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - "fsevents" "^1.2.7" - -"chokidar@^3.4.1": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" optionalDependencies: - "fsevents" "~2.3.2" - -"chownr@^1.1.1": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" - -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" - -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" - -"ci-info@^2.0.0": - "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - "version" "2.0.0" - -"ci-info@^3.2.0", "ci-info@^3.3.0": - "integrity" "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz" - "version" "3.7.1" - -"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": - "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" - "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"class-utils@^0.3.5": - "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" - "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - "version" "0.3.6" - dependencies: - "arr-union" "^3.1.0" - "define-property" "^0.2.5" - "isobject" "^3.0.0" - "static-extend" "^0.1.1" - -"clean-css@^4.2.3": - "integrity" "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" - "version" "4.2.4" - dependencies: - "source-map" "~0.6.0" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"clean-webpack-plugin@^3.0.0": - "integrity" "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==" - "resolved" "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz" - "version" "3.0.0" + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0, ci-info@^3.3.0: + version "3.7.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz" + integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +clean-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz" + integrity sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A== dependencies: "@types/webpack" "^4.4.31" - "del" "^4.1.1" + del "^4.1.1" -"cli-boxes@^2.2.1": - "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - "version" "2.2.1" +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -"cli-cursor@^2.1.0": - "integrity" "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" - "version" "2.1.0" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: - "restore-cursor" "^2.0.0" + restore-cursor "^2.0.0" -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - "restore-cursor" "^3.1.0" + restore-cursor "^3.1.0" -"cli-spinners@^2.0.0", "cli-spinners@^2.5.0": - "integrity" "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" - "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" - "version" "2.7.0" +cli-spinners@^2.0.0, cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== -"cli-table3@^0.6.0": - "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" - "version" "0.6.3" +cli-table3@^0.6.0: + version "0.6.3" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: - "string-width" "^4.2.0" + string-width "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -"cliui@^5.0.0": - "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - "version" "5.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - "string-width" "^3.1.0" - "strip-ansi" "^5.2.0" - "wrap-ansi" "^5.1.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -"cliui@^6.0.0": - "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" - "version" "6.0.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^6.2.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" -"clone-response@^1.0.2": - "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - "version" "1.0.3" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: - "mimic-response" "^1.0.0" + mimic-response "^1.0.0" -"clone@^1.0.2": - "integrity" "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - "version" "1.0.4" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -"clone@^2.1.2": - "integrity" "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - "resolved" "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - "version" "2.1.2" +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -"coa@^2.0.2": - "integrity" "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==" - "resolved" "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - "version" "2.0.2" +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== dependencies: "@types/q" "^1.5.1" - "chalk" "^2.4.1" - "q" "^1.1.2" - -"collection-visit@^1.0.0": - "integrity" "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==" - "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "map-visit" "^1.0.0" - "object-visit" "^1.0.0" - -"color-convert@^1.9.0", "color-convert@^1.9.3": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@^1.0.0", "color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"color-string@^1.6.0": - "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" - "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "color-name" "^1.0.0" - "simple-swizzle" "^0.2.2" - -"color@^3.0.0": - "integrity" "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==" - "resolved" "https://registry.npmjs.org/color/-/color-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.3" - "color-string" "^1.6.0" - -"colorette@^1.0.7": - "integrity" "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - "version" "1.4.0" - -"combined-stream@^1.0.6", "combined-stream@^1.0.8": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"command-exists@^1.2.4", "command-exists@^1.2.8": - "integrity" "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" - "resolved" "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - "version" "1.2.9" - -"commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^4.0.0", "commander@^4.1.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" - -"commander@^7.2.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" - -"commander@^9.4.0": - "integrity" "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" - "version" "9.5.0" - -"commander@~2.13.0": - "integrity" "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz" - "version" "2.13.0" - -"commander@2.17.1": - "integrity" "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz" - "version" "2.17.1" - -"commander@2.20.0": - "integrity" "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz" - "version" "2.20.0" - -"commondir@^1.0.1": - "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" - -"compare-versions@^3.4.0": - "integrity" "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" - "resolved" "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" - "version" "3.6.0" - -"component-emitter@^1.2.1": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" - -"component-type@^1.2.1": - "integrity" "sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg==" - "resolved" "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz" - "version" "1.2.1" - -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" - dependencies: - "mime-db" ">= 1.43.0 < 2" - -"compression@^1.7.1", "compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "accepts" "~1.3.5" - "bytes" "3.0.0" - "compressible" "~2.0.16" - "debug" "2.6.9" - "on-headers" "~1.0.2" - "safe-buffer" "5.1.2" - "vary" "~1.1.2" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"concat-stream@^1.5.0", "concat-stream@1.6.2": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" - dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" - -"connect-history-api-fallback@^1.6.0": - "integrity" "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" - "version" "1.6.0" - -"connect@^3.6.5", "connect@^3.7.0": - "integrity" "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==" - "resolved" "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" - "version" "3.7.0" - dependencies: - "debug" "2.6.9" - "finalhandler" "1.1.2" - "parseurl" "~1.3.3" - "utils-merge" "1.0.1" - -"console-browserify@^1.1.0": - "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - "version" "1.2.0" - -"constants-browserify@^1.0.0": - "integrity" "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" - "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - "version" "1.0.0" - -"content-disposition@0.5.2": - "integrity" "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" - "version" "0.5.2" - -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" - dependencies: - "safe-buffer" "5.2.1" - -"content-type@~1.0.4": - "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - "version" "1.0.4" - -"convert-source-map@^1.7.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@0.3.1": - "integrity" "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - "version" "0.3.1" - -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" - -"copy-concurrently@^1.0.0": - "integrity" "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==" - "resolved" "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "aproba" "^1.1.1" - "fs-write-stream-atomic" "^1.0.8" - "iferr" "^0.1.5" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.0" - -"copy-descriptor@^0.1.0": - "integrity" "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" - "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - "version" "0.1.1" - -"copy-webpack-plugin@~6.0.3": - "integrity" "sha512-zCazfdYAh3q/O4VzZFiadWGpDA2zTs6FC6D7YTHD6H1J40pzo0H4z22h1NYMCl4ArQP4CK8y/KWqPrJ4rVkZ5A==" - "resolved" "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.4.tgz" - "version" "6.0.4" - dependencies: - "cacache" "^15.0.5" - "fast-glob" "^3.2.4" - "find-cache-dir" "^3.3.1" - "glob-parent" "^5.1.1" - "globby" "^11.0.1" - "loader-utils" "^2.0.0" - "normalize-path" "^3.0.0" - "p-limit" "^3.0.2" - "schema-utils" "^2.7.0" - "serialize-javascript" "^4.0.0" - "webpack-sources" "^1.4.3" - -"core-js-compat@^3.25.1": - "integrity" "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz" - "version" "3.27.2" - dependencies: - "browserslist" "^4.21.4" - -"core-util-is@~1.0.0": - "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - "version" "1.0.3" - -"cosmiconfig@^5.0.0", "cosmiconfig@^5.0.5", "cosmiconfig@^5.1.0": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" - -"create-ecdh@^4.0.0": - "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" - "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - "version" "4.0.4" - dependencies: - "bn.js" "^4.1.0" - "elliptic" "^6.5.3" - -"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": - "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" - "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "cipher-base" "^1.0.1" - "inherits" "^2.0.1" - "md5.js" "^1.3.4" - "ripemd160" "^2.0.1" - "sha.js" "^2.4.0" - -"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": - "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" - "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "cipher-base" "^1.0.3" - "create-hash" "^1.1.0" - "inherits" "^2.0.1" - "ripemd160" "^2.0.0" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"create-react-class@^15.7.0": - "integrity" "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==" - "resolved" "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz" - "version" "15.7.0" - dependencies: - "loose-envify" "^1.3.1" - "object-assign" "^4.1.1" - -"cross-fetch@^3.1.5": - "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "node-fetch" "2.6.7" - -"cross-spawn@^6.0.0", "cross-spawn@^6.0.5": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" - dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" - -"cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"cross-spawn@7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"crypt@~0.0.1", "crypt@0.0.2": - "integrity" "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" - "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - "version" "0.0.2" - -"crypto-browserify@^3.11.0": - "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" - "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - "version" "3.12.0" - dependencies: - "browserify-cipher" "^1.0.0" - "browserify-sign" "^4.0.0" - "create-ecdh" "^4.0.0" - "create-hash" "^1.1.0" - "create-hmac" "^1.1.0" - "diffie-hellman" "^5.0.0" - "inherits" "^2.0.1" - "pbkdf2" "^3.0.3" - "public-encrypt" "^4.0.0" - "randombytes" "^2.0.0" - "randomfill" "^1.0.3" - -"crypto-random-string@^1.0.0": - "integrity" "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" - "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz" - "version" "1.0.0" - -"crypto-random-string@^2.0.0": - "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - "version" "2.0.0" - -"css-color-names@^0.0.4", "css-color-names@0.0.4": - "integrity" "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==" - "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" - "version" "0.0.4" - -"css-declaration-sorter@^4.0.1": - "integrity" "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.1" - "timsort" "^0.3.0" - -"css-in-js-utils@^3.1.0": - "integrity" "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==" - "resolved" "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "hyphenate-style-name" "^1.0.3" - -"css-loader@~3.6.0": - "integrity" "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "camelcase" "^5.3.1" - "cssesc" "^3.0.0" - "icss-utils" "^4.1.1" - "loader-utils" "^1.2.3" - "normalize-path" "^3.0.0" - "postcss" "^7.0.32" - "postcss-modules-extract-imports" "^2.0.0" - "postcss-modules-local-by-default" "^3.0.2" - "postcss-modules-scope" "^2.2.0" - "postcss-modules-values" "^3.0.0" - "postcss-value-parser" "^4.1.0" - "schema-utils" "^2.7.0" - "semver" "^6.3.0" - -"css-select-base-adapter@^0.1.1": - "integrity" "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - "resolved" "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - "version" "0.1.1" - -"css-select@^2.0.0": - "integrity" "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^3.2.1" - "domutils" "^1.7.0" - "nth-check" "^1.0.2" - -"css-select@^4.1.3": - "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.0.1" - "domhandler" "^4.3.1" - "domutils" "^2.8.0" - "nth-check" "^2.0.1" - -"css-tree@^1.1.2": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" - -"css-tree@1.0.0-alpha.37": - "integrity" "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - "version" "1.0.0-alpha.37" - dependencies: - "mdn-data" "2.0.4" - "source-map" "^0.6.1" - -"css-what@^3.2.1": - "integrity" "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - "version" "3.4.2" - -"css-what@^6.0.1": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" - -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" - -"cssnano-preset-default@^4.0.8": - "integrity" "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" - "version" "4.0.8" - dependencies: - "css-declaration-sorter" "^4.0.1" - "cssnano-util-raw-cache" "^4.0.1" - "postcss" "^7.0.0" - "postcss-calc" "^7.0.1" - "postcss-colormin" "^4.0.3" - "postcss-convert-values" "^4.0.1" - "postcss-discard-comments" "^4.0.2" - "postcss-discard-duplicates" "^4.0.2" - "postcss-discard-empty" "^4.0.1" - "postcss-discard-overridden" "^4.0.1" - "postcss-merge-longhand" "^4.0.11" - "postcss-merge-rules" "^4.0.3" - "postcss-minify-font-values" "^4.0.2" - "postcss-minify-gradients" "^4.0.2" - "postcss-minify-params" "^4.0.2" - "postcss-minify-selectors" "^4.0.2" - "postcss-normalize-charset" "^4.0.1" - "postcss-normalize-display-values" "^4.0.2" - "postcss-normalize-positions" "^4.0.2" - "postcss-normalize-repeat-style" "^4.0.2" - "postcss-normalize-string" "^4.0.2" - "postcss-normalize-timing-functions" "^4.0.2" - "postcss-normalize-unicode" "^4.0.1" - "postcss-normalize-url" "^4.0.1" - "postcss-normalize-whitespace" "^4.0.2" - "postcss-ordered-values" "^4.1.2" - "postcss-reduce-initial" "^4.0.3" - "postcss-reduce-transforms" "^4.0.2" - "postcss-svgo" "^4.0.3" - "postcss-unique-selectors" "^4.0.1" - -"cssnano-util-get-arguments@^4.0.0": - "integrity" "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" - "version" "4.0.0" - -"cssnano-util-get-match@^4.0.0": - "integrity" "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" - "version" "4.0.0" - -"cssnano-util-raw-cache@^4.0.1": - "integrity" "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==" - "resolved" "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"cssnano-util-same-parent@^4.0.0": - "integrity" "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - "resolved" "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" - "version" "4.0.1" - -"cssnano@^4.1.10": - "integrity" "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" - "version" "4.1.11" - dependencies: - "cosmiconfig" "^5.0.0" - "cssnano-preset-default" "^4.0.8" - "is-resolvable" "^1.0.0" - "postcss" "^7.0.0" - -"csso@^4.0.2": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "css-tree" "^1.1.2" - -"csstype@^3.0.2": - "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" - "version" "3.1.1" - -"cyclist@^1.0.1": - "integrity" "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" - "resolved" "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" - "version" "1.0.1" - -"dag-map@~1.0.0": - "integrity" "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" - "resolved" "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz" - "version" "1.0.2" - -"dateformat@3.0.3": - "integrity" "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" - "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" - "version" "3.0.3" - -"dayjs@^1.8.15": - "integrity" "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" - "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" - "version" "1.11.7" - -"debug@^2.2.0", "debug@^2.3.3", "debug@^2.6.0", "debug@2", "debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^3.1.0": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^3.2.5": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^3.2.6": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.1.0": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@^4.1.1": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.2.1" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +combined-stream@^1.0.6, combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.4, command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@2.17.1: + version "2.17.1" + resolved "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@2.20.0: + version "2.20.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0, commander@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^9.4.0: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compare-versions@^3.4.0: + version "3.6.0" + resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-type@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz" + integrity sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1, compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@1.6.2, concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.6.5, connect@^3.7.0: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" + integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + integrity sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +copy-webpack-plugin@~6.0.3: + version "6.0.4" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.4.tgz" + integrity sha512-zCazfdYAh3q/O4VzZFiadWGpDA2zTs6FC6D7YTHD6H1J40pzo0H4z22h1NYMCl4ArQP4CK8y/KWqPrJ4rVkZ5A== + dependencies: + cacache "^15.0.5" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.2" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + +core-js-compat@^3.25.1: + version "3.27.2" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz" + integrity sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg== + dependencies: + browserslist "^4.21.4" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.0, cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-class@^15.7.0: + version "15.7.0" + resolved "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz" + integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@7.0.3, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypt@0.0.2, crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz" + integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" + integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-in-js-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz" + integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== + dependencies: + hyphenate-style-name "^1.0.3" + +css-loader@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" + integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" + integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csstype@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== + +dag-map@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz" + integrity sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw== + +dateformat@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +dayjs@^1.8.15: + version "1.11.7" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.1.0, debug@^3.2.5, debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decache@4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/decache/-/decache-4.4.0.tgz" + integrity sha512-G8CyOswrO0mDcSf9t5dXS7D0Zw1wBqQPIkvYIkO3yzAEUzU0uEunAMz2BTBmJXJnd+WJEtmQKjQFrXXIXBxqgQ== + dependencies: + callsite "^1.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + +deepmerge@^4.0.0: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" -"debug@^4.3.1", "debug@^4.3.4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@^4.3.2": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -"debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"decache@4.4.0": - "integrity" "sha512-G8CyOswrO0mDcSf9t5dXS7D0Zw1wBqQPIkvYIkO3yzAEUzU0uEunAMz2BTBmJXJnd+WJEtmQKjQFrXXIXBxqgQ==" - "resolved" "https://registry.npmjs.org/decache/-/decache-4.4.0.tgz" - "version" "4.4.0" - dependencies: - "callsite" "^1.0.0" - -"decamelize@^1.2.0": - "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" - -"decode-uri-component@^0.2.0": - "integrity" "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" - "version" "0.2.2" - -"decompress-response@^3.3.0": - "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "mimic-response" "^1.0.0" +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -"decompress-response@^6.0.0": - "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" - "version" "6.0.0" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - "mimic-response" "^3.1.0" - -"deep-equal@^1.0.1": - "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "is-arguments" "^1.0.4" - "is-date-object" "^1.0.1" - "is-regex" "^1.0.4" - "object-is" "^1.0.1" - "object-keys" "^1.1.1" - "regexp.prototype.flags" "^1.2.0" - -"deep-extend@^0.6.0": - "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - "version" "0.6.0" - -"deepmerge@^3.2.0": - "integrity" "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz" - "version" "3.3.0" - -"deepmerge@^4.0.0": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"default-gateway@^4.2.0": - "integrity" "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "execa" "^1.0.0" - "ip-regex" "^2.1.0" - -"defaults@^1.0.3": - "integrity" "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==" - "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "clone" "^1.0.2" - -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" - -"defer-to-connect@^2.0.0": - "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" - "version" "2.0.1" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-properties@^1.1.2", "define-properties@^1.1.3", "define-properties@^1.1.4": - "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"define-property@^0.2.5": - "integrity" "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - "version" "0.2.5" - dependencies: - "is-descriptor" "^0.1.0" - -"define-property@^1.0.0": - "integrity" "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-descriptor" "^1.0.0" - -"define-property@^2.0.2": - "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "is-descriptor" "^1.0.2" - "isobject" "^3.0.1" - -"del@^4.1.1": - "integrity" "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==" - "resolved" "https://registry.npmjs.org/del/-/del-4.1.1.tgz" - "version" "4.1.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/del/-/del-4.1.1.tgz" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: "@types/glob" "^7.1.1" - "globby" "^6.1.0" - "is-path-cwd" "^2.0.0" - "is-path-in-cwd" "^2.0.0" - "p-map" "^2.0.0" - "pify" "^4.0.1" - "rimraf" "^2.6.3" - -"del@^6.0.0": - "integrity" "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==" - "resolved" "https://registry.npmjs.org/del/-/del-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "globby" "^11.0.1" - "graceful-fs" "^4.2.4" - "is-glob" "^4.0.1" - "is-path-cwd" "^2.2.0" - "is-path-inside" "^3.0.2" - "p-map" "^4.0.0" - "rimraf" "^3.0.2" - "slash" "^3.0.0" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"denodeify@^1.2.1": - "integrity" "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==" - "resolved" "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" - "version" "1.2.1" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"des.js@^1.0.0": - "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" - "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - -"destroy@~1.0.4": - "integrity" "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - "version" "1.0.4" - -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detect-node@^2.0.4": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"detect-port-alt@1.1.6": - "integrity" "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==" - "resolved" "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "address" "^1.0.1" - "debug" "^2.6.0" - -"diffie-hellman@^5.0.0": - "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" - "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "bn.js" "^4.1.0" - "miller-rabin" "^4.0.0" - "randombytes" "^2.0.0" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^1.3.1": - "integrity" "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz" - "version" "1.3.4" - dependencies: - "ip" "^1.1.0" - "safe-buffer" "^5.0.1" - -"dns-txt@^2.0.2": - "integrity" "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==" - "resolved" "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "buffer-indexof" "^1.0.0" - -"dom-converter@^0.2.0": - "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" - "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "utila" "~0.4" - -"dom-serializer@^1.0.1": - "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" - -"dom-serializer@0": - "integrity" "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "domelementtype" "^2.0.1" - "entities" "^2.0.0" - -"domain-browser@^1.1.1": - "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - "version" "1.2.0" - -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" - -"domelementtype@1": - "integrity" "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - "version" "1.3.1" - -"domhandler@^3.0.0": - "integrity" "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "domelementtype" "^2.0.1" - -"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": - "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "domelementtype" "^2.2.0" - -"domino@^2.1.6": - "integrity" "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" - "resolved" "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz" - "version" "2.1.6" - -"domutils@^1.7.0": - "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "dom-serializer" "0" - "domelementtype" "1" - -"domutils@^2.0.0", "domutils@^2.5.2", "domutils@^2.8.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" - -"dot-case@^3.0.4": - "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"dot-prop@^5.2.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "is-obj" "^2.0.0" - -"duplexer@^0.1.1": - "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - "version" "0.1.2" - -"duplexer3@^0.1.4": - "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - "version" "0.1.5" - -"duplexify@^3.4.2", "duplexify@^3.6.0": - "integrity" "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==" - "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - "version" "3.7.1" - dependencies: - "end-of-stream" "^1.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - "stream-shift" "^1.0.0" - -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"electron-to-chromium@^1.3.564", "electron-to-chromium@^1.4.251": - "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" - "version" "1.4.284" - -"elliptic@^6.5.3": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"end-of-stream@^1.0.0", "end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"enhanced-resolve@^4.1.0": - "integrity" "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" - "version" "4.5.0" - dependencies: - "graceful-fs" "^4.1.2" - "memory-fs" "^0.5.0" - "tapable" "^1.0.0" - -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"env-editor@^0.4.1": - "integrity" "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==" - "resolved" "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz" - "version" "0.4.2" - -"envinfo@^7.7.2": - "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - "version" "7.8.1" - -"eol@^0.9.1": - "integrity" "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" - "resolved" "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz" - "version" "0.9.1" - -"errno@^0.1.3", "errno@~0.1.7": - "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" - "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - "version" "0.1.8" - dependencies: - "prr" "~1.0.1" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"error-stack-parser@^2.0.6": - "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "stackframe" "^1.3.4" - -"errorhandler@^1.5.0": - "integrity" "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==" - "resolved" "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "accepts" "~1.3.7" - "escape-html" "~1.0.3" - -"es-abstract@^1.17.2", "es-abstract@^1.19.0", "es-abstract@^1.20.4": - "integrity" "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz" - "version" "1.21.1" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-set-tostringtag" "^2.0.1" - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "function.prototype.name" "^1.1.5" - "get-intrinsic" "^1.1.3" - "get-symbol-description" "^1.0.0" - "globalthis" "^1.0.3" - "gopd" "^1.0.1" - "has" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.4" - "is-array-buffer" "^3.0.1" - "is-callable" "^1.2.7" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-typed-array" "^1.1.10" - "is-weakref" "^1.0.2" - "object-inspect" "^1.12.2" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "safe-regex-test" "^1.0.0" - "string.prototype.trimend" "^1.0.6" - "string.prototype.trimstart" "^1.0.6" - "typed-array-length" "^1.0.4" - "unbox-primitive" "^1.0.2" - "which-typed-array" "^1.1.9" - -"es-array-method-boxes-properly@^1.0.0": - "integrity" "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - "resolved" "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - "version" "1.0.0" - -"es-set-tostringtag@^2.0.1": - "integrity" "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==" - "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - "has" "^1.0.3" - "has-tostringtag" "^1.0.0" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"escalade@^3.0.2", "escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"eslint-scope@^4.0.3": - "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "esrecurse" "^4.1.0" - "estraverse" "^4.1.1" - -"esprima@^4.0.0", "esprima@~4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esrecurse@^4.1.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"event-target-shim@^5.0.0", "event-target-shim@^5.0.1": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" - -"eventemitter3@^4.0.0": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"events@^3.0.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"eventsource@^1.0.7": - "integrity" "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==" - "resolved" "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz" - "version" "1.1.2" - -"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": - "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" - "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "md5.js" "^1.3.4" - "safe-buffer" "^5.1.1" - -"exec-async@^2.2.0": - "integrity" "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==" - "resolved" "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz" - "version" "2.2.0" - -"execa@^1.0.0": - "integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "cross-spawn" "^6.0.0" - "get-stream" "^4.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" - -"expand-brackets@^2.1.4": - "integrity" "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "debug" "^2.3.3" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "posix-character-classes" "^0.1.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"expo-application@~5.0.1": - "integrity" "sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==" - "resolved" "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz" - "version" "5.0.1" - -"expo-asset@~8.7.0": - "integrity" "sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==" - "resolved" "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz" - "version" "8.7.0" - dependencies: - "blueimp-md5" "^2.10.0" - "expo-constants" "~14.0.0" - "expo-file-system" "~15.1.0" - "invariant" "^2.2.4" - "md5-file" "^3.2.3" - "path-browserify" "^1.0.0" - "url-parse" "^1.5.9" - -"expo-cli@^6.1.0": - "integrity" "sha512-yhbevPdwof7oyjQup/dEYbxYZCiK/vYYQVnZA3CbYxtz0TG6LcEumz1Pn5WhAwU6vGCSmKpsJ02r4O0/bwIB/Q==" - "resolved" "https://registry.npmjs.org/expo-cli/-/expo-cli-6.1.0.tgz" - "version" "6.1.0" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +del@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" + integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== + dependencies: + buffer-indexof "^1.0.0" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domino@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.0.0, domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.5.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +env-editor@^0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz" + integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA== + +envinfo@^7.7.2: + version "7.8.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.1.2" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz" + integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-async@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz" + integrity sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expo-application@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz" + integrity sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw== + +expo-asset@~8.7.0: + version "8.7.0" + resolved "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz" + integrity sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ== + dependencies: + blueimp-md5 "^2.10.0" + expo-constants "~14.0.0" + expo-file-system "~15.1.0" + invariant "^2.2.4" + md5-file "^3.2.3" + path-browserify "^1.0.0" + url-parse "^1.5.9" + +expo-cli@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/expo-cli/-/expo-cli-6.1.0.tgz" + integrity sha512-yhbevPdwof7oyjQup/dEYbxYZCiK/vYYQVnZA3CbYxtz0TG6LcEumz1Pn5WhAwU6vGCSmKpsJ02r4O0/bwIB/Q== dependencies: "@babel/runtime" "7.9.0" "@expo/apple-utils" "0.0.0-alpha.31" @@ -5042,1939 +4885,1913 @@ "@expo/prebuild-config" "4.0.3" "@expo/spawn-async" "1.5.0" "@expo/xcpretty" "^4.1.0" - "better-opn" "^3.0.1" - "boxen" "^5.0.1" - "bplist-parser" "0.2.0" - "cacache" "^15.3.0" - "chalk" "^4.0.0" - "cli-table3" "^0.6.0" - "command-exists" "^1.2.8" - "commander" "2.17.1" - "dateformat" "3.0.3" - "env-editor" "^0.4.1" - "find-up" "^5.0.0" - "find-yarn-workspace-root" "~2.0.0" - "fs-extra" "9.0.0" - "getenv" "^1.0.0" - "glob" "7.1.6" - "got" "^11.1.4" - "hashids" "1.1.4" - "joi" "^17.4.0" - "js-yaml" "^3.13.1" - "keychain" "1.3.0" - "leven" "^3.1.0" - "lodash" "^4.17.19" - "minipass" "3.1.6" - "npm-package-arg" "6.1.0" - "ora" "3.4.0" - "pngjs" "3.4.0" - "progress" "2.0.3" - "prompts" "^2.3.2" - "qrcode-terminal" "0.11.0" - "read-last-lines" "1.6.0" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "slugify" "^1.3.4" - "strip-ansi" "^6.0.0" - "tar" "^6.0.5" - "tempy" "^0.7.1" - "terminal-link" "^2.1.1" - "turndown" "~7.0.0" - "untildify" "3.0.3" - "url-join" "4.0.0" - "uuid" "^8.0.0" - "wrap-ansi" "^7.0.0" - "xdl" "59.3.0" - -"expo-constants@~14.0.0", "expo-constants@~14.0.2": - "integrity" "sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==" - "resolved" "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz" - "version" "14.0.2" + better-opn "^3.0.1" + boxen "^5.0.1" + bplist-parser "0.2.0" + cacache "^15.3.0" + chalk "^4.0.0" + cli-table3 "^0.6.0" + command-exists "^1.2.8" + commander "2.17.1" + dateformat "3.0.3" + env-editor "^0.4.1" + find-up "^5.0.0" + find-yarn-workspace-root "~2.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + glob "7.1.6" + got "^11.1.4" + hashids "1.1.4" + joi "^17.4.0" + js-yaml "^3.13.1" + keychain "1.3.0" + leven "^3.1.0" + lodash "^4.17.19" + minipass "3.1.6" + npm-package-arg "6.1.0" + ora "3.4.0" + pngjs "3.4.0" + progress "2.0.3" + prompts "^2.3.2" + qrcode-terminal "0.11.0" + read-last-lines "1.6.0" + resolve-from "^5.0.0" + semver "7.3.2" + slugify "^1.3.4" + strip-ansi "^6.0.0" + tar "^6.0.5" + tempy "^0.7.1" + terminal-link "^2.1.1" + turndown "~7.0.0" + untildify "3.0.3" + url-join "4.0.0" + uuid "^8.0.0" + wrap-ansi "^7.0.0" + xdl "59.3.0" + +expo-constants@~14.0.0, expo-constants@~14.0.2: + version "14.0.2" + resolved "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz" + integrity sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA== dependencies: "@expo/config" "~7.0.2" - "uuid" "^3.3.2" - -"expo-error-recovery@~4.0.1": - "integrity" "sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==" - "resolved" "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz" - "version" "4.0.1" - -"expo-file-system@~15.1.0", "expo-file-system@~15.1.1": - "integrity" "sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==" - "resolved" "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz" - "version" "15.1.1" - dependencies: - "uuid" "^3.4.0" - -"expo-font@~11.0.1": - "integrity" "sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==" - "resolved" "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz" - "version" "11.0.1" - dependencies: - "fontfaceobserver" "^2.1.0" - -"expo-keep-awake@~11.0.1": - "integrity" "sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==" - "resolved" "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz" - "version" "11.0.1" - -"expo-modules-autolinking@>=0.8.1", "expo-modules-autolinking@1.0.2": - "integrity" "sha512-skAUXERKw1gtSw8xsvft9DE0KVhBvw4dujAtgCZoG2l513fN7ds+B5+30ZVgZATMC+EjtlmjKXzhp5QS44DCFA==" - "resolved" "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "chalk" "^4.1.0" - "commander" "^7.2.0" - "fast-glob" "^3.2.5" - "find-up" "^5.0.0" - "fs-extra" "^9.1.0" - -"expo-modules-autolinking@0.8.1": - "integrity" "sha512-S8qfaXCv//7tQWV9M+JKx3CF7ypYhDdSUbkUQdaVO/r8D76/aRTArY/aRw1yEfaAOzyK8C8diDToV1itl51DfQ==" - "resolved" "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz" - "version" "0.8.1" - dependencies: - "chalk" "^4.1.0" - "commander" "^7.2.0" - "fast-glob" "^3.2.5" - "find-up" "^5.0.0" - "fs-extra" "^9.1.0" - -"expo-modules-core@1.1.1": - "integrity" "sha512-+AcaYmaWphIfkBcccu65dyOhWnpOJ3+SQpoI4lI/Plg1nNjOLuBjmrdVvpiJOvkN+CqbNGsJ5Yll8LLk+C107Q==" - "resolved" "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "compare-versions" "^3.4.0" - "invariant" "^2.2.4" - -"expo-pwa@0.0.124": - "integrity" "sha512-hYvQQhxATNTivWSRc9nrd1WVYJJnBG8P/SVrJ4PPu0pmsS7ZIvWt981IXYG461y9UWnTbXdZEG4UOt0Thak1Gg==" - "resolved" "https://registry.npmjs.org/expo-pwa/-/expo-pwa-0.0.124.tgz" - "version" "0.0.124" + uuid "^3.3.2" + +expo-error-recovery@~4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz" + integrity sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ== + +expo-file-system@~15.1.0, expo-file-system@~15.1.1: + version "15.1.1" + resolved "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz" + integrity sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ== + dependencies: + uuid "^3.4.0" + +expo-font@~11.0.1: + version "11.0.1" + resolved "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz" + integrity sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg== + dependencies: + fontfaceobserver "^2.1.0" + +expo-keep-awake@~11.0.1: + version "11.0.1" + resolved "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz" + integrity sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A== + +expo-modules-autolinking@0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.8.1.tgz" + integrity sha512-S8qfaXCv//7tQWV9M+JKx3CF7ypYhDdSUbkUQdaVO/r8D76/aRTArY/aRw1yEfaAOzyK8C8diDToV1itl51DfQ== + dependencies: + chalk "^4.1.0" + commander "^7.2.0" + fast-glob "^3.2.5" + find-up "^5.0.0" + fs-extra "^9.1.0" + +expo-modules-autolinking@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz" + integrity sha512-skAUXERKw1gtSw8xsvft9DE0KVhBvw4dujAtgCZoG2l513fN7ds+B5+30ZVgZATMC+EjtlmjKXzhp5QS44DCFA== + dependencies: + chalk "^4.1.0" + commander "^7.2.0" + fast-glob "^3.2.5" + find-up "^5.0.0" + fs-extra "^9.1.0" + +expo-modules-core@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.1.1.tgz" + integrity sha512-+AcaYmaWphIfkBcccu65dyOhWnpOJ3+SQpoI4lI/Plg1nNjOLuBjmrdVvpiJOvkN+CqbNGsJ5Yll8LLk+C107Q== + dependencies: + compare-versions "^3.4.0" + invariant "^2.2.4" + +expo-pwa@0.0.124: + version "0.0.124" + resolved "https://registry.npmjs.org/expo-pwa/-/expo-pwa-0.0.124.tgz" + integrity sha512-hYvQQhxATNTivWSRc9nrd1WVYJJnBG8P/SVrJ4PPu0pmsS7ZIvWt981IXYG461y9UWnTbXdZEG4UOt0Thak1Gg== dependencies: "@expo/image-utils" "0.3.23" - "chalk" "^4.0.0" - "commander" "2.20.0" - "update-check" "1.5.3" + chalk "^4.0.0" + commander "2.20.0" + update-check "1.5.3" -"expo-status-bar@~1.4.2": - "integrity" "sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q==" - "resolved" "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.2.tgz" - "version" "1.4.2" +expo-status-bar@~1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.2.tgz" + integrity sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q== -"expo@*", "expo@~47.0.12": - "integrity" "sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng==" - "resolved" "https://registry.npmjs.org/expo/-/expo-47.0.13.tgz" - "version" "47.0.13" +expo@~47.0.12: + version "47.0.13" + resolved "https://registry.npmjs.org/expo/-/expo-47.0.13.tgz" + integrity sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng== dependencies: "@babel/runtime" "^7.14.0" "@expo/cli" "0.4.11" "@expo/config" "7.0.3" "@expo/config-plugins" "5.0.4" "@expo/vector-icons" "^13.0.0" - "babel-preset-expo" "~9.2.2" - "cross-spawn" "^6.0.5" - "expo-application" "~5.0.1" - "expo-asset" "~8.7.0" - "expo-constants" "~14.0.2" - "expo-file-system" "~15.1.1" - "expo-font" "~11.0.1" - "expo-keep-awake" "~11.0.1" - "expo-modules-autolinking" "1.0.2" - "expo-modules-core" "1.1.1" - "fbemitter" "^3.0.0" - "getenv" "^1.0.0" - "invariant" "^2.2.4" - "md5-file" "^3.2.3" - "node-fetch" "^2.6.7" - "pretty-format" "^26.5.2" - "uuid" "^3.4.0" + babel-preset-expo "~9.2.2" + cross-spawn "^6.0.5" + expo-application "~5.0.1" + expo-asset "~8.7.0" + expo-constants "~14.0.2" + expo-file-system "~15.1.1" + expo-font "~11.0.1" + expo-keep-awake "~11.0.1" + expo-modules-autolinking "1.0.2" + expo-modules-core "1.1.1" + fbemitter "^3.0.0" + getenv "^1.0.0" + invariant "^2.2.4" + md5-file "^3.2.3" + node-fetch "^2.6.7" + pretty-format "^26.5.2" + uuid "^3.4.0" optionalDependencies: - "expo-error-recovery" "~4.0.1" - -"express@^4.17.1": - "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - "version" "4.18.2" - dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.1" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.11.0" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"express@4.16.4": - "integrity" "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==" - "resolved" "https://registry.npmjs.org/express/-/express-4.16.4.tgz" - "version" "4.16.4" - dependencies: - "accepts" "~1.3.5" - "array-flatten" "1.1.1" - "body-parser" "1.18.3" - "content-disposition" "0.5.2" - "content-type" "~1.0.4" - "cookie" "0.3.1" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "~1.1.2" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.1.1" - "fresh" "0.5.2" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "~2.3.0" - "parseurl" "~1.3.2" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.4" - "qs" "6.5.2" - "range-parser" "~1.2.0" - "safe-buffer" "5.1.2" - "send" "0.16.2" - "serve-static" "1.13.2" - "setprototypeof" "1.1.0" - "statuses" "~1.4.0" - "type-is" "~1.6.16" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"extend-shallow@^2.0.1": - "integrity" "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-extendable" "^0.1.0" - -"extend-shallow@^3.0.0": - "integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extend-shallow@^3.0.2": - "integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extglob@^2.0.4": - "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "array-unique" "^0.3.2" - "define-property" "^1.0.0" - "expand-brackets" "^2.1.4" - "extend-shallow" "^2.0.1" - "fragment-cache" "^0.2.1" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"fast-deep-equal@^3.1.1": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-glob@^3.1.1", "fast-glob@^3.2.4", "fast-glob@^3.2.5", "fast-glob@^3.2.9": - "integrity" "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - "version" "3.2.12" + expo-error-recovery "~4.0.1" + +express@4.16.4: + version "4.16.4" + resolved "https://registry.npmjs.org/express/-/express-4.16.4.tgz" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +express@^4.17.1: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.5, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - "glob-parent" "^5.1.2" - "merge2" "^1.3.0" - "micromatch" "^4.0.4" - -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-loops@^1.1.3": - "integrity" "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" - "resolved" "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz" - "version" "1.1.3" - -"fastq@^1.6.0": - "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "reusify" "^1.0.4" - -"faye-websocket@^0.10.0": - "integrity" "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz" - "version" "0.10.0" - dependencies: - "websocket-driver" ">=0.5.1" - -"faye-websocket@~0.11.1": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" - dependencies: - "websocket-driver" ">=0.5.1" - -"fb-watchman@^2.0.0": - "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "bser" "2.1.1" - -"fbemitter@^3.0.0": - "integrity" "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==" - "resolved" "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "fbjs" "^3.0.0" - -"fbjs-css-vars@^1.0.0": - "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - "version" "1.0.2" - -"fbjs@^3.0.0", "fbjs@^3.0.4": - "integrity" "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==" - "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "cross-fetch" "^3.1.5" - "fbjs-css-vars" "^1.0.0" - "loose-envify" "^1.0.0" - "object-assign" "^4.1.0" - "promise" "^7.1.1" - "setimmediate" "^1.0.5" - "ua-parser-js" "^0.7.30" - -"fetch-retry@^4.1.1": - "integrity" "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" - "resolved" "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz" - "version" "4.1.1" - -"figgy-pudding@^3.5.1": - "integrity" "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - "resolved" "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" - "version" "3.5.2" - -"file-loader@*", "file-loader@~6.0.0": - "integrity" "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^2.6.5" - -"file-uri-to-path@1.0.0": - "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - "version" "1.0.0" - -"filesize@6.1.0": - "integrity" "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" - "resolved" "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" - "version" "6.1.0" - -"fill-range@^4.0.0": - "integrity" "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "extend-shallow" "^2.0.1" - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - "to-regex-range" "^2.1.0" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"finalhandler@1.1.1": - "integrity" "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "~2.3.0" - "parseurl" "~1.3.2" - "statuses" "~1.4.0" - "unpipe" "~1.0.0" - -"finalhandler@1.1.2": - "integrity" "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "~2.3.0" - "parseurl" "~1.3.3" - "statuses" "~1.5.0" - "unpipe" "~1.0.0" - -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" - -"find-babel-config@^1.2.0": - "integrity" "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==" - "resolved" "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "json5" "^0.5.1" - "path-exists" "^3.0.0" - -"find-cache-dir@^2.0.0", "find-cache-dir@^2.1.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" - -"find-cache-dir@^3.3.1": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" - -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "locate-path" "^3.0.0" - -"find-up@^4.0.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^5.0.0", "find-up@~5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"find-up@4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-yarn-workspace-root@~2.0.0": - "integrity" "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==" - "resolved" "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "micromatch" "^4.0.2" - -"flow-parser@^0.121.0": - "integrity" "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==" - "resolved" "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz" - "version" "0.121.0" - -"flow-parser@0.*": - "integrity" "sha512-WgmXdj+QWApMqtnMTeG7bF6tpX/+jsH5r/i61ukFCSXVgsaldLa/KOy+hcwQ3dbxsMGYM5iLQme6Z0/s0z2OkQ==" - "resolved" "https://registry.npmjs.org/flow-parser/-/flow-parser-0.198.1.tgz" - "version" "0.198.1" - -"flush-write-stream@^1.0.0": - "integrity" "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==" - "resolved" "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "inherits" "^2.0.3" - "readable-stream" "^2.3.6" - -"follow-redirects@^1.0.0", "follow-redirects@^1.10.0": - "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - "version" "1.15.2" - -"fontfaceobserver@^2.1.0": - "integrity" "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==" - "resolved" "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz" - "version" "2.3.0" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"for-in@^1.0.2": - "integrity" "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - "version" "1.0.2" - -"fork-ts-checker-webpack-plugin@4.1.6": - "integrity" "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" - "version" "4.1.6" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-loops@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz" + integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz" + integrity sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ== + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + +fetch-retry@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz" + integrity sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-loader@~6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-babel-config@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^5.0.0, find-up@~5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-yarn-workspace-root@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +flow-parser@0.*: + version "0.198.1" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.198.1.tgz" + integrity sha512-WgmXdj+QWApMqtnMTeG7bF6tpX/+jsH5r/i61ukFCSXVgsaldLa/KOy+hcwQ3dbxsMGYM5iLQme6Z0/s0z2OkQ== + +flow-parser@^0.121.0: + version "0.121.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz" + integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +fontfaceobserver@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz" + integrity sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +fork-ts-checker-webpack-plugin@4.1.6: + version "4.1.6" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== dependencies: "@babel/code-frame" "^7.5.5" - "chalk" "^2.4.1" - "micromatch" "^3.1.10" - "minimatch" "^3.0.4" - "semver" "^5.6.0" - "tapable" "^1.0.0" - "worker-rpc" "^0.1.0" - -"form-data@^2.3.2": - "integrity" "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" - -"form-data@^3.0.1": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fragment-cache@^0.2.1": - "integrity" "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==" - "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "map-cache" "^0.2.2" - -"freeport-async@2.0.0": - "integrity" "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==" - "resolved" "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz" - "version" "2.0.0" - -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"from2@^2.1.0": - "integrity" "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==" - "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - -"fs-extra@^1.0.0": - "integrity" "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^2.1.0" - "klaw" "^1.0.0" - -"fs-extra@^7.0.0": - "integrity" "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@^9.0.0", "fs-extra@^9.1.0": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-extra@~8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-extra@9.0.0": - "integrity" "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz" - "version" "9.0.0" - dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^1.0.0" - -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "minipass" "^3.0.0" - -"fs-write-stream-atomic@^1.0.8": - "integrity" "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==" - "resolved" "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "graceful-fs" "^4.1.2" - "iferr" "^0.1.5" - "imurmurhash" "^0.1.4" - "readable-stream" "1 || 2" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@^1.2.7": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" - -"fsevents@^2.1.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"function.prototype.name@^1.1.5": - "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - "functions-have-names" "^1.2.2" - -"functions-have-names@^1.2.2": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gensync@^1.0.0-beta.1", "gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.1": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": - "integrity" "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.3" - -"get-port@^3.2.0": - "integrity" "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" - "resolved" "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" - "version" "3.2.0" - -"get-stream@^4.0.0", "get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "pump" "^3.0.0" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"get-value@^2.0.3", "get-value@^2.0.6": - "integrity" "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" - "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - "version" "2.0.6" - -"getenv@^1.0.0": - "integrity" "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==" - "resolved" "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz" - "version" "1.0.0" - -"glob-parent@^3.1.0": - "integrity" "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "is-glob" "^3.1.0" - "path-dirname" "^1.0.0" - -"glob-parent@^5.1.1", "glob-parent@^5.1.2", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob@^6.0.1": - "integrity" "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==" - "resolved" "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" - "version" "6.0.4" - dependencies: - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "2 || 3" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.0.3", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@7.1.6": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"global-modules@2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "global-prefix" "^3.0.0" - -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globalthis@^1.0.3": - "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" - "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "define-properties" "^1.1.3" - -"globby@^11.0.1": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.2.9" - "ignore" "^5.2.0" - "merge2" "^1.4.1" - "slash" "^3.0.0" - -"globby@^6.1.0": - "integrity" "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==" - "resolved" "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "array-union" "^1.0.1" - "glob" "^7.0.3" - "object-assign" "^4.0.1" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - -"globby@11.0.1": - "integrity" "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" - "version" "11.0.1" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.1.1" - "ignore" "^5.1.4" - "merge2" "^1.3.0" - "slash" "^3.0.0" - -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"got@^11.1.4": - "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" - "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" - "version" "11.8.6" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@^2.3.2: + version "2.5.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +freeport-async@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz" + integrity sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz" + integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0, fs-extra@~8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.1.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getenv@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz" + integrity sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg== + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@11.0.1: + version "11.0.1" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^11.0.1: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" + integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^11.1.4: + version "11.8.6" + resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" - "cacheable-lookup" "^5.0.3" - "cacheable-request" "^7.0.2" - "decompress-response" "^6.0.0" - "http2-wrapper" "^1.0.0-beta.5.2" - "lowercase-keys" "^2.0.0" - "p-cancelable" "^2.0.0" - "responselike" "^2.0.0" - -"got@^9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" "@szmarczak/http-timer" "^1.1.2" - "cacheable-request" "^6.0.0" - "decompress-response" "^3.3.0" - "duplexer3" "^0.1.4" - "get-stream" "^4.1.0" - "lowercase-keys" "^1.0.1" - "mimic-response" "^1.0.1" - "p-cancelable" "^1.0.0" - "to-readable-stream" "^1.0.0" - "url-parse-lax" "^3.0.0" - -"graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.3", "graceful-fs@^4.1.6", "graceful-fs@^4.1.9", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"graphql-tag@^2.10.1": - "integrity" "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==" - "resolved" "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" - "version" "2.12.6" - dependencies: - "tslib" "^2.1.0" - -"graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@15.8.0": - "integrity" "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" - "resolved" "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" - "version" "15.8.0" - -"gzip-size@5.1.1": - "integrity" "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "duplexer" "^0.1.1" - "pify" "^4.0.1" - -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" - -"has-bigints@^1.0.1", "has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-intrinsic" "^1.1.1" - -"has-proto@^1.0.1": - "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" - "version" "1.0.1" - -"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has-value@^0.3.1": - "integrity" "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "get-value" "^2.0.3" - "has-values" "^0.1.4" - "isobject" "^2.0.0" - -"has-value@^1.0.0": - "integrity" "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-value" "^2.0.6" - "has-values" "^1.0.0" - "isobject" "^3.0.0" - -"has-values@^0.1.4": - "integrity" "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - "version" "0.1.4" - -"has-values@^1.0.0": - "integrity" "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-number" "^3.0.0" - "kind-of" "^4.0.0" - -"has@^1.0.0", "has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"hasbin@1.2.3": - "integrity" "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==" - "resolved" "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "async" "~1.5" - -"hash-base@^3.0.0": - "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" - "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" - -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"hashids@1.1.4": - "integrity" "sha512-U/fnTE3edW0AV92ZI/BfEluMZuVcu3MDOopsN7jS+HqDYcarQo8rXQiWlsBlm0uX48/taYSdxRsfzh2HRg5Z6w==" - "resolved" "https://registry.npmjs.org/hashids/-/hashids-1.1.4.tgz" - "version" "1.1.4" - -"he@^1.2.0", "he@1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"hermes-estree@0.8.0": - "integrity" "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==" - "resolved" "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz" - "version" "0.8.0" - -"hermes-parser@0.8.0": - "integrity" "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==" - "resolved" "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz" - "version" "0.8.0" - dependencies: - "hermes-estree" "0.8.0" - -"hermes-profile-transformer@^0.0.6": - "integrity" "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==" - "resolved" "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" - "version" "0.0.6" - dependencies: - "source-map" "^0.7.3" - -"hex-color-regex@^1.1.0": - "integrity" "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - "resolved" "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" - "version" "1.1.0" - -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"hosted-git-info@^2.6.0": - "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - "version" "2.8.9" - -"hosted-git-info@^3.0.2": - "integrity" "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz" - "version" "3.0.8" - dependencies: - "lru-cache" "^6.0.0" - -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" - dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" - -"hsl-regex@^1.0.0": - "integrity" "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==" - "resolved" "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" - "version" "1.0.0" - -"hsla-regex@^1.0.0": - "integrity" "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==" - "resolved" "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" - "version" "1.0.0" - -"html-entities@^1.3.1": - "integrity" "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" - "version" "1.4.0" - -"html-loader@~1.1.0": - "integrity" "sha512-zwLbEgy+i7sgIYTlxI9M7jwkn29IvdsV6f1y7a2aLv/w8l1RigVk0PFijBZLLFsdi2gvL8sf2VJhTjLlfnK8sA==" - "resolved" "https://registry.npmjs.org/html-loader/-/html-loader-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "html-minifier-terser" "^5.0.5" - "htmlparser2" "^4.1.0" - "loader-utils" "^2.0.0" - "parse-srcset" "^1.0.2" - "schema-utils" "^2.6.5" - -"html-minifier-terser@^5.0.1", "html-minifier-terser@^5.0.5": - "integrity" "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "camel-case" "^4.1.1" - "clean-css" "^4.2.3" - "commander" "^4.1.1" - "he" "^1.2.0" - "param-case" "^3.0.3" - "relateurl" "^0.2.7" - "terser" "^4.6.3" - -"html-webpack-plugin@~4.3.0": - "integrity" "sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz" - "version" "4.3.0" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graphql-tag@^2.10.1: + version "2.12.6" + resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@15.8.0: + version "15.8.0" + resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hasbin@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz" + integrity sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg== + dependencies: + async "~1.5" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hashids@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/hashids/-/hashids-1.1.4.tgz" + integrity sha512-U/fnTE3edW0AV92ZI/BfEluMZuVcu3MDOopsN7jS+HqDYcarQo8rXQiWlsBlm0uX48/taYSdxRsfzh2HRg5Z6w== + +he@1.2.0, he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hermes-estree@0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz" + integrity sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q== + +hermes-parser@0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz" + integrity sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA== + dependencies: + hermes-estree "0.8.0" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.6.0: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^3.0.2: + version "3.0.8" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" + integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" + integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-loader@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/html-loader/-/html-loader-1.1.0.tgz" + integrity sha512-zwLbEgy+i7sgIYTlxI9M7jwkn29IvdsV6f1y7a2aLv/w8l1RigVk0PFijBZLLFsdi2gvL8sf2VJhTjLlfnK8sA== + dependencies: + html-minifier-terser "^5.0.5" + htmlparser2 "^4.1.0" + loader-utils "^2.0.0" + parse-srcset "^1.0.2" + schema-utils "^2.6.5" + +html-minifier-terser@^5.0.1, html-minifier-terser@^5.0.5: + version "5.1.1" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@~4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz" + integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" "@types/webpack" "^4.41.8" - "html-minifier-terser" "^5.0.1" - "loader-utils" "^1.2.3" - "lodash" "^4.17.15" - "pretty-error" "^2.1.1" - "tapable" "^1.1.3" - "util.promisify" "1.0.0" - -"htmlparser2@^4.1.0": - "integrity" "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^3.0.0" - "domutils" "^2.0.0" - "entities" "^2.0.0" - -"htmlparser2@^6.1.0": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" - -"http-cache-semantics@^4.0.0": - "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" - "version" "4.1.1" - -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2", "http-errors@~1.6.3", "http-errors@1.6.3": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@1.7.2": - "integrity" "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" - "version" "1.7.2" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.1" - "statuses" ">= 1.5.0 < 2" - "toidentifier" "1.0.0" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-middleware@0.19.1": - "integrity" "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz" - "version" "0.19.1" - dependencies: - "http-proxy" "^1.17.0" - "is-glob" "^4.0.0" - "lodash" "^4.17.11" - "micromatch" "^3.1.10" - -"http-proxy@^1.17.0": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" - dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" - -"http2-wrapper@^1.0.0-beta.5.2": - "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" - "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "quick-lru" "^5.1.1" - "resolve-alpn" "^1.0.0" - -"https-browserify@^1.0.0": - "integrity" "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" - -"https-proxy-agent@^5.0.1": - "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "agent-base" "6" - "debug" "4" - -"hyphenate-style-name@^1.0.3": - "integrity" "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - "resolved" "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" - "version" "1.0.4" - -"iconv-lite@^0.4.4", "iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"iconv-lite@0.4.23": - "integrity" "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz" - "version" "0.4.23" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"icss-utils@^4.0.0", "icss-utils@^4.1.1": - "integrity" "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "postcss" "^7.0.14" - -"ieee754@^1.1.13", "ieee754@^1.1.4": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"iferr@^0.1.5": - "integrity" "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" - "resolved" "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" - "version" "0.1.5" - -"ignore@^5.1.4", "ignore@^5.2.0": - "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - "version" "5.2.4" - -"image-size@^0.6.0": - "integrity" "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==" - "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz" - "version" "0.6.3" - -"image-size@^1.0.0": - "integrity" "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==" - "resolved" "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "queue" "6.0.2" - -"immer@8.0.1": - "integrity" "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" - "resolved" "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" - "version" "8.0.1" - -"import-fresh@^2.0.0": - "integrity" "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "caller-path" "^2.0.0" - "resolve-from" "^3.0.0" - -"import-local@^2.0.0": - "integrity" "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "pkg-dir" "^3.0.0" - "resolve-cwd" "^2.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"indexes-of@^1.0.1": - "integrity" "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" - "resolved" "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" - "version" "1.0.1" - -"infer-owner@^1.0.3", "infer-owner@^1.0.4": - "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - "version" "1.0.4" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.1": - "integrity" "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - "version" "2.0.1" - -"inherits@2.0.3": - "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"ini@^1.3.5", "ini@~1.3.0": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - -"inline-style-prefixer@^6.0.1": - "integrity" "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==" - "resolved" "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz" - "version" "6.0.4" - dependencies: - "css-in-js-utils" "^3.1.0" - "fast-loops" "^1.1.3" - -"internal-ip@^4.3.0", "internal-ip@4.3.0": - "integrity" "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==" - "resolved" "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "default-gateway" "^4.2.0" - "ipaddr.js" "^1.9.0" - -"internal-slot@^1.0.4": - "integrity" "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "get-intrinsic" "^1.1.3" - "has" "^1.0.3" - "side-channel" "^1.0.4" - -"invariant@^2.2.4": - "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" - "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - "version" "2.2.4" - dependencies: - "loose-envify" "^1.0.0" - -"ip-regex@^2.1.0": - "integrity" "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==" - "resolved" "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" - "version" "2.1.0" - -"ip@^1.1.0", "ip@^1.1.5": - "integrity" "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" - "version" "1.1.8" - -"ipaddr.js@^1.9.0", "ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"is-absolute-url@^2.0.0": - "integrity" "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" - "version" "2.1.0" - -"is-absolute-url@^3.0.3": - "integrity" "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" - "version" "3.0.3" - -"is-accessor-descriptor@^0.1.6": - "integrity" "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "kind-of" "^3.0.2" - -"is-accessor-descriptor@^1.0.0": - "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-array-buffer@^3.0.1": - "integrity" "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==" - "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-typed-array" "^1.1.10" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-arrayish@^0.3.1": - "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" - "version" "0.3.2" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@^1.0.0": - "integrity" "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "binary-extensions" "^1.0.0" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-buffer@^1.1.5", "is-buffer@~1.1.1", "is-buffer@~1.1.6": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" - -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-color-stop@^1.0.0": - "integrity" "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==" - "resolved" "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "css-color-names" "^0.0.4" - "hex-color-regex" "^1.1.0" - "hsl-regex" "^1.0.0" - "hsla-regex" "^1.0.0" - "rgb-regex" "^1.0.1" - "rgba-regex" "^1.0.0" - -"is-core-module@^2.9.0": - "integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - "version" "2.11.0" - dependencies: - "has" "^1.0.3" - -"is-data-descriptor@^0.1.4": - "integrity" "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - "version" "0.1.4" - dependencies: - "kind-of" "^3.0.2" - -"is-data-descriptor@^1.0.0": - "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-descriptor@^0.1.0": - "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "is-accessor-descriptor" "^0.1.6" - "is-data-descriptor" "^0.1.4" - "kind-of" "^5.0.0" - -"is-descriptor@^1.0.0", "is-descriptor@^1.0.2": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" - -"is-directory@^0.3.1": - "integrity" "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==" - "resolved" "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - "version" "0.3.1" - -"is-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extendable@^0.1.0", "is-extendable@^0.1.1": - "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" - -"is-extendable@^1.0.1": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-plain-object" "^2.0.4" - -"is-extglob@^1.0.0": - "integrity" "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - "version" "1.0.0" - -"is-extglob@^2.1.0", "is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-glob@^2.0.0": - "integrity" "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-extglob" "^1.0.0" - -"is-glob@^3.1.0": - "integrity" "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "is-extglob" "^2.1.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-interactive@^1.0.0": - "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - "version" "1.0.0" - -"is-invalid-path@^0.1.0": - "integrity" "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==" - "resolved" "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "is-glob" "^2.0.0" - -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^3.0.0": - "integrity" "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "kind-of" "^3.0.2" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" - -"is-path-cwd@^2.0.0", "is-path-cwd@^2.2.0": - "integrity" "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - "resolved" "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" - "version" "2.2.0" - -"is-path-in-cwd@^2.0.0": - "integrity" "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==" - "resolved" "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "is-path-inside" "^2.1.0" - -"is-path-inside@^2.1.0": - "integrity" "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "path-is-inside" "^1.0.2" - -"is-path-inside@^3.0.2": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-plain-object@^2.0.3", "is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-port-reachable@^2.0.1": - "integrity" "sha512-SqU55C5gkitgOhl2ccd2v23MbkbcOFa5e4aPo8h8VGqOifh7iDwG44bQBWGW/lZulTjl9AWIKP0NiUWpa+TtWA==" - "resolved" "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-2.0.1.tgz" - "version" "2.0.1" - -"is-reachable@^4.0.0": - "integrity" "sha512-eCTBKm9K6nO3H1S3BrJBAqZJIVXKNdwDuGl6KHf1bnf/bn02BvEe+l+MypjsxbqZ7mt5oMhu+bS/mm7G2FRW3A==" - "resolved" "https://registry.npmjs.org/is-reachable/-/is-reachable-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "arrify" "^2.0.1" - "got" "^9.6.0" - "is-port-reachable" "^2.0.1" - "p-any" "^2.1.0" - "p-timeout" "^3.2.0" - "prepend-http" "^3.0.1" - "router-ips" "^1.0.0" - "url-parse" "^1.4.7" - -"is-regex@^1.0.4", "is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-resolvable@^1.0.0": - "integrity" "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - "resolved" "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" - "version" "1.1.0" - -"is-root@^2.1.0", "is-root@2.1.0": - "integrity" "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - "resolved" "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" - "version" "2.1.0" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-stream@^1.1.0": - "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-typed-array@^1.1.10", "is-typed-array@^1.1.9": - "integrity" "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" - "version" "1.1.10" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-valid-path@^0.1.1": - "integrity" "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==" - "resolved" "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "is-invalid-path" "^0.1.0" - -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-windows@^1.0.2": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"is-wsl@^1.1.0": - "integrity" "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - "version" "1.1.0" - -"is-wsl@^2.0.0", "is-wsl@^2.1.1", "is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0": - "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^2.0.0": - "integrity" "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "isarray" "1.0.0" - -"isobject@^3.0.0", "isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"jest-get-type@^26.3.0": - "integrity" "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" - "version" "26.3.0" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== + +ignore@^5.1.4, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +image-size@^0.6.0: + version "0.6.3" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + +image-size@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz" + integrity sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg== + dependencies: + queue "6.0.2" + +immer@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-prefixer@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz" + integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg== + dependencies: + css-in-js-utils "^3.1.0" + fast-loops "^1.1.3" + +internal-ip@4.3.0, internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz" + integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" + integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== + +ip@^1.1.0, ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" + integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz" + integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.1, is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" + integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-invalid-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz" + integrity sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ== + dependencies: + is-glob "^2.0.0" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-port-reachable@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-2.0.1.tgz" + integrity sha512-SqU55C5gkitgOhl2ccd2v23MbkbcOFa5e4aPo8h8VGqOifh7iDwG44bQBWGW/lZulTjl9AWIKP0NiUWpa+TtWA== + +is-reachable@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-reachable/-/is-reachable-4.0.0.tgz" + integrity sha512-eCTBKm9K6nO3H1S3BrJBAqZJIVXKNdwDuGl6KHf1bnf/bn02BvEe+l+MypjsxbqZ7mt5oMhu+bS/mm7G2FRW3A== + dependencies: + arrify "^2.0.1" + got "^9.6.0" + is-port-reachable "^2.0.1" + p-any "^2.1.0" + p-timeout "^3.2.0" + prepend-http "^3.0.1" + router-ips "^1.0.0" + url-parse "^1.4.7" + +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0, is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-valid-path@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz" + integrity sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A== + dependencies: + is-invalid-path "^0.1.0" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.0.0, is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -"jest-regex-util@^27.0.6": - "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" - "version" "27.5.1" - -"jest-serializer@^27.0.6": - "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" - "version" "27.5.1" +jest-regex-util@^27.0.6: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-serializer@^27.0.6: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" - "graceful-fs" "^4.2.9" + graceful-fs "^4.2.9" -"jest-util@^27.2.0": - "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" - "version" "27.5.1" +jest-util@^27.2.0: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-validate@^26.5.2": - "integrity" "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz" - "version" "26.6.2" +jest-validate@^26.5.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: "@jest/types" "^26.6.2" - "camelcase" "^6.0.0" - "chalk" "^4.0.0" - "jest-get-type" "^26.3.0" - "leven" "^3.1.0" - "pretty-format" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" -"jest-worker@^26.2.1": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^7.0.0" -"jest-worker@^27.2.0": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" +jest-worker@^27.2.0: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jimp-compact@0.16.1": - "integrity" "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==" - "resolved" "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz" - "version" "0.16.1" +jimp-compact@0.16.1: + version "0.16.1" + resolved "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz" + integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== -"joi@^17.2.1", "joi@^17.4.0": - "integrity" "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==" - "resolved" "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz" - "version" "17.7.0" +joi@^17.2.1, joi@^17.4.0: + version "17.7.0" + resolved "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz" + integrity sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" @@ -6982,40 +6799,40 @@ "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -"join-component@^1.1.0": - "integrity" "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==" - "resolved" "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz" - "version" "1.1.0" +join-component@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz" + integrity sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ== -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" + argparse "^1.0.7" + esprima "^4.0.0" -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - "argparse" "^2.0.1" + argparse "^2.0.1" -"jsc-android@^250230.2.1": - "integrity" "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==" - "resolved" "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz" - "version" "250230.2.1" +jsc-android@^250230.2.1: + version "250230.2.1" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz" + integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q== -"jscodeshift@^0.13.1": - "integrity" "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==" - "resolved" "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz" - "version" "0.13.1" +jscodeshift@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz" + integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== dependencies: "@babel/core" "^7.13.16" "@babel/parser" "^7.13.16" @@ -7026,607 +6843,570 @@ "@babel/preset-flow" "^7.13.13" "@babel/preset-typescript" "^7.13.0" "@babel/register" "^7.13.16" - "babel-core" "^7.0.0-bridge.0" - "chalk" "^4.1.2" - "flow-parser" "0.*" - "graceful-fs" "^4.2.4" - "micromatch" "^3.1.10" - "neo-async" "^2.5.0" - "node-dir" "^0.1.17" - "recast" "^0.20.4" - "temp" "^0.8.4" - "write-file-atomic" "^2.3.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-buffer@3.0.0": - "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" - -"json-buffer@3.0.1": - "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - "version" "3.0.1" - -"json-parse-better-errors@^1.0.1", "json-parse-better-errors@^1.0.2": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-schema-deref-sync@^0.13.0": - "integrity" "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==" - "resolved" "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz" - "version" "0.13.0" - dependencies: - "clone" "^2.1.2" - "dag-map" "~1.0.0" - "is-valid-path" "^0.1.1" - "lodash" "^4.17.13" - "md5" "~2.2.0" - "memory-cache" "~0.2.0" - "traverse" "~0.6.6" - "valid-url" "~1.0.9" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" - -"json3@^3.3.2": - "integrity" "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" - "resolved" "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz" - "version" "3.3.3" - -"json5@^0.5.1": - "integrity" "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" - "resolved" "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" - "version" "0.5.1" - -"json5@^1.0.1": - "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minimist" "^1.2.0" - -"json5@^2.1.2", "json5@^2.2.2": - "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - "version" "2.2.3" - -"jsonfile@^2.1.0": - "integrity" "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" - "version" "2.4.0" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.4" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-deref-sync@^0.13.0: + version "0.13.0" + resolved "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz" + integrity sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg== + dependencies: + clone "^2.1.2" + dag-map "~1.0.0" + is-valid-path "^0.1.1" + lodash "^4.17.13" + md5 "~2.2.0" + memory-cache "~0.2.0" + traverse "~0.6.6" + valid-url "~1.0.9" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + +json5@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - "universalify" "^2.0.0" + universalify "^2.0.0" optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"keychain@1.3.0": - "integrity" "sha512-VHdsIWwXNO1l+fqwNdYZ/dDGnaN60RLuOIgMnwL+2kE3woPvxpOpeusjfaMZbTFaQFwGnTTzFbVHqQrDqf1FnQ==" - "resolved" "https://registry.npmjs.org/keychain/-/keychain-1.3.0.tgz" - "version" "1.3.0" +keychain@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/keychain/-/keychain-1.3.0.tgz" + integrity sha512-VHdsIWwXNO1l+fqwNdYZ/dDGnaN60RLuOIgMnwL+2kE3woPvxpOpeusjfaMZbTFaQFwGnTTzFbVHqQrDqf1FnQ== -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - "json-buffer" "3.0.0" + json-buffer "3.0.0" -"keyv@^4.0.0": - "integrity" "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz" - "version" "4.5.2" +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== dependencies: - "json-buffer" "3.0.1" - -"killable@^1.0.1": - "integrity" "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - "resolved" "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz" - "version" "1.0.1" + json-buffer "3.0.1" -"kind-of@^3.0.2": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "is-buffer" "^1.1.5" +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== -"kind-of@^3.0.3": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: - "is-buffer" "^1.1.5" + is-buffer "^1.1.5" -"kind-of@^3.2.0": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: - "is-buffer" "^1.1.5" + is-buffer "^1.1.5" -"kind-of@^4.0.0": - "integrity" "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "is-buffer" "^1.1.5" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -"kind-of@^5.0.0": - "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - "version" "5.1.0" +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -"kind-of@^6.0.0", "kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"klaw@^1.0.0": - "integrity" "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==" - "resolved" "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" - "version" "1.3.1" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== optionalDependencies: - "graceful-fs" "^4.1.9" - -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" - -"last-call-webpack-plugin@^3.0.0": - "integrity" "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==" - "resolved" "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "lodash" "^4.17.5" - "webpack-sources" "^1.1.0" - -"latest-version@5.1.0": - "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" - "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "package-json" "^6.3.0" - -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" - -"loader-runner@^2.4.0": - "integrity" "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" - "version" "2.4.0" - -"loader-utils@^1.1.0": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" - -"loader-utils@^1.2.3": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" - -"loader-utils@^1.4.0": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" - -"loader-utils@^2.0.0": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"loader-utils@2.0.0": - "integrity" "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.memoize@^4.1.2": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.throttle@^4.1.1": - "integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" - "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" - "version" "4.1.1" - -"lodash.uniq@^4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash@^4.17.11", "lodash@^4.17.13", "lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.17.4", "lodash@^4.17.5", "lodash@>=3.5 <5": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-symbols@^2.2.0": - "integrity" "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "chalk" "^2.0.1" - -"log-symbols@^4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"logkitty@^0.7.1": - "integrity" "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==" - "resolved" "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" - "version" "0.7.1" - dependencies: - "ansi-fragments" "^0.2.1" - "dayjs" "^1.8.15" - "yargs" "^15.1.0" - -"loglevel@^1.6.8": - "integrity" "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" - "resolved" "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" - "version" "1.8.1" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.3.1": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^2.0.3" - -"lowercase-keys@^1.0.0": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" - -"lru-cache@^5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "yallist" "^3.0.2" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"make-dir@^2.0.0", "make-dir@^2.1.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pify" "^4.0.1" - "semver" "^5.6.0" - -"make-dir@^3.0.2": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" - dependencies: - "tmpl" "1.0.5" - -"map-cache@^0.2.2": - "integrity" "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" - "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - "version" "0.2.2" - -"map-visit@^1.0.0": - "integrity" "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==" - "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "object-visit" "^1.0.0" - -"md5-file@^3.2.3": - "integrity" "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==" - "resolved" "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz" - "version" "3.2.3" - dependencies: - "buffer-alloc" "^1.1.0" - -"md5.js@^1.3.4": - "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" - "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"md5@^2.2.1": - "integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==" - "resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "charenc" "0.0.2" - "crypt" "0.0.2" - "is-buffer" "~1.1.6" - -"md5@~2.2.0": - "integrity" "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==" - "resolved" "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "charenc" "~0.0.1" - "crypt" "~0.0.1" - "is-buffer" "~1.1.1" - -"md5hex@^1.0.0", "md5hex@1.0.0": - "integrity" "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==" - "resolved" "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz" - "version" "1.0.0" - -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" - -"mdn-data@2.0.4": - "integrity" "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - "version" "2.0.4" - -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"memoize-one@^5.0.0": - "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - "version" "5.2.1" - -"memory-cache@~0.2.0": - "integrity" "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==" - "resolved" "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz" - "version" "0.2.0" - -"memory-fs@^0.4.1": - "integrity" "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" - -"memory-fs@^0.5.0": - "integrity" "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" - "version" "0.5.0" - dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" - -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"metro-babel-transformer@0.72.3": - "integrity" "sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==" - "resolved" "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz" - "version" "0.72.3" + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +latest-version@5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +loglevel@^1.6.8: + version "1.8.1" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" + integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +md5-file@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz" + integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== + dependencies: + buffer-alloc "^1.1.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +md5@^2.2.1: + version "2.3.0" + resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + +md5@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz" + integrity sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ== + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + +md5hex@1.0.0, md5hex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz" + integrity sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +memory-cache@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz" + integrity sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +metro-babel-transformer@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz" + integrity sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw== dependencies: "@babel/core" "^7.14.0" - "hermes-parser" "0.8.0" - "metro-source-map" "0.72.3" - "nullthrows" "^1.1.1" - -"metro-cache-key@0.72.3": - "integrity" "sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==" - "resolved" "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz" - "version" "0.72.3" - -"metro-cache@0.72.3": - "integrity" "sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==" - "resolved" "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz" - "version" "0.72.3" - dependencies: - "metro-core" "0.72.3" - "rimraf" "^2.5.4" - -"metro-config@0.72.3": - "integrity" "sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==" - "resolved" "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz" - "version" "0.72.3" - dependencies: - "cosmiconfig" "^5.0.5" - "jest-validate" "^26.5.2" - "metro" "0.72.3" - "metro-cache" "0.72.3" - "metro-core" "0.72.3" - "metro-runtime" "0.72.3" - -"metro-core@0.72.3": - "integrity" "sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==" - "resolved" "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz" - "version" "0.72.3" - dependencies: - "lodash.throttle" "^4.1.1" - "metro-resolver" "0.72.3" - -"metro-file-map@0.72.3": - "integrity" "sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==" - "resolved" "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz" - "version" "0.72.3" - dependencies: - "abort-controller" "^3.0.0" - "anymatch" "^3.0.3" - "debug" "^2.2.0" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.4" - "invariant" "^2.2.4" - "jest-regex-util" "^27.0.6" - "jest-serializer" "^27.0.6" - "jest-util" "^27.2.0" - "jest-worker" "^27.2.0" - "micromatch" "^4.0.4" - "walker" "^1.0.7" + hermes-parser "0.8.0" + metro-source-map "0.72.3" + nullthrows "^1.1.1" + +metro-cache-key@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz" + integrity sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg== + +metro-cache@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz" + integrity sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A== + dependencies: + metro-core "0.72.3" + rimraf "^2.5.4" + +metro-config@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz" + integrity sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw== + dependencies: + cosmiconfig "^5.0.5" + jest-validate "^26.5.2" + metro "0.72.3" + metro-cache "0.72.3" + metro-core "0.72.3" + metro-runtime "0.72.3" + +metro-core@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz" + integrity sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.72.3" + +metro-file-map@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz" + integrity sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA== + dependencies: + abort-controller "^3.0.0" + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-regex-util "^27.0.6" + jest-serializer "^27.0.6" + jest-util "^27.2.0" + jest-worker "^27.2.0" + micromatch "^4.0.4" + walker "^1.0.7" optionalDependencies: - "fsevents" "^2.1.2" + fsevents "^2.1.2" -"metro-hermes-compiler@0.72.3": - "integrity" "sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==" - "resolved" "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz" - "version" "0.72.3" +metro-hermes-compiler@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz" + integrity sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg== -"metro-inspector-proxy@0.72.3": - "integrity" "sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==" - "resolved" "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz" - "version" "0.72.3" +metro-inspector-proxy@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz" + integrity sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw== dependencies: - "connect" "^3.6.5" - "debug" "^2.2.0" - "ws" "^7.5.1" - "yargs" "^15.3.1" + connect "^3.6.5" + debug "^2.2.0" + ws "^7.5.1" + yargs "^15.3.1" -"metro-minify-uglify@0.72.3": - "integrity" "sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==" - "resolved" "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz" - "version" "0.72.3" +metro-minify-uglify@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz" + integrity sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA== dependencies: - "uglify-es" "^3.1.9" + uglify-es "^3.1.9" -"metro-react-native-babel-preset@0.72.3": - "integrity" "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==" - "resolved" "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz" - "version" "0.72.3" +metro-react-native-babel-preset@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz" + integrity sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw== dependencies: "@babel/core" "^7.14.0" "@babel/plugin-proposal-async-generator-functions" "^7.0.0" @@ -7666,96 +7446,96 @@ "@babel/plugin-transform-typescript" "^7.5.0" "@babel/plugin-transform-unicode-regex" "^7.0.0" "@babel/template" "^7.0.0" - "react-refresh" "^0.4.0" + react-refresh "^0.4.0" -"metro-react-native-babel-transformer@0.72.3": - "integrity" "sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==" - "resolved" "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz" - "version" "0.72.3" +metro-react-native-babel-transformer@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz" + integrity sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA== dependencies: "@babel/core" "^7.14.0" - "babel-preset-fbjs" "^3.4.0" - "hermes-parser" "0.8.0" - "metro-babel-transformer" "0.72.3" - "metro-react-native-babel-preset" "0.72.3" - "metro-source-map" "0.72.3" - "nullthrows" "^1.1.1" + babel-preset-fbjs "^3.4.0" + hermes-parser "0.8.0" + metro-babel-transformer "0.72.3" + metro-react-native-babel-preset "0.72.3" + metro-source-map "0.72.3" + nullthrows "^1.1.1" -"metro-resolver@0.72.3": - "integrity" "sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==" - "resolved" "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz" - "version" "0.72.3" +metro-resolver@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz" + integrity sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w== dependencies: - "absolute-path" "^0.0.0" + absolute-path "^0.0.0" -"metro-runtime@0.72.3": - "integrity" "sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==" - "resolved" "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz" - "version" "0.72.3" +metro-runtime@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz" + integrity sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA== dependencies: "@babel/runtime" "^7.0.0" - "react-refresh" "^0.4.0" + react-refresh "^0.4.0" -"metro-source-map@0.72.3": - "integrity" "sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==" - "resolved" "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz" - "version" "0.72.3" +metro-source-map@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz" + integrity sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ== dependencies: "@babel/traverse" "^7.14.0" "@babel/types" "^7.0.0" - "invariant" "^2.2.4" - "metro-symbolicate" "0.72.3" - "nullthrows" "^1.1.1" - "ob1" "0.72.3" - "source-map" "^0.5.6" - "vlq" "^1.0.0" - -"metro-symbolicate@0.72.3": - "integrity" "sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==" - "resolved" "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz" - "version" "0.72.3" - dependencies: - "invariant" "^2.2.4" - "metro-source-map" "0.72.3" - "nullthrows" "^1.1.1" - "source-map" "^0.5.6" - "through2" "^2.0.1" - "vlq" "^1.0.0" - -"metro-transform-plugins@0.72.3": - "integrity" "sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==" - "resolved" "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz" - "version" "0.72.3" + invariant "^2.2.4" + metro-symbolicate "0.72.3" + nullthrows "^1.1.1" + ob1 "0.72.3" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz" + integrity sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw== + dependencies: + invariant "^2.2.4" + metro-source-map "0.72.3" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz" + integrity sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.14.0" - "nullthrows" "^1.1.1" + nullthrows "^1.1.1" -"metro-transform-worker@0.72.3": - "integrity" "sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==" - "resolved" "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz" - "version" "0.72.3" +metro-transform-worker@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz" + integrity sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" "@babel/parser" "^7.14.0" "@babel/types" "^7.0.0" - "babel-preset-fbjs" "^3.4.0" - "metro" "0.72.3" - "metro-babel-transformer" "0.72.3" - "metro-cache" "0.72.3" - "metro-cache-key" "0.72.3" - "metro-hermes-compiler" "0.72.3" - "metro-source-map" "0.72.3" - "metro-transform-plugins" "0.72.3" - "nullthrows" "^1.1.1" - -"metro@0.72.3": - "integrity" "sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==" - "resolved" "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz" - "version" "0.72.3" + babel-preset-fbjs "^3.4.0" + metro "0.72.3" + metro-babel-transformer "0.72.3" + metro-cache "0.72.3" + metro-cache-key "0.72.3" + metro-hermes-compiler "0.72.3" + metro-source-map "0.72.3" + metro-transform-plugins "0.72.3" + nullthrows "^1.1.1" + +metro@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz" + integrity sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.14.0" @@ -7764,1910 +7544,1892 @@ "@babel/template" "^7.0.0" "@babel/traverse" "^7.14.0" "@babel/types" "^7.0.0" - "absolute-path" "^0.0.0" - "accepts" "^1.3.7" - "async" "^3.2.2" - "chalk" "^4.0.0" - "ci-info" "^2.0.0" - "connect" "^3.6.5" - "debug" "^2.2.0" - "denodeify" "^1.2.1" - "error-stack-parser" "^2.0.6" - "fs-extra" "^1.0.0" - "graceful-fs" "^4.2.4" - "hermes-parser" "0.8.0" - "image-size" "^0.6.0" - "invariant" "^2.2.4" - "jest-worker" "^27.2.0" - "lodash.throttle" "^4.1.1" - "metro-babel-transformer" "0.72.3" - "metro-cache" "0.72.3" - "metro-cache-key" "0.72.3" - "metro-config" "0.72.3" - "metro-core" "0.72.3" - "metro-file-map" "0.72.3" - "metro-hermes-compiler" "0.72.3" - "metro-inspector-proxy" "0.72.3" - "metro-minify-uglify" "0.72.3" - "metro-react-native-babel-preset" "0.72.3" - "metro-resolver" "0.72.3" - "metro-runtime" "0.72.3" - "metro-source-map" "0.72.3" - "metro-symbolicate" "0.72.3" - "metro-transform-plugins" "0.72.3" - "metro-transform-worker" "0.72.3" - "mime-types" "^2.1.27" - "node-fetch" "^2.2.0" - "nullthrows" "^1.1.1" - "rimraf" "^2.5.4" - "serialize-error" "^2.1.0" - "source-map" "^0.5.6" - "strip-ansi" "^6.0.0" - "temp" "0.8.3" - "throat" "^5.0.0" - "ws" "^7.5.1" - "yargs" "^15.3.1" - -"microevent.ts@~0.1.1": - "integrity" "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - "resolved" "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" - "version" "0.1.1" - -"micromatch@^3.1.10", "micromatch@^3.1.4": - "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - "version" "3.1.10" - dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "braces" "^2.3.1" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "extglob" "^2.0.4" - "fragment-cache" "^0.2.1" - "kind-of" "^6.0.2" - "nanomatch" "^1.2.9" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.2" - -"micromatch@^4.0.2": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"micromatch@^4.0.4": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"miller-rabin@^4.0.0": - "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" - "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "bn.js" "^4.0.0" - "brorand" "^1.0.1" - -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@^2.1.12", "mime-types@^2.1.27", "mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mime@^2.4.1", "mime@^2.4.4": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" - -"mime@1.4.1": - "integrity" "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz" - "version" "1.4.1" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^1.0.0": - "integrity" "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" - "version" "1.2.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"mimic-response@^1.0.0", "mimic-response@^1.0.1": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"mimic-response@^3.1.0": - "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" - "version" "3.1.0" - -"mini-css-extract-plugin@^0.5.0": - "integrity" "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz" - "version" "0.5.0" - dependencies: - "loader-utils" "^1.1.0" - "schema-utils" "^1.0.0" - "webpack-sources" "^1.1.0" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.2", "minimatch@^3.0.4", "minimatch@^3.1.1", "minimatch@2 || 3": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "brace-expansion" "^1.1.7" - -"minimist@^1.2.0", "minimist@^1.2.6": - "integrity" "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - "version" "1.2.7" - -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minipass" "^3.0.0" - -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "minipass" "^3.0.0" - -"minipass-pipeline@^1.2.2": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" - dependencies: - "minipass" "^3.0.0" - -"minipass@^3.0.0", "minipass@^3.1.1": - "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - "version" "3.3.6" - dependencies: - "yallist" "^4.0.0" - -"minipass@^4.0.0": - "integrity" "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "yallist" "^4.0.0" - -"minipass@3.1.6": - "integrity" "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz" - "version" "3.1.6" - dependencies: - "yallist" "^4.0.0" - -"minizlib@^2.1.1": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "minipass" "^3.0.0" - "yallist" "^4.0.0" - -"mississippi@^3.0.0": - "integrity" "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==" - "resolved" "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "concat-stream" "^1.5.0" - "duplexify" "^3.4.2" - "end-of-stream" "^1.1.0" - "flush-write-stream" "^1.0.0" - "from2" "^2.1.0" - "parallel-transform" "^1.1.0" - "pump" "^3.0.0" - "pumpify" "^1.3.3" - "stream-each" "^1.1.0" - "through2" "^2.0.0" - -"mixin-deep@^1.2.0": - "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" - "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "for-in" "^1.0.2" - "is-extendable" "^1.0.1" - -"mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.6", "mkdirp@~0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"mkdirp@^1.0.4": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"move-concurrently@^1.0.1": - "integrity" "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==" - "resolved" "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "aproba" "^1.1.1" - "copy-concurrently" "^1.0.0" - "fs-write-stream-atomic" "^1.0.8" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.3" - -"ms@^2.1.1": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"multicast-dns-service-types@^1.1.0": - "integrity" "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" - "resolved" "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" - "version" "1.1.0" - -"multicast-dns@^6.0.1": - "integrity" "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" - "version" "6.2.3" - dependencies: - "dns-packet" "^1.3.1" - "thunky" "^1.0.2" - -"mv@~2", "mv@2.1.1": - "integrity" "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==" - "resolved" "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "mkdirp" "~0.5.1" - "ncp" "~2.0.0" - "rimraf" "~2.4.0" - -"mz@^2.7.0": - "integrity" "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==" - "resolved" "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "any-promise" "^1.0.0" - "object-assign" "^4.0.1" - "thenify-all" "^1.0.0" - -"nan@^2.12.1": - "integrity" "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" - "version" "2.17.0" - -"nanomatch@^1.2.9": - "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" - "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "fragment-cache" "^0.2.1" - "is-windows" "^1.0.2" - "kind-of" "^6.0.2" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"ncp@~2.0.0": - "integrity" "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==" - "resolved" "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" - "version" "2.0.0" - -"needle@^2.5.2": - "integrity" "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==" - "resolved" "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz" - "version" "2.9.1" - dependencies: - "debug" "^3.2.6" - "iconv-lite" "^0.4.4" - "sax" "^1.2.4" - -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"neo-async@^2.5.0", "neo-async@^2.6.1": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"nested-error-stacks@~2.0.1": - "integrity" "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==" - "resolved" "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz" - "version" "2.0.1" - -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" - -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" - -"nocache@^3.0.1": - "integrity" "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==" - "resolved" "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" - "version" "3.0.4" - -"node-dir@^0.1.17": - "integrity" "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==" - "resolved" "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" - "version" "0.1.17" - dependencies: - "minimatch" "^3.0.2" - -"node-fetch@^2.2.0", "node-fetch@^2.6.0", "node-fetch@^2.6.1", "node-fetch@^2.6.7": - "integrity" "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz" - "version" "2.6.8" - dependencies: - "whatwg-url" "^5.0.0" - -"node-fetch@2.6.7": - "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - "version" "2.6.7" - dependencies: - "whatwg-url" "^5.0.0" - -"node-forge@^0.10.0", "node-forge@0.10.0": - "integrity" "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" - "version" "0.10.0" - -"node-forge@^1.2.1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" - -"node-forge@^1.3.1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" - -"node-html-parser@^1.2.12": - "integrity" "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==" - "resolved" "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz" - "version" "1.4.9" - dependencies: - "he" "1.2.0" - -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" - -"node-libs-browser@^2.2.1": - "integrity" "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==" - "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "assert" "^1.1.1" - "browserify-zlib" "^0.2.0" - "buffer" "^4.3.0" - "console-browserify" "^1.1.0" - "constants-browserify" "^1.0.0" - "crypto-browserify" "^3.11.0" - "domain-browser" "^1.1.1" - "events" "^3.0.0" - "https-browserify" "^1.0.0" - "os-browserify" "^0.3.0" - "path-browserify" "0.0.1" - "process" "^0.11.10" - "punycode" "^1.2.4" - "querystring-es3" "^0.2.0" - "readable-stream" "^2.3.3" - "stream-browserify" "^2.0.1" - "stream-http" "^2.7.2" - "string_decoder" "^1.0.0" - "timers-browserify" "^2.0.4" - "tty-browserify" "0.0.0" - "url" "^0.11.0" - "util" "^0.11.0" - "vm-browserify" "^1.0.1" - -"node-releases@^1.1.61": - "integrity" "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" - "version" "1.1.77" - -"node-releases@^2.0.6": - "integrity" "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz" - "version" "2.0.8" - -"node-stream-zip@^1.9.1": - "integrity" "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==" - "resolved" "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" - "version" "1.15.0" - -"normalize-css-color@^1.0.2": - "integrity" "sha512-jPJ/V7Cp1UytdidsPqviKEElFQJs22hUUgK5BOPHTwOonNCk7/2qOxhhqzEajmFrWJowADFfOFh1V+aWkRfy+w==" - "resolved" "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz" - "version" "1.0.2" - -"normalize-path@^2.1.1": - "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "remove-trailing-separator" "^1.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-url@^3.0.0": - "integrity" "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" - "version" "3.3.0" - -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - -"normalize-url@^6.0.1": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"npm-package-arg@^7.0.0": - "integrity" "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==" - "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "hosted-git-info" "^3.0.2" - "osenv" "^0.1.5" - "semver" "^5.6.0" - "validate-npm-package-name" "^3.0.0" - -"npm-package-arg@6.1.0": - "integrity" "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==" - "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "hosted-git-info" "^2.6.0" - "osenv" "^0.1.5" - "semver" "^5.5.0" - "validate-npm-package-name" "^3.0.0" - -"npm-run-path@^2.0.0": - "integrity" "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "path-key" "^2.0.0" - -"nth-check@^1.0.2": - "integrity" "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "boolbase" "~1.0.0" - -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "boolbase" "^1.0.0" - -"nullthrows@^1.1.1", "nullthrows@1.1.1": - "integrity" "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" - "resolved" "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" - "version" "1.1.1" - -"ob1@0.72.3": - "integrity" "sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==" - "resolved" "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz" - "version" "0.72.3" - -"object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-copy@^0.1.0": - "integrity" "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==" - "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "copy-descriptor" "^0.1.0" - "define-property" "^0.2.5" - "kind-of" "^3.0.3" - -"object-inspect@^1.12.2", "object-inspect@^1.9.0": - "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" - "version" "1.12.3" - -"object-is@^1.0.1": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object-visit@^1.0.0": - "integrity" "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==" - "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "isobject" "^3.0.0" - -"object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" - -"object.entries@^1.1.0": - "integrity" "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"object.getownpropertydescriptors@^2.0.3", "object.getownpropertydescriptors@^2.1.0": - "integrity" "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" - "version" "2.1.5" - dependencies: - "array.prototype.reduce" "^1.0.5" - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"object.pick@^1.3.0": - "integrity" "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==" - "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "isobject" "^3.0.1" - -"object.values@^1.1.0": - "integrity" "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"on-finished@~2.3.0": - "integrity" "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "ee-first" "1.1.1" - -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "ee-first" "1.1.1" - -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^2.0.0": - "integrity" "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "mimic-fn" "^1.0.0" - -"onetime@^5.1.0": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"open@^6.2.0": - "integrity" "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==" - "resolved" "https://registry.npmjs.org/open/-/open-6.4.0.tgz" - "version" "6.4.0" - dependencies: - "is-wsl" "^1.1.0" - -"open@^7.0.2": - "integrity" "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==" - "resolved" "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - "version" "7.4.2" - dependencies: - "is-docker" "^2.0.0" - "is-wsl" "^2.1.1" - -"open@^8.0.4", "open@^8.3.0": - "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - "version" "8.4.0" - dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" - -"opn@^5.5.0": - "integrity" "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==" - "resolved" "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "is-wsl" "^1.1.0" - -"optimize-css-assets-webpack-plugin@^5.0.3": - "integrity" "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==" - "resolved" "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz" - "version" "5.0.8" - dependencies: - "cssnano" "^4.1.10" - "last-call-webpack-plugin" "^3.0.0" - -"ora@^5.4.1": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bl" "^4.1.0" - "chalk" "^4.1.0" - "cli-cursor" "^3.1.0" - "cli-spinners" "^2.5.0" - "is-interactive" "^1.0.0" - "is-unicode-supported" "^0.1.0" - "log-symbols" "^4.1.0" - "strip-ansi" "^6.0.0" - "wcwidth" "^1.0.1" - -"ora@3.4.0": - "integrity" "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==" - "resolved" "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz" - "version" "3.4.0" - dependencies: - "chalk" "^2.4.2" - "cli-cursor" "^2.1.0" - "cli-spinners" "^2.0.0" - "log-symbols" "^2.2.0" - "strip-ansi" "^5.2.0" - "wcwidth" "^1.0.1" - -"os-browserify@^0.3.0": - "integrity" "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - "version" "0.3.0" - -"os-homedir@^1.0.0": - "integrity" "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - "version" "1.0.2" - -"os-tmpdir@^1.0.0", "os-tmpdir@~1.0.2": - "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" - -"osenv@^0.1.5": - "integrity" "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==" - "resolved" "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "os-homedir" "^1.0.0" - "os-tmpdir" "^1.0.0" - -"p-any@^2.1.0": - "integrity" "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==" - "resolved" "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "p-cancelable" "^2.0.0" - "p-some" "^4.0.0" - "type-fest" "^0.3.0" - -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" - -"p-cancelable@^2.0.0": - "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" - "version" "2.1.1" - -"p-finally@^1.0.0": - "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^2.0.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-limit" "^2.0.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" - -"p-map@^2.0.0": - "integrity" "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" - "version" "2.1.0" + absolute-path "^0.0.0" + accepts "^1.3.7" + async "^3.2.2" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + fs-extra "^1.0.0" + graceful-fs "^4.2.4" + hermes-parser "0.8.0" + image-size "^0.6.0" + invariant "^2.2.4" + jest-worker "^27.2.0" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.72.3" + metro-cache "0.72.3" + metro-cache-key "0.72.3" + metro-config "0.72.3" + metro-core "0.72.3" + metro-file-map "0.72.3" + metro-hermes-compiler "0.72.3" + metro-inspector-proxy "0.72.3" + metro-minify-uglify "0.72.3" + metro-react-native-babel-preset "0.72.3" + metro-resolver "0.72.3" + metro-runtime "0.72.3" + metro-source-map "0.72.3" + metro-symbolicate "0.72.3" + metro-transform-plugins "0.72.3" + metro-transform-worker "0.72.3" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^2.5.4" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + temp "0.8.3" + throat "^5.0.0" + ws "^7.5.1" + yargs "^15.3.1" + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.1, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mini-css-extract-plugin@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz" + integrity sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz" + integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" + integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mv@2.1.1, mv@~2: + version "2.1.1" + resolved "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.12.1: + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + +needle@^2.5.2: + version "2.9.1" + resolved "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nested-error-stacks@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz" + integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.8" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz" + integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== + dependencies: + whatwg-url "^5.0.0" + +node-forge@0.10.0, node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-forge@^1.2.1, node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-html-parser@^1.2.12: + version "1.4.9" + resolved "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz" + integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== + dependencies: + he "1.2.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.61: + version "1.1.77" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== + +node-releases@^2.0.6: + version "2.0.8" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz" + integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +normalize-css-color@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz" + integrity sha512-jPJ/V7Cp1UytdidsPqviKEElFQJs22hUUgK5BOPHTwOonNCk7/2qOxhhqzEajmFrWJowADFfOFh1V+aWkRfy+w== + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-package-arg@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz" + integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== + dependencies: + hosted-git-info "^2.6.0" + osenv "^0.1.5" + semver "^5.5.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz" + integrity sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g== + dependencies: + hosted-git-info "^3.0.2" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@1.1.1, nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.72.3: + version "0.72.3" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz" + integrity sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.0: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.5" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== + dependencies: + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: - "aggregate-error" "^3.0.0" - -"p-map@3.0.0": - "integrity" "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-retry@^3.0.1": - "integrity" "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz" - "version" "3.0.1" + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^8.0.4, open@^8.3.0: + version "8.4.0" + resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.8" + resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz" + integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +ora@3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-any@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz" + integrity sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg== + dependencies: + p-cancelable "^2.0.0" + p-some "^4.0.0" + type-fest "^0.3.0" + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: - "retry" "^0.12.0" + aggregate-error "^3.0.0" -"p-retry@4.1.0": - "integrity" "sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz" - "version" "4.1.0" +p-retry@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz" + integrity sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA== dependencies: "@types/retry" "^0.12.0" - "retry" "^0.12.0" - -"p-some@^4.0.0": - "integrity" "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==" - "resolved" "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "aggregate-error" "^3.0.0" - "p-cancelable" "^2.0.0" - -"p-timeout@^3.2.0": - "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "p-finally" "^1.0.0" - -"p-timeout@3.1.0": - "integrity" "sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "p-finally" "^1.0.0" - -"p-try@^2.0.0", "p-try@^2.1.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"package-json@^6.3.0": - "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" - "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - "version" "6.5.0" - dependencies: - "got" "^9.6.0" - "registry-auth-token" "^4.0.0" - "registry-url" "^5.0.0" - "semver" "^6.2.0" - -"package-json@6.4.0": - "integrity" "sha512-bd1T8OBG7hcvMd9c/udgv6u5v9wISP3Oyl9Cm7Weop8EFwrtcQDnS2sb6zhwqus2WslSr5wSTIPiTTpxxmPm7Q==" - "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.4.0.tgz" - "version" "6.4.0" - dependencies: - "got" "^9.6.0" - "registry-auth-token" "^3.4.0" - "registry-url" "^5.0.0" - "semver" "^6.1.1" - -"pako@~1.0.5": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" - -"parallel-transform@^1.1.0": - "integrity" "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==" - "resolved" "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "cyclist" "^1.0.1" - "inherits" "^2.0.3" - "readable-stream" "^2.1.5" - -"param-case@^3.0.3": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" - -"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": - "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" - "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "asn1.js" "^5.2.0" - "browserify-aes" "^1.0.0" - "evp_bytestokey" "^1.0.0" - "pbkdf2" "^3.0.3" - "safe-buffer" "^5.1.1" - -"parse-json@^4.0.0": - "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" - -"parse-png@^2.1.0": - "integrity" "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==" - "resolved" "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pngjs" "^3.3.0" - -"parse-srcset@^1.0.2": - "integrity" "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" - "resolved" "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz" - "version" "1.0.2" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"pascalcase@^0.1.1": - "integrity" "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" - "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - "version" "0.1.1" - -"password-prompt@^1.0.4": - "integrity" "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==" - "resolved" "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "ansi-escapes" "^3.1.0" - "cross-spawn" "^6.0.5" - -"path-browserify@^1.0.0": - "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - "version" "1.0.1" - -"path-browserify@0.0.1": - "integrity" "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" - "version" "0.0.1" - -"path-dirname@^1.0.0": - "integrity" "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - "resolved" "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - "version" "1.0.2" - -"path-exists@^3.0.0": - "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-is-inside@^1.0.2": - "integrity" "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - "version" "1.0.2" - -"path-key@^2.0.0", "path-key@^2.0.1": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.5", "path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pbkdf2@^3.0.3": - "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" - "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - "ripemd160" "^2.0.1" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"picocolors@^0.2.1": - "integrity" "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - "version" "0.2.1" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pify@^2.0.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pinkie-promise@^2.0.0": - "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "pinkie" "^2.0.0" - -"pinkie@^2.0.0": - "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" - -"pirates@^4.0.1", "pirates@^4.0.5": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" - -"pkg-dir@^3.0.0": - "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "find-up" "^3.0.0" - -"pkg-dir@^4.1.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"pkg-up@^3.1.0", "pkg-up@3.1.0": - "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "find-up" "^3.0.0" - -"plist@^3.0.5": - "integrity" "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==" - "resolved" "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz" - "version" "3.0.6" - dependencies: - "base64-js" "^1.5.1" - "xmlbuilder" "^15.1.1" - -"pngjs@^3.3.0", "pngjs@3.4.0": - "integrity" "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - "resolved" "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" - "version" "3.4.0" - -"pnp-webpack-plugin@^1.5.0": - "integrity" "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==" - "resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "ts-pnp" "^1.1.6" - -"portfinder@^1.0.26": - "integrity" "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==" - "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" - "version" "1.0.32" - dependencies: - "async" "^2.6.4" - "debug" "^3.2.7" - "mkdirp" "^0.5.6" - -"posix-character-classes@^0.1.0": - "integrity" "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" - "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - "version" "0.1.1" - -"postcss-calc@^7.0.1": - "integrity" "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" - "version" "7.0.5" - dependencies: - "postcss" "^7.0.27" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.0.2" - -"postcss-colormin@^4.0.3": - "integrity" "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "color" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-convert-values@^4.0.1": - "integrity" "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-discard-comments@^4.0.2": - "integrity" "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - -"postcss-discard-duplicates@^4.0.2": - "integrity" "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - -"postcss-discard-empty@^4.0.1": - "integrity" "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"postcss-discard-overridden@^4.0.1": - "integrity" "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"postcss-merge-longhand@^4.0.11": - "integrity" "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" - "version" "4.0.11" - dependencies: - "css-color-names" "0.0.4" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "stylehacks" "^4.0.0" - -"postcss-merge-rules@^4.0.3": - "integrity" "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "cssnano-util-same-parent" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - "vendors" "^1.0.0" - -"postcss-minify-font-values@^4.0.2": - "integrity" "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-minify-gradients@^4.0.2": - "integrity" "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "is-color-stop" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-minify-params@^4.0.2": - "integrity" "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "alphanum-sort" "^1.0.0" - "browserslist" "^4.0.0" - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "uniqs" "^2.0.0" - -"postcss-minify-selectors@^4.0.2": - "integrity" "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "alphanum-sort" "^1.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - -"postcss-modules-extract-imports@^2.0.0": - "integrity" "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "postcss" "^7.0.5" - -"postcss-modules-local-by-default@^3.0.2": - "integrity" "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "icss-utils" "^4.1.1" - "postcss" "^7.0.32" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" - -"postcss-modules-scope@^2.2.0": - "integrity" "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "postcss" "^7.0.6" - "postcss-selector-parser" "^6.0.0" - -"postcss-modules-values@^3.0.0": - "integrity" "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "icss-utils" "^4.0.0" - "postcss" "^7.0.6" - -"postcss-normalize-charset@^4.0.1": - "integrity" "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"postcss-normalize-display-values@^4.0.2": - "integrity" "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-positions@^4.0.2": - "integrity" "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-repeat-style@^4.0.2": - "integrity" "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-string@^4.0.2": - "integrity" "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-timing-functions@^4.0.2": - "integrity" "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-unicode@^4.0.1": - "integrity" "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-url@^4.0.1": - "integrity" "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-absolute-url" "^2.0.0" - "normalize-url" "^3.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-whitespace@^4.0.2": - "integrity" "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-ordered-values@^4.1.2": - "integrity" "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-reduce-initial@^4.0.3": - "integrity" "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - -"postcss-reduce-transforms@^4.0.2": - "integrity" "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-match" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-safe-parser@^4.0.2": - "integrity" "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==" - "resolved" "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.26" - -"postcss-selector-parser@^3.0.0": - "integrity" "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "dot-prop" "^5.2.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" - -"postcss-selector-parser@^6.0.0": - "integrity" "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" - "version" "6.0.11" - dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" - -"postcss-selector-parser@^6.0.2": - "integrity" "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" - "version" "6.0.11" - dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" - -"postcss-svgo@^4.0.3": - "integrity" "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "svgo" "^1.0.0" - -"postcss-unique-selectors@^4.0.1": - "integrity" "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "alphanum-sort" "^1.0.0" - "postcss" "^7.0.0" - "uniqs" "^2.0.0" - -"postcss-value-parser@^3.0.0": - "integrity" "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - "version" "3.3.1" - -"postcss-value-parser@^4.0.2": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss-value-parser@^4.1.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss-value-parser@^4.2.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss@^7.0.0", "postcss@^7.0.1", "postcss@^7.0.14", "postcss@^7.0.26", "postcss@^7.0.27", "postcss@^7.0.32", "postcss@^7.0.5", "postcss@^7.0.6": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"prepend-http@^2.0.0": - "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - -"prepend-http@^3.0.1": - "integrity" "sha512-BLxfZh+m6UiAiCPZFJ4+vYoL7NrRs5XgCTRrjseATAggXhdZKKxn+JUNmuVYWY23bDHgaEHodxw8mnmtVEDtHw==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-3.0.1.tgz" - "version" "3.0.1" - -"pretty-bytes@^5.3.0", "pretty-bytes@5.6.0": - "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" - "version" "5.6.0" - -"pretty-error@^2.1.1": - "integrity" "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "lodash" "^4.17.20" - "renderkid" "^2.0.4" - -"pretty-format@^26.5.2", "pretty-format@^26.6.2": - "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - "version" "26.6.2" + retry "^0.12.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-some@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz" + integrity sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g== + dependencies: + aggregate-error "^3.0.0" + p-cancelable "^2.0.0" + +p-timeout@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz" + integrity sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw== + dependencies: + p-finally "^1.0.0" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0, p-try@^2.1.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@6.4.0: + version "6.4.0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.4.0.tgz" + integrity sha512-bd1T8OBG7hcvMd9c/udgv6u5v9wISP3Oyl9Cm7Weop8EFwrtcQDnS2sb6zhwqus2WslSr5wSTIPiTTpxxmPm7Q== + dependencies: + got "^9.6.0" + registry-auth-token "^3.4.0" + registry-url "^5.0.0" + semver "^6.1.1" + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-png@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz" + integrity sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ== + dependencies: + pngjs "^3.3.0" + +parse-srcset@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz" + integrity sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +password-prompt@^1.0.4: + version "1.1.2" + resolved "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz" + integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + dependencies: + ansi-escapes "^3.1.0" + cross-spawn "^6.0.5" + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.5, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pirates@^4.0.1, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +plist@^3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz" + integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== + dependencies: + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +pngjs@3.4.0, pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pnp-webpack-plugin@^1.5.0: + version "1.7.0" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz" + integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.32" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + dependencies: + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-safe-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.11" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +prepend-http@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-3.0.1.tgz" + integrity sha512-BLxfZh+m6UiAiCPZFJ4+vYoL7NrRs5XgCTRrjseATAggXhdZKKxn+JUNmuVYWY23bDHgaEHodxw8mnmtVEDtHw== + +pretty-bytes@5.6.0, pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: "@jest/types" "^26.6.2" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^17.0.1" - -"probe-image-size@^7.1.0": - "integrity" "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==" - "resolved" "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "lodash.merge" "^4.6.2" - "needle" "^2.5.2" - "stream-parser" "~0.3.1" - -"probe-image-size@~6.0.0": - "integrity" "sha512-99PZ5+RU4gqiTfK5ZDMDkZtn6eL4WlKfFyVJV7lFQvH3iGmQ85DqMTOdxorERO26LHkevR2qsxnHp0x/2UDJPA==" - "resolved" "https://registry.npmjs.org/probe-image-size/-/probe-image-size-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "deepmerge" "^4.0.0" - "needle" "^2.5.2" - "stream-parser" "~0.3.1" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"process@^0.11.10": - "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" - -"progress@2.0.3": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" - -"promise-inflight@^1.0.1": - "integrity" "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - "version" "1.0.1" - -"promise@^7.1.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "asap" "~2.0.3" - -"promise@^8.0.3": - "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - "version" "8.3.0" - dependencies: - "asap" "~2.0.6" - -"prompts@^2.3.2", "prompts@^2.4.0": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"prompts@2.4.0": - "integrity" "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" - "version" "2.4.0" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"proxy-addr@~2.0.4", "proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"prr@~1.0.1": - "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - "version" "1.0.1" - -"public-encrypt@^4.0.0": - "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" - "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "bn.js" "^4.1.0" - "browserify-rsa" "^4.0.0" - "create-hash" "^1.1.0" - "parse-asn1" "^5.0.0" - "randombytes" "^2.0.1" - "safe-buffer" "^5.1.2" - -"pump@^2.0.0": - "integrity" "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==" - "resolved" "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"pumpify@^1.3.3": - "integrity" "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==" - "resolved" "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "duplexify" "^3.6.0" - "inherits" "^2.0.3" - "pump" "^2.0.0" - -"punycode@^1.2.4": - "integrity" "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - "version" "1.4.1" - -"punycode@^2.1.0": - "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" - "version" "2.3.0" - -"punycode@1.3.2": - "integrity" "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"q@^1.1.2": - "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - "version" "1.5.1" - -"qrcode-terminal@0.11.0": - "integrity" "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==" - "resolved" "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz" - "version" "0.11.0" - -"qs@6.11.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" - dependencies: - "side-channel" "^1.0.4" - -"qs@6.5.2": - "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - "version" "6.5.2" - -"qs@6.7.0": - "integrity" "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" - "version" "6.7.0" - -"querystring-es3@^0.2.0": - "integrity" "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - "version" "0.2.1" - -"querystring@0.2.0": - "integrity" "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" - -"querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" - -"queue-microtask@^1.2.2": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"queue@6.0.2": - "integrity" "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==" - "resolved" "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "inherits" "~2.0.3" - -"quick-lru@^5.1.1": - "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" - "version" "5.1.1" - -"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"randomfill@^1.0.3": - "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" - "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "randombytes" "^2.0.5" - "safe-buffer" "^5.1.0" - -"range-parser@^1.2.1", "range-parser@~1.2.0", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.3.3": - "integrity" "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "bytes" "3.0.0" - "http-errors" "1.6.3" - "iconv-lite" "0.4.23" - "unpipe" "1.0.0" - -"raw-body@2.4.0": - "integrity" "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" - "version" "2.4.0" - dependencies: - "bytes" "3.1.0" - "http-errors" "1.7.2" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"rc@^1.0.1", "rc@^1.1.6", "rc@^1.2.8", "rc@~1.2.7", "rc@1.2.8": - "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" - "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - "version" "1.2.8" - dependencies: - "deep-extend" "^0.6.0" - "ini" "~1.3.0" - "minimist" "^1.2.0" - "strip-json-comments" "~2.0.1" - -"react-dev-utils@~11.0.1": - "integrity" "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==" - "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" - "version" "11.0.4" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +probe-image-size@^7.1.0: + version "7.2.3" + resolved "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz" + integrity sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w== + dependencies: + lodash.merge "^4.6.2" + needle "^2.5.2" + stream-parser "~0.3.1" + +probe-image-size@~6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/probe-image-size/-/probe-image-size-6.0.0.tgz" + integrity sha512-99PZ5+RU4gqiTfK5ZDMDkZtn6eL4WlKfFyVJV7lFQvH3iGmQ85DqMTOdxorERO26LHkevR2qsxnHp0x/2UDJPA== + dependencies: + deepmerge "^4.0.0" + needle "^2.5.2" + stream-parser "~0.3.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +promise@^8.0.3: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prompts@^2.3.2, prompts@^2.4.0: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.4, proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qrcode-terminal@0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz" + integrity sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.8, rc@~1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dev-utils@~11.0.1: + version "11.0.4" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== dependencies: "@babel/code-frame" "7.10.4" - "address" "1.1.2" - "browserslist" "4.14.2" - "chalk" "2.4.2" - "cross-spawn" "7.0.3" - "detect-port-alt" "1.1.6" - "escape-string-regexp" "2.0.0" - "filesize" "6.1.0" - "find-up" "4.1.0" - "fork-ts-checker-webpack-plugin" "4.1.6" - "global-modules" "2.0.0" - "globby" "11.0.1" - "gzip-size" "5.1.1" - "immer" "8.0.1" - "is-root" "2.1.0" - "loader-utils" "2.0.0" - "open" "^7.0.2" - "pkg-up" "3.1.0" - "prompts" "2.4.0" - "react-error-overlay" "^6.0.9" - "recursive-readdir" "2.2.2" - "shell-quote" "1.7.2" - "strip-ansi" "6.0.0" - "text-table" "0.2.0" - -"react-devtools-core@4.24.0": - "integrity" "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==" - "resolved" "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz" - "version" "4.24.0" - dependencies: - "shell-quote" "^1.6.1" - "ws" "^7" - -"react-dom@^17.0.2 || ^18.0.0", "react-dom@18.1.0": - "integrity" "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz" - "version" "18.1.0" - dependencies: - "loose-envify" "^1.1.0" - "scheduler" "^0.22.0" - -"react-error-overlay@^6.0.9": - "integrity" "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" - "version" "6.0.11" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-devtools-core@4.24.0: + version "4.24.0" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz" + integrity sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-dom@18.1.0: + version "18.1.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz" + integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.22.0" + +react-error-overlay@^6.0.9: + version "6.0.11" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== "react-is@^16.12.0 || ^17.0.0 || ^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -"react-native-codegen@^0.70.6": - "integrity" "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==" - "resolved" "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz" - "version" "0.70.6" +react-native-codegen@^0.70.6: + version "0.70.6" + resolved "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz" + integrity sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw== dependencies: "@babel/parser" "^7.14.0" - "flow-parser" "^0.121.0" - "jscodeshift" "^0.13.1" - "nullthrows" "^1.1.1" - -"react-native-gradle-plugin@^0.70.3": - "integrity" "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==" - "resolved" "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz" - "version" "0.70.3" - -"react-native-web@~0.18.9": - "integrity" "sha512-aJpc4wrcPpWyybnSbTTh0kBfe6xJ+T55Fi9AVmPlkeY3iuyk+5OxWwhzuzj3nZwwCBbvuFeuffj7T9sgwwX8nQ==" - "resolved" "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz" - "version" "0.18.11" + flow-parser "^0.121.0" + jscodeshift "^0.13.1" + nullthrows "^1.1.1" + +react-native-gesture-handler@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.9.0.tgz#2f63812e523c646f25b9ad660fc6f75948e51241" + integrity sha512-a0BcH3Qb1tgVqUutc6d3VuWQkI1AM3+fJx8dkxzZs9t06qA27QgURYFoklpabuWpsUTzuKRpxleykp25E8m7tg== + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + lodash "^4.17.21" + prop-types "^15.7.2" + +react-native-gradle-plugin@^0.70.3: + version "0.70.3" + resolved "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz" + integrity sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A== + +react-native-safe-area-context@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz#9208313236e8f49e1920ac1e2a2c975f03aed284" + integrity sha512-0WORnk9SkREGUg2V7jHZbuN5x4vcxj/1B0QOcXJjdYWrzZHgLcUzYWWIUecUPJh747Mwjt/42RZDOaFn3L8kPQ== + +react-native-web@~0.18.9: + version "0.18.11" + resolved "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz" + integrity sha512-aJpc4wrcPpWyybnSbTTh0kBfe6xJ+T55Fi9AVmPlkeY3iuyk+5OxWwhzuzj3nZwwCBbvuFeuffj7T9sgwwX8nQ== dependencies: "@babel/runtime" "^7.18.6" - "create-react-class" "^15.7.0" - "fbjs" "^3.0.4" - "inline-style-prefixer" "^6.0.1" - "normalize-css-color" "^1.0.2" - "postcss-value-parser" "^4.2.0" - "styleq" "^0.1.2" - -"react-native@0.70.5": - "integrity" "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==" - "resolved" "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz" - "version" "0.70.5" + create-react-class "^15.7.0" + fbjs "^3.0.4" + inline-style-prefixer "^6.0.1" + normalize-css-color "^1.0.2" + postcss-value-parser "^4.2.0" + styleq "^0.1.2" + +react-native@0.70.5: + version "0.70.5" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz" + integrity sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw== dependencies: "@jest/create-cache-key-function" "^29.0.3" "@react-native-community/cli" "9.2.1" @@ -9676,2310 +9438,2210 @@ "@react-native/assets" "1.0.0" "@react-native/normalize-color" "2.0.0" "@react-native/polyfills" "2.0.0" - "abort-controller" "^3.0.0" - "anser" "^1.4.9" - "base64-js" "^1.1.2" - "event-target-shim" "^5.0.1" - "invariant" "^2.2.4" - "jsc-android" "^250230.2.1" - "memoize-one" "^5.0.0" - "metro-react-native-babel-transformer" "0.72.3" - "metro-runtime" "0.72.3" - "metro-source-map" "0.72.3" - "mkdirp" "^0.5.1" - "nullthrows" "^1.1.1" - "pretty-format" "^26.5.2" - "promise" "^8.0.3" - "react-devtools-core" "4.24.0" - "react-native-codegen" "^0.70.6" - "react-native-gradle-plugin" "^0.70.3" - "react-refresh" "^0.4.0" - "react-shallow-renderer" "^16.15.0" - "regenerator-runtime" "^0.13.2" - "scheduler" "^0.22.0" - "stacktrace-parser" "^0.1.3" - "use-sync-external-store" "^1.0.0" - "whatwg-fetch" "^3.0.0" - "ws" "^6.1.4" - -"react-refresh@^0.4.0": - "integrity" "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz" - "version" "0.4.3" - -"react-shallow-renderer@^16.15.0": - "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" - "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - "version" "16.15.0" - dependencies: - "object-assign" "^4.1.1" - "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" - -"react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0", "react@^18.1.0", "react@18.1.0": - "integrity" "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==" - "resolved" "https://registry.npmjs.org/react/-/react-18.1.0.tgz" - "version" "18.1.0" - dependencies: - "loose-envify" "^1.1.0" - -"read-chunk@^3.2.0": - "integrity" "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==" - "resolved" "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "pify" "^4.0.1" - "with-open-file" "^0.1.6" - -"read-last-lines@1.6.0": - "integrity" "sha512-PLKEiyUBMqRMvPu+vfL1XQmkRE5g/TurxrsoNEURqfHbP6eOJaE/2K6+H2IXSfc6/flG5LIj+MtxahclzVvsAA==" - "resolved" "https://registry.npmjs.org/read-last-lines/-/read-last-lines-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "mz" "^2.7.0" - -"readable-stream@^2.0.0", "readable-stream@^2.0.1", "readable-stream@^2.0.2", "readable-stream@^2.1.5", "readable-stream@^2.2.2", "readable-stream@^2.3.3", "readable-stream@^2.3.6", "readable-stream@~2.3.6", "readable-stream@1 || 2": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^3.0.6": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.4.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readdirp@^2.2.1": - "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "graceful-fs" "^4.1.11" - "micromatch" "^3.1.10" - "readable-stream" "^2.0.2" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"readline@^1.3.0": - "integrity" "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" - "resolved" "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" - "version" "1.3.0" - -"recast@^0.20.4": - "integrity" "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==" - "resolved" "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz" - "version" "0.20.5" - dependencies: - "ast-types" "0.14.2" - "esprima" "~4.0.0" - "source-map" "~0.6.1" - "tslib" "^2.0.1" - -"recursive-readdir@2.2.2": - "integrity" "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==" - "resolved" "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "minimatch" "3.0.4" - -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.13.11", "regenerator-runtime@^0.13.2", "regenerator-runtime@^0.13.4": - "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - "version" "0.13.11" - -"regenerator-transform@^0.15.1": - "integrity" "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" - "version" "0.15.1" + abort-controller "^3.0.0" + anser "^1.4.9" + base64-js "^1.1.2" + event-target-shim "^5.0.1" + invariant "^2.2.4" + jsc-android "^250230.2.1" + memoize-one "^5.0.0" + metro-react-native-babel-transformer "0.72.3" + metro-runtime "0.72.3" + metro-source-map "0.72.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.0.3" + react-devtools-core "4.24.0" + react-native-codegen "^0.70.6" + react-native-gradle-plugin "^0.70.3" + react-refresh "^0.4.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "^0.22.0" + stacktrace-parser "^0.1.3" + use-sync-external-store "^1.0.0" + whatwg-fetch "^3.0.0" + ws "^6.1.4" + +react-refresh@^0.4.0: + version "0.4.3" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz" + integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== + +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +react@18.1.0: + version "18.1.0" + resolved "https://registry.npmjs.org/react/-/react-18.1.0.tgz" + integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== + dependencies: + loose-envify "^1.1.0" + +read-chunk@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz" + integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== + dependencies: + pify "^4.0.1" + with-open-file "^0.1.6" + +read-last-lines@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/read-last-lines/-/read-last-lines-1.6.0.tgz" + integrity sha512-PLKEiyUBMqRMvPu+vfL1XQmkRE5g/TurxrsoNEURqfHbP6eOJaE/2K6+H2IXSfc6/flG5LIj+MtxahclzVvsAA== + dependencies: + mz "^2.7.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== + dependencies: + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" -"regex-not@^1.0.0", "regex-not@^1.0.2": - "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" - "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "extend-shallow" "^3.0.2" - "safe-regex" "^1.1.0" - -"regexp.prototype.flags@^1.2.0", "regexp.prototype.flags@^1.4.3": - "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "functions-have-names" "^1.2.2" - -"regexpu-core@^5.2.1": - "integrity" "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" - "version" "5.2.2" - dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsgen" "^0.7.1" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.1.0" - -"registry-auth-token@^3.4.0": - "integrity" "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz" - "version" "3.4.0" - dependencies: - "rc" "^1.1.6" - "safe-buffer" "^5.0.1" - -"registry-auth-token@^4.0.0": - "integrity" "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "rc" "1.2.8" - -"registry-auth-token@3.3.2": - "integrity" "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "rc" "^1.1.6" - "safe-buffer" "^5.0.1" - -"registry-url@^5.0.0": - "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" - "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "rc" "^1.2.8" - -"registry-url@3.1.0": - "integrity" "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==" - "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "rc" "^1.0.1" - -"regjsgen@^0.7.1": - "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - "version" "0.7.1" - -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "jsesc" "~0.5.0" - -"relateurl@^0.2.7": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" - -"remove-trailing-separator@^1.0.1": - "integrity" "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - "version" "1.1.0" - -"remove-trailing-slash@^0.1.0": - "integrity" "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==" - "resolved" "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz" - "version" "0.1.1" - -"renderkid@^2.0.4": - "integrity" "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^3.0.1" - -"repeat-element@^1.1.2": - "integrity" "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" - "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" - "version" "1.1.4" - -"repeat-string@^1.6.1": - "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" - "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - "version" "1.6.1" - -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" - -"require-main-filename@^2.0.0": - "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - "version" "2.0.0" - -"requireg@^0.2.2": - "integrity" "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==" - "resolved" "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "nested-error-stacks" "~2.0.1" - "rc" "~1.2.7" - "resolve" "~1.7.1" - -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"reselect@^4.0.0": - "integrity" "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==" - "resolved" "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz" - "version" "4.1.7" - -"resolve-alpn@^1.0.0": - "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" - "version" "1.2.1" - -"resolve-cwd@^2.0.0": - "integrity" "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "resolve-from" "^3.0.0" - -"resolve-from@^3.0.0": - "integrity" "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - "version" "3.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve-url@^0.2.1": - "integrity" "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" - "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - "version" "0.2.1" - -"resolve@^1.13.1", "resolve@^1.14.2", "resolve@^1.3.2": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"resolve@~1.7.1": - "integrity" "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz" - "version" "1.7.1" - dependencies: - "path-parse" "^1.0.5" - -"responselike@^1.0.2": - "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "lowercase-keys" "^1.0.0" - -"responselike@^2.0.0": - "integrity" "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "lowercase-keys" "^2.0.0" - -"restore-cursor@^2.0.0": - "integrity" "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "onetime" "^2.0.0" - "signal-exit" "^3.0.2" - -"restore-cursor@^3.1.0": - "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - -"ret@~0.1.10": - "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - "version" "0.1.15" - -"retry@^0.12.0": - "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rgb-regex@^1.0.1": - "integrity" "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==" - "resolved" "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" - "version" "1.0.1" - -"rgba-regex@^1.0.0": - "integrity" "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" - "resolved" "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" - "version" "1.0.0" - -"rimraf@^2.5.4", "rimraf@^2.6.2", "rimraf@^2.6.3": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "glob" "^7.1.3" - -"rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"rimraf@~2.2.6": - "integrity" "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - "version" "2.2.8" - -"rimraf@~2.4.0": - "integrity" "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz" - "version" "2.4.5" - dependencies: - "glob" "^6.0.1" - -"rimraf@~2.6.2": - "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "glob" "^7.1.3" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpu-core@^5.2.1: + version "5.2.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsgen "^0.7.1" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +registry-auth-token@3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-auth-token@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz" + integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-auth-token@^4.0.0: + version "4.2.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== + dependencies: + rc "1.2.8" + +registry-url@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz" + integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA== + dependencies: + rc "^1.0.1" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +remove-trailing-slash@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz" + integrity sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA== + +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requireg@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz" + integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== + dependencies: + nested-error-stacks "~2.0.1" + rc "~1.2.7" + resolve "~1.7.1" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reselect@^4.0.0: + version "4.1.7" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz" + integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" + integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2: + version "1.22.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" + integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" + integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== + +rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg== + +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" -"ripemd160@^2.0.0", "ripemd160@^2.0.1": - "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" - "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - "version" "2.0.2" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" + hash-base "^3.0.0" + inherits "^2.0.1" -"router-ips@^1.0.0": - "integrity" "sha512-yBo6F52Un/WYioXbedBGvrKIiofbwt+4cUhdqDb9fNMJBI4D4jOy7jlxxaRVEvICPKU7xMmJDtDFR6YswX/sFQ==" - "resolved" "https://registry.npmjs.org/router-ips/-/router-ips-1.0.0.tgz" - "version" "1.0.0" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"run-queue@^1.0.0", "run-queue@^1.0.3": - "integrity" "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==" - "resolved" "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "aproba" "^1.1.1" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@^5.2.0", "safe-buffer@>=5.1.0", "safe-buffer@~5.2.0", "safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-json-stringify@~1": - "integrity" "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==" - "resolved" "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz" - "version" "1.2.0" - -"safe-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" +router-ips@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/router-ips/-/router-ips-1.0.0.tgz" + integrity sha512-yBo6F52Un/WYioXbedBGvrKIiofbwt+4cUhdqDb9fNMJBI4D4jOy7jlxxaRVEvICPKU7xMmJDtDFR6YswX/sFQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-json-stringify@~1: + version "1.2.0" + resolved "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" -"safe-regex@^1.1.0": - "integrity" "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==" - "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - "version" "1.1.0" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: - "ret" "~0.1.10" - -"safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"sax@^1.2.4", "sax@>=0.6.0", "sax@~1.2.4": - "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - "version" "1.2.4" +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -"scheduler@^0.22.0": - "integrity" "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz" - "version" "0.22.0" +scheduler@^0.22.0: + version "0.22.0" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz" + integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== dependencies: - "loose-envify" "^1.1.0" + loose-envify "^1.1.0" -"schema-utils@^1.0.0": - "integrity" "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" - "version" "1.0.0" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: - "ajv" "^6.1.0" - "ajv-errors" "^1.0.0" - "ajv-keywords" "^3.1.0" + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -"schema-utils@^2.6.5", "schema-utils@^2.6.6", "schema-utils@^2.7.0": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^3.0.0": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -"schema-utils@^3.1.1": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" +schema-utils@^3.0.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^1.10.7": - "integrity" "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz" - "version" "1.10.14" - dependencies: - "node-forge" "^0.10.0" - -"semver@^5.4.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.2.0", "semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.3.5": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@~7.3.2": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@7.3.2": - "integrity" "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz" - "version" "7.3.2" - -"send@^0.18.0", "send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" - dependencies: - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "mime" "1.6.0" - "ms" "2.1.3" - "on-finished" "2.4.1" - "range-parser" "~1.2.1" - "statuses" "2.0.1" - -"send@0.16.2": - "integrity" "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==" - "resolved" "https://registry.npmjs.org/send/-/send-0.16.2.tgz" - "version" "0.16.2" - dependencies: - "debug" "2.6.9" - "depd" "~1.1.2" - "destroy" "~1.0.4" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "~1.6.2" - "mime" "1.4.1" - "ms" "2.0.0" - "on-finished" "~2.3.0" - "range-parser" "~1.2.0" - "statuses" "~1.4.0" - -"serialize-error@^2.1.0": - "integrity" "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==" - "resolved" "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" - "version" "2.1.0" - -"serialize-error@6.0.0": - "integrity" "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==" - "resolved" "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "type-fest" "^0.12.0" - -"serialize-javascript@^4.0.0": - "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "randombytes" "^2.1.0" - -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "accepts" "~1.3.4" - "batch" "0.6.1" - "debug" "2.6.9" - "escape-html" "~1.0.3" - "http-errors" "~1.6.2" - "mime-types" "~2.1.17" - "parseurl" "~1.3.2" - -"serve-static@^1.13.1", "serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" - -"serve-static@1.13.2": - "integrity" "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz" - "version" "1.13.2" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.2" - "send" "0.16.2" - -"set-blocking@^2.0.0": - "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"set-value@^2.0.0", "set-value@^2.0.1": - "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.3" - "split-string" "^3.0.1" - -"setimmediate@^1.0.4", "setimmediate@^1.0.5": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.1.1": - "integrity" "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" - "version" "1.1.1" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha.js@^2.4.0", "sha.js@^2.4.8": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^6.0.2" - -"shebang-command@^1.2.0": - "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "shebang-regex" "^1.0.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^1.0.0": - "integrity" "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shell-quote@^1.6.1", "shell-quote@^1.7.3": - "integrity" "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" - "version" "1.7.4" - -"shell-quote@1.7.2": - "integrity" "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" - "version" "1.7.2" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.0", "signal-exit@^3.0.2": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"simple-plist@^1.1.0": - "integrity" "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==" - "resolved" "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "bplist-creator" "0.1.0" - "bplist-parser" "0.3.1" - "plist" "^3.0.5" - -"simple-swizzle@^0.2.2": - "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" - "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "is-arrayish" "^0.3.1" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slice-ansi@^2.0.0": - "integrity" "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "ansi-styles" "^3.2.0" - "astral-regex" "^1.0.0" - "is-fullwidth-code-point" "^2.0.0" - -"slugify@^1.3.4": - "integrity" "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==" - "resolved" "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz" - "version" "1.6.5" - -"snapdragon-node@^2.0.1": - "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" - "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "define-property" "^1.0.0" - "isobject" "^3.0.0" - "snapdragon-util" "^3.0.1" - -"snapdragon-util@^3.0.1": - "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" - "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^3.2.0" - -"snapdragon@^0.8.1": - "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" - "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - "version" "0.8.2" - dependencies: - "base" "^0.11.1" - "debug" "^2.2.0" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "map-cache" "^0.2.2" - "source-map" "^0.5.6" - "source-map-resolve" "^0.5.0" - "use" "^3.1.0" - -"sockjs-client@1.4.0": - "integrity" "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==" - "resolved" "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "debug" "^3.2.5" - "eventsource" "^1.0.7" - "faye-websocket" "~0.11.1" - "inherits" "^2.0.3" - "json3" "^3.3.2" - "url-parse" "^1.4.3" - -"sockjs@0.3.20": - "integrity" "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz" - "version" "0.3.20" - dependencies: - "faye-websocket" "^0.10.0" - "uuid" "^3.4.0" - "websocket-driver" "0.6.5" - -"source-list-map@^2.0.0": - "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - "version" "2.0.1" - -"source-map-resolve@^0.5.0": - "integrity" "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "atob" "^2.1.2" - "decode-uri-component" "^0.2.0" - "resolve-url" "^0.2.1" - "source-map-url" "^0.4.0" - "urix" "^0.1.0" - -"source-map-support@^0.5.16", "source-map-support@~0.5.12": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map-support@0.4.18": - "integrity" "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" - "version" "0.4.18" - dependencies: - "source-map" "^0.5.6" - -"source-map-url@^0.4.0": - "integrity" "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - "resolved" "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" - "version" "0.4.1" - -"source-map@^0.5.0": - "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" - -"source-map@^0.5.6": - "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" - -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@^0.7.3": - "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - "version" "0.7.4" - -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "debug" "^4.1.0" - "detect-node" "^2.0.4" - "hpack.js" "^2.1.6" - "obuf" "^1.1.2" - "readable-stream" "^3.0.6" - "wbuf" "^1.7.3" - -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "debug" "^4.1.0" - "handle-thing" "^2.0.0" - "http-deceiver" "^1.2.7" - "select-hose" "^2.0.0" - "spdy-transport" "^3.0.0" - -"split-string@^3.0.1", "split-string@^3.0.2": - "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" - "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "extend-shallow" "^3.0.0" - -"split@^1.0.1", "split@1.0.1": - "integrity" "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==" - "resolved" "https://registry.npmjs.org/split/-/split-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "through" "2" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"ssri@^6.0.1": - "integrity" "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "figgy-pudding" "^3.5.1" - -"ssri@^8.0.1": - "integrity" "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "minipass" "^3.1.1" - -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" - -"stackframe@^1.3.4": - "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - "version" "1.3.4" - -"stacktrace-parser@^0.1.3": - "integrity" "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==" - "resolved" "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" - "version" "0.1.10" - dependencies: - "type-fest" "^0.7.1" - -"static-extend@^0.1.1": - "integrity" "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==" - "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "define-property" "^0.2.5" - "object-copy" "^0.1.0" - -"statuses@>= 1.4.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@>= 1.5.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@~1.4.0": - "integrity" "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz" - "version" "1.4.0" - -"statuses@~1.5.0": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" - -"stream-browserify@^2.0.1": - "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "inherits" "~2.0.1" - "readable-stream" "^2.0.2" - -"stream-buffers@2.2.x": - "integrity" "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==" - "resolved" "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz" - "version" "2.2.0" - -"stream-each@^1.1.0": - "integrity" "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==" - "resolved" "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "end-of-stream" "^1.1.0" - "stream-shift" "^1.0.0" - -"stream-http@^2.7.2": - "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" - "version" "2.8.3" - dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.3.6" - "to-arraybuffer" "^1.0.0" - "xtend" "^4.0.0" - -"stream-parser@~0.3.1": - "integrity" "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==" - "resolved" "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "debug" "2" - -"stream-shift@^1.0.0": - "integrity" "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - "resolved" "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" - "version" "1.0.1" - -"string_decoder@^1.0.0", "string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string-width@^3.0.0", "string-width@^3.1.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" - -"string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string.prototype.trimend@^1.0.6": - "integrity" "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"string.prototype.trimstart@^1.0.6": - "integrity" "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - -"strip-ansi@^3.0.1": - "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ansi-regex" "^2.0.0" - -"strip-ansi@^5.0.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "ansi-regex" "^4.1.0" - -"strip-ansi@^5.1.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "ansi-regex" "^4.1.0" - -"strip-ansi@^5.2.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "ansi-regex" "^4.1.0" - -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-ansi@6.0.0": - "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "ansi-regex" "^5.0.0" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^1.10.7: + version "1.10.14" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz" + integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== + dependencies: + node-forge "^0.10.0" + +semver@7.3.2: + version "7.3.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@~7.3.2: + version "7.3.8" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.npmjs.org/send/-/send-0.16.2.tgz" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +send@0.18.0, send@^0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz" + integrity sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA== + dependencies: + type-fest "^0.12.0" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +serve-static@1.15.0, serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shell-quote@^1.6.1, shell-quote@^1.7.3: + version "1.7.4" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-plist@^1.1.0: + version "1.3.1" + resolved "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz" + integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw== + dependencies: + bplist-creator "0.1.0" + bplist-parser "0.3.1" + plist "^3.0.5" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slugify@^1.3.4: + version "1.6.5" + resolved "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz" + integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@0.4.18: + version "0.4.18" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.16, source-map-support@~0.5.12: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split@1.0.1, split@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.3: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-buffers@2.2.x: + version "2.2.0" + resolved "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz" + integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" -"strip-eof@^1.0.0": - "integrity" "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" - -"strip-json-comments@~2.0.1": - "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" - -"structured-headers@^0.4.1": - "integrity" "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==" - "resolved" "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz" - "version" "0.4.1" - -"style-loader@~1.2.1": - "integrity" "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^2.6.6" - -"stylehacks@^4.0.0": - "integrity" "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - -"styleq@^0.1.2": - "integrity" "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==" - "resolved" "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz" - "version" "0.1.3" - -"sucrase@^3.20.0": - "integrity" "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==" - "resolved" "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz" - "version" "3.29.0" - dependencies: - "commander" "^4.0.0" - "glob" "7.1.6" - "lines-and-columns" "^1.1.6" - "mz" "^2.7.0" - "pirates" "^4.0.1" - "ts-interface-checker" "^0.1.9" - -"sudo-prompt@^8.2.0": - "integrity" "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" - "resolved" "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz" - "version" "8.2.5" - -"sudo-prompt@^9.0.0": - "integrity" "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" - "resolved" "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" - "version" "9.2.1" - -"sudo-prompt@9.1.1": - "integrity" "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" - "resolved" "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz" - "version" "9.1.1" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^6.1.0": - "integrity" "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.0.0", "supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-hyperlinks@^2.0.0": - "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" - "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "has-flag" "^4.0.0" - "supports-color" "^7.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svgo@^1.0.0": - "integrity" "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "chalk" "^2.4.1" - "coa" "^2.0.2" - "css-select" "^2.0.0" - "css-select-base-adapter" "^0.1.1" - "css-tree" "1.0.0-alpha.37" - "csso" "^4.0.2" - "js-yaml" "^3.13.1" - "mkdirp" "~0.5.1" - "object.values" "^1.1.0" - "sax" "~1.2.4" - "stable" "^0.1.8" - "unquote" "~1.1.1" - "util.promisify" "~1.0.0" - -"tapable@^1.0.0", "tapable@^1.1.3": - "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - "version" "1.1.3" - -"tar@^6.0.2", "tar@^6.0.5": - "integrity" "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz" - "version" "6.1.13" - dependencies: - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "minipass" "^4.0.0" - "minizlib" "^2.1.1" - "mkdirp" "^1.0.3" - "yallist" "^4.0.0" - -"temp-dir@^1.0.0": - "integrity" "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" - "version" "1.0.0" - -"temp-dir@^2.0.0": - "integrity" "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" - "version" "2.0.0" - -"temp@^0.8.4": - "integrity" "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==" - "resolved" "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" - "version" "0.8.4" - dependencies: - "rimraf" "~2.6.2" - -"temp@0.8.3": - "integrity" "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==" - "resolved" "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz" - "version" "0.8.3" - dependencies: - "os-tmpdir" "^1.0.0" - "rimraf" "~2.2.6" - -"tempy@^0.7.1": - "integrity" "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==" - "resolved" "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz" - "version" "0.7.1" - dependencies: - "del" "^6.0.0" - "is-stream" "^2.0.0" - "temp-dir" "^2.0.0" - "type-fest" "^0.16.0" - "unique-string" "^2.0.0" - -"tempy@0.3.0": - "integrity" "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==" - "resolved" "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "temp-dir" "^1.0.0" - "type-fest" "^0.3.1" - "unique-string" "^1.0.0" - -"terminal-link@^2.1.1": - "integrity" "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==" - "resolved" "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ansi-escapes" "^4.2.1" - "supports-hyperlinks" "^2.0.0" - -"terser-webpack-plugin@^1.4.3": - "integrity" "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" - "version" "1.4.5" - dependencies: - "cacache" "^12.0.2" - "find-cache-dir" "^2.1.0" - "is-wsl" "^1.1.0" - "schema-utils" "^1.0.0" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.1.2" - "webpack-sources" "^1.4.0" - "worker-farm" "^1.7.0" - -"terser-webpack-plugin@^3.0.6": - "integrity" "sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "cacache" "^15.0.5" - "find-cache-dir" "^3.3.1" - "jest-worker" "^26.2.1" - "p-limit" "^3.0.2" - "schema-utils" "^2.6.6" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.8.0" - "webpack-sources" "^1.4.3" - -"terser@^4.1.2", "terser@^4.6.3", "terser@^4.8.0": - "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" - "version" "4.8.1" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.12" - -"text-table@^0.2.0", "text-table@0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" - -"thenify-all@^1.0.0": - "integrity" "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==" - "resolved" "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "thenify" ">= 3.1.0 < 4" +stream-parser@~0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz" + integrity sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ== + dependencies: + debug "2" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +structured-headers@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz" + integrity sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg== + +style-loader@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.6" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +styleq@^0.1.2: + version "0.1.3" + resolved "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz" + integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA== + +sucrase@^3.20.0: + version "3.29.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz" + integrity sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +sudo-prompt@9.1.1: + version "9.1.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz" + integrity sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA== + +sudo-prompt@^8.2.0: + version "8.2.5" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz" + integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2, tar@^6.0.5: + version "6.1.13" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@0.8.3: + version "0.8.3" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz" + integrity sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw== + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +tempy@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + +tempy@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz" + integrity sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^3.0.6: + version "3.1.0" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz" + integrity sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.2.1" + p-limit "^3.0.2" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: + version "4.8.1" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": - "integrity" "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==" - "resolved" "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - "version" "3.3.1" - dependencies: - "any-promise" "^1.0.0" - -"throat@^5.0.0": - "integrity" "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" - "resolved" "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" - "version" "5.0.0" - -"through@2": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through2@^2.0.0", "through2@^2.0.1": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" - -"timers-browserify@^2.0.4": - "integrity" "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==" - "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - "version" "2.0.12" - dependencies: - "setimmediate" "^1.0.4" - -"timsort@^0.3.0": - "integrity" "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" - "version" "0.3.0" - -"tmp@^0.0.33": - "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - "version" "0.0.33" - dependencies: - "os-tmpdir" "~1.0.2" - -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" - -"to-arraybuffer@^1.0.0": - "integrity" "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" - "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - "version" "1.0.1" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-object-path@^0.3.0": - "integrity" "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==" - "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "kind-of" "^3.0.2" - -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" - -"to-regex-range@^2.1.0": - "integrity" "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"to-regex@^3.0.1", "to-regex@^3.0.2": - "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" - "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "regex-not" "^1.0.2" - "safe-regex" "^1.1.0" - -"toidentifier@1.0.0": - "integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" - "version" "1.0.0" - -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" - -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" - -"traverse@~0.6.6": - "integrity" "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==" - "resolved" "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz" - "version" "0.6.7" - -"tree-kill@1.2.2": - "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - "version" "1.2.2" - -"ts-interface-checker@^0.1.9": - "integrity" "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - "resolved" "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" - "version" "0.1.13" - -"ts-pnp@^1.1.6": - "integrity" "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" - "resolved" "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" - "version" "1.2.0" - -"tslib@^2.0.1": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.0.3": - "integrity" "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" - "version" "2.5.0" - -"tslib@^2.1.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.4.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tty-browserify@0.0.0": - "integrity" "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - "version" "0.0.0" - -"turndown@~7.0.0": - "integrity" "sha512-G1FfxfR0mUNMeGjszLYl3kxtopC4O9DRRiMlMDDVHvU1jaBkGFg4qxIyjIk2aiKLHyDyZvZyu4qBO2guuYBy3Q==" - "resolved" "https://registry.npmjs.org/turndown/-/turndown-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "domino" "^2.1.6" - -"type-fest@^0.12.0": - "integrity" "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz" - "version" "0.12.0" - -"type-fest@^0.16.0": - "integrity" "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" - "version" "0.16.0" - -"type-fest@^0.20.2": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" - -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" - -"type-fest@^0.3.0", "type-fest@^0.3.1": - "integrity" "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz" - "version" "0.3.1" - -"type-fest@^0.7.1": - "integrity" "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" - "version" "0.7.1" - -"type-is@~1.6.16", "type-is@~1.6.17", "type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"typed-array-length@^1.0.4": - "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" - "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "is-typed-array" "^1.1.9" - -"typedarray@^0.0.6": - "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - "version" "0.0.6" - -"typescript@^4.6.3": - "integrity" "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz" - "version" "4.9.4" - -"ua-parser-js@^0.7.30": - "integrity" "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz" - "version" "0.7.33" - -"uglify-es@^3.1.9": - "integrity" "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==" - "resolved" "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz" - "version" "3.3.9" - dependencies: - "commander" "~2.13.0" - "source-map" "~0.6.1" - -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" - -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.1.0": - "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"union-value@^1.0.0": - "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" - "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "arr-union" "^3.1.0" - "get-value" "^2.0.6" - "is-extendable" "^0.1.1" - "set-value" "^2.0.1" - -"uniq@^1.0.1": - "integrity" "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" - "resolved" "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" - "version" "1.0.1" - -"uniqs@^2.0.0": - "integrity" "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==" - "resolved" "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" - "version" "2.0.0" - -"unique-filename@^1.1.1": - "integrity" "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "unique-slug" "^2.0.0" - -"unique-slug@^2.0.0": - "integrity" "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "imurmurhash" "^0.1.4" - -"unique-string@^1.0.0": - "integrity" "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==" - "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "crypto-random-string" "^1.0.0" - -"unique-string@^2.0.0": - "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" - "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "crypto-random-string" "^2.0.0" - -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" - -"universalify@^1.0.0": - "integrity" "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz" - "version" "1.0.0" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"unquote@~1.1.1": - "integrity" "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - "resolved" "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - "version" "1.1.1" - -"unset-value@^1.0.0": - "integrity" "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==" - "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-value" "^0.3.1" - "isobject" "^3.0.0" - -"untildify@3.0.3": - "integrity" "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==" - "resolved" "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz" - "version" "3.0.3" - -"upath@^1.1.1": - "integrity" "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" - "version" "1.2.0" - -"update-browserslist-db@^1.0.9": - "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"update-check@1.5.3": - "integrity" "sha512-6KLU4/dd0Tg/l0xwL+f9V7kEIPSL1vOIbnNnhSLiRDlj4AVG6Ks9Zoc9Jgt9kIgWFPZ/wp2AHgmG7xNf15TJOA==" - "resolved" "https://registry.npmjs.org/update-check/-/update-check-1.5.3.tgz" - "version" "1.5.3" - dependencies: - "registry-auth-token" "3.3.2" - "registry-url" "3.1.0" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"urix@^0.1.0": - "integrity" "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" - "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - "version" "0.1.0" - -"url-join@4.0.0": - "integrity" "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==" - "resolved" "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz" - "version" "4.0.0" - -"url-loader@~4.1.0": - "integrity" "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "loader-utils" "^2.0.0" - "mime-types" "^2.1.27" - "schema-utils" "^3.0.0" - -"url-parse-lax@^3.0.0": - "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "prepend-http" "^2.0.0" - -"url-parse@^1.4.3", "url-parse@^1.4.7", "url-parse@^1.5.9": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" - dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" - -"url@^0.11.0": - "integrity" "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" - dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" - -"use-sync-external-store@^1.0.0": - "integrity" "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" - "resolved" "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" - "version" "1.2.0" - -"use@^3.1.0": - "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - "version" "3.1.1" - -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"util.promisify@~1.0.0": - "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.17.2" - "has-symbols" "^1.0.1" - "object.getownpropertydescriptors" "^2.1.0" - -"util.promisify@1.0.0": - "integrity" "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "define-properties" "^1.1.2" - "object.getownpropertydescriptors" "^2.0.3" - -"util@^0.11.0": - "integrity" "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.11.1.tgz" - "version" "0.11.1" - dependencies: - "inherits" "2.0.3" - -"util@0.10.3": - "integrity" "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - "version" "0.10.3" - dependencies: - "inherits" "2.0.1" - -"utila@~0.4": - "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" - -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^3.3.2", "uuid@^3.4.0": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" - -"uuid@^7.0.3": - "integrity" "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz" - "version" "7.0.3" - -"uuid@^8.0.0": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"valid-url@~1.0.9": - "integrity" "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" - "resolved" "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz" - "version" "1.0.9" - -"validate-npm-package-name@^3.0.0": - "integrity" "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==" - "resolved" "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "builtins" "^1.0.3" - -"vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" - -"vendors@^1.0.0": - "integrity" "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - "resolved" "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" - "version" "1.0.4" - -"vlq@^1.0.0": - "integrity" "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" - "resolved" "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" - "version" "1.0.1" - -"vm-browserify@^1.0.1": - "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - "version" "1.1.2" - -"walker@^1.0.7": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "makeerror" "1.0.12" - -"watchpack-chokidar2@^2.0.1": - "integrity" "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==" - "resolved" "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "chokidar" "^2.1.8" - -"watchpack@^1.6.1": - "integrity" "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" - "version" "1.7.5" - dependencies: - "graceful-fs" "^4.1.2" - "neo-async" "^2.5.0" + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@2: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +traverse@~0.6.6: + version "0.6.7" + resolved "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz" + integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg== + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + +tslib@^2.0.3: + version "2.5.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + +turndown@~7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/turndown/-/turndown-7.0.0.tgz" + integrity sha512-G1FfxfR0mUNMeGjszLYl3kxtopC4O9DRRiMlMDDVHvU1jaBkGFg4qxIyjIk2aiKLHyDyZvZyu4qBO2guuYBy3Q== + dependencies: + domino "^2.1.6" + +type-fest@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz" + integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.3.0, type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.16, type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^4.6.3: + version "4.9.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz" + integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== + +ua-parser-js@^0.7.30: + version "0.7.33" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz" + integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== + +uglify-es@^3.1.9: + version "3.3.9" + resolved "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz" + integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== + dependencies: + crypto-random-string "^1.0.0" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz" + integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-check@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/update-check/-/update-check-1.5.3.tgz" + integrity sha512-6KLU4/dd0Tg/l0xwL+f9V7kEIPSL1vOIbnNnhSLiRDlj4AVG6Ks9Zoc9Jgt9kIgWFPZ/wp2AHgmG7xNf15TJOA== + dependencies: + registry-auth-token "3.3.2" + registry-url "3.1.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-join@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz" + integrity sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA== + +url-loader@~4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3, url-parse@^1.4.7, url-parse@^1.5.9: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use-sync-external-store@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +uuid@^8.0.0, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +valid-url@~1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz" + integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.5" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" optionalDependencies: - "chokidar" "^3.4.1" - "watchpack-chokidar2" "^2.0.1" - -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "minimalistic-assert" "^1.0.0" - -"wcwidth@^1.0.1": - "integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==" - "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "defaults" "^1.0.3" - -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" - -"webpack-dev-middleware@^3.7.2": - "integrity" "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" - "version" "3.7.3" - dependencies: - "memory-fs" "^0.4.1" - "mime" "^2.4.4" - "mkdirp" "^0.5.1" - "range-parser" "^1.2.1" - "webpack-log" "^2.0.0" - -"webpack-dev-server@3.11.0": - "integrity" "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz" - "version" "3.11.0" - dependencies: - "ansi-html" "0.0.7" - "bonjour" "^3.5.0" - "chokidar" "^2.1.8" - "compression" "^1.7.4" - "connect-history-api-fallback" "^1.6.0" - "debug" "^4.1.1" - "del" "^4.1.1" - "express" "^4.17.1" - "html-entities" "^1.3.1" - "http-proxy-middleware" "0.19.1" - "import-local" "^2.0.0" - "internal-ip" "^4.3.0" - "ip" "^1.1.5" - "is-absolute-url" "^3.0.3" - "killable" "^1.0.1" - "loglevel" "^1.6.8" - "opn" "^5.5.0" - "p-retry" "^3.0.1" - "portfinder" "^1.0.26" - "schema-utils" "^1.0.0" - "selfsigned" "^1.10.7" - "semver" "^6.3.0" - "serve-index" "^1.9.1" - "sockjs" "0.3.20" - "sockjs-client" "1.4.0" - "spdy" "^4.0.2" - "strip-ansi" "^3.0.1" - "supports-color" "^6.1.0" - "url" "^0.11.0" - "webpack-dev-middleware" "^3.7.2" - "webpack-log" "^2.0.0" - "ws" "^6.2.1" - "yargs" "^13.3.2" - -"webpack-log@^2.0.0": - "integrity" "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==" - "resolved" "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ansi-colors" "^3.0.0" - "uuid" "^3.3.2" - -"webpack-manifest-plugin@~2.2.0": - "integrity" "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==" - "resolved" "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "fs-extra" "^7.0.0" - "lodash" ">=3.5 <5" - "object.entries" "^1.1.0" - "tapable" "^1.0.0" - -"webpack-sources@^1.1.0", "webpack-sources@^1.4.0", "webpack-sources@^1.4.1", "webpack-sources@^1.4.3": - "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "source-list-map" "^2.0.0" - "source-map" "~0.6.1" - -"webpack@*", "webpack@^4.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0", "webpack@>=2", "webpack@>=4.0.0 < 6.0.0", "webpack@2 || 3 || 4", "webpack@4.43.0": - "integrity" "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz" - "version" "4.43.0" + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.43.0: + version "4.43.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - "acorn" "^6.4.1" - "ajv" "^6.10.2" - "ajv-keywords" "^3.4.1" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^4.1.0" - "eslint-scope" "^4.0.3" - "json-parse-better-errors" "^1.0.2" - "loader-runner" "^2.4.0" - "loader-utils" "^1.2.3" - "memory-fs" "^0.4.1" - "micromatch" "^3.1.10" - "mkdirp" "^0.5.3" - "neo-async" "^2.6.1" - "node-libs-browser" "^2.2.1" - "schema-utils" "^1.0.0" - "tapable" "^1.1.3" - "terser-webpack-plugin" "^1.4.3" - "watchpack" "^1.6.1" - "webpack-sources" "^1.4.1" - -"websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" - dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" - -"websocket-driver@0.6.5": - "integrity" "sha512-oBx6ZM1Gs5q2jwZuSN/Qxyy/fbgomV8+vqsmipaPKB/74hjHlKuM07jNmRhn4qa2AdUwsgxrltq+gaPsHgcl0Q==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz" - "version" "0.6.5" - dependencies: - "websocket-extensions" ">=0.1.1" - -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" - -"whatwg-fetch@^3.0.0": - "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" - "version" "3.6.2" - -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-module@^2.0.0": - "integrity" "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" - "version" "2.0.0" - -"which-typed-array@^1.1.9": - "integrity" "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" - "version" "1.1.9" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.10" - -"which@^1.2.9", "which@^1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"widest-line@^3.1.0": - "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" - "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "string-width" "^4.0.0" - -"with-open-file@^0.1.6": - "integrity" "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==" - "resolved" "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz" - "version" "0.1.7" - dependencies: - "p-finally" "^1.0.0" - "p-try" "^2.1.0" - "pify" "^4.0.1" - -"wonka@^4.0.14": - "integrity" "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==" - "resolved" "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz" - "version" "4.0.15" - -"wonka@^6.1.2": - "integrity" "sha512-zNrXPMccg/7OEp9tSfFkMgTvhhowqasiSHdJ3eCZolXxVTV/aT6HUTofoZk9gwRbGoFey/Nss3JaZKUMKMbofg==" - "resolved" "https://registry.npmjs.org/wonka/-/wonka-6.1.2.tgz" - "version" "6.1.2" - -"worker-farm@^1.7.0": - "integrity" "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==" - "resolved" "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "errno" "~0.1.7" - -"worker-rpc@^0.1.0": - "integrity" "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==" - "resolved" "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "microevent.ts" "~0.1.1" - -"wrap-ansi@^5.1.0": - "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "ansi-styles" "^3.2.0" - "string-width" "^3.0.0" - "strip-ansi" "^5.0.0" - -"wrap-ansi@^6.2.0": - "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^2.3.0": - "integrity" "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" - "version" "2.4.3" - dependencies: - "graceful-fs" "^4.1.11" - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.2" - -"ws@^6.1.4": - "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==" - "resolved" "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" - "version" "6.2.2" - dependencies: - "async-limiter" "~1.0.0" - -"ws@^6.2.1": - "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==" - "resolved" "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" - "version" "6.2.2" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz" + integrity sha512-oBx6ZM1Gs5q2jwZuSN/Qxyy/fbgomV8+vqsmipaPKB/74hjHlKuM07jNmRhn4qa2AdUwsgxrltq+gaPsHgcl0Q== + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-fetch@^3.0.0: + version "3.6.2" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +with-open-file@^0.1.6: + version "0.1.7" + resolved "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz" + integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== + dependencies: + p-finally "^1.0.0" + p-try "^2.1.0" + pify "^4.0.1" + +wonka@^4.0.14: + version "4.0.15" + resolved "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz" + integrity sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg== + +wonka@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/wonka/-/wonka-6.1.2.tgz" + integrity sha512-zNrXPMccg/7OEp9tSfFkMgTvhhowqasiSHdJ3eCZolXxVTV/aT6HUTofoZk9gwRbGoFey/Nss3JaZKUMKMbofg== + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^6.1.4, ws@^6.2.1: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: - "async-limiter" "~1.0.0" + async-limiter "~1.0.0" -"ws@^7", "ws@^7.5.1": - "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - "version" "7.5.9" +ws@^7, ws@^7.5.1: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -"xcode@^3.0.1": - "integrity" "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==" - "resolved" "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz" - "version" "3.0.1" +xcode@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz" + integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== dependencies: - "simple-plist" "^1.1.0" - "uuid" "^7.0.3" - -"xdl@59.3.0": - "integrity" "sha512-+7HeQDo13SWNCktnmggutegmWBIgF5TzKLPpaZe3qhlTXRETdNvQUbuYfaETLlcwk372jzvO7navUgxUvFrpNA==" - "resolved" "https://registry.npmjs.org/xdl/-/xdl-59.3.0.tgz" - "version" "59.3.0" + simple-plist "^1.1.0" + uuid "^7.0.3" + +xdl@59.3.0: + version "59.3.0" + resolved "https://registry.npmjs.org/xdl/-/xdl-59.3.0.tgz" + integrity sha512-+7HeQDo13SWNCktnmggutegmWBIgF5TzKLPpaZe3qhlTXRETdNvQUbuYfaETLlcwk372jzvO7navUgxUvFrpNA== dependencies: "@expo/bunyan" "4.0.0" "@expo/config" "6.0.24" @@ -11995,150 +11657,150 @@ "@expo/sdk-runtime-versions" "^1.0.0" "@expo/spawn-async" "1.5.0" "@expo/webpack-config" "0.17.4" - "axios" "0.21.1" - "better-opn" "^3.0.1" - "boxen" "^5.0.1" - "bplist-parser" "^0.3.0" - "chalk" "^4.0.0" - "concat-stream" "1.6.2" - "decache" "4.4.0" - "express" "4.16.4" - "form-data" "^2.3.2" - "freeport-async" "2.0.0" - "fs-extra" "9.0.0" - "getenv" "^1.0.0" - "glob" "7.1.6" - "hasbin" "1.2.3" - "internal-ip" "4.3.0" - "is-reachable" "^4.0.0" - "is-root" "^2.1.0" - "json-schema-deref-sync" "^0.13.0" - "latest-version" "5.1.0" - "lodash" "^4.17.19" - "md5hex" "1.0.0" - "minimatch" "3.0.4" - "mv" "2.1.1" - "node-forge" "0.10.0" - "nullthrows" "1.1.1" - "p-map" "3.0.0" - "p-retry" "4.1.0" - "p-timeout" "3.1.0" - "package-json" "6.4.0" - "pretty-bytes" "^5.3.0" - "probe-image-size" "~6.0.0" - "progress" "2.0.3" - "prompts" "^2.3.2" - "react-dev-utils" "~11.0.1" - "requireg" "^0.2.2" - "resolve-from" "^5.0.0" - "semver" "7.3.2" - "serialize-error" "6.0.0" - "source-map-support" "0.4.18" - "split" "1.0.1" - "strip-ansi" "^6.0.0" - "tar" "^6.0.5" - "terminal-link" "^2.1.1" - "text-table" "^0.2.0" - "tree-kill" "1.2.2" - "url-join" "4.0.0" - "uuid" "^8.0.0" - "webpack" "4.43.0" - "webpack-dev-server" "3.11.0" - "wrap-ansi" "^7.0.0" - -"xml2js@0.4.23": - "integrity" "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==" - "resolved" "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" - "version" "0.4.23" - dependencies: - "sax" ">=0.6.0" - "xmlbuilder" "~11.0.0" - -"xmlbuilder@^14.0.0": - "integrity" "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz" - "version" "14.0.0" - -"xmlbuilder@^15.1.1": - "integrity" "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" - "version" "15.1.1" - -"xmlbuilder@~11.0.0": - "integrity" "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - "version" "11.0.1" - -"xtend@^4.0.0", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" - -"y18n@^4.0.0": - "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - "version" "4.0.3" - -"yallist@^3.0.2": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yargs-parser@^13.1.2": - "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" - "version" "13.1.2" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs-parser@^18.1.2": - "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" - "version" "18.1.3" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs@^13.3.2": - "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" - "version" "13.3.2" - dependencies: - "cliui" "^5.0.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^13.1.2" - -"yargs@^15.1.0", "yargs@^15.3.1": - "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" - "version" "15.4.1" - dependencies: - "cliui" "^6.0.0" - "decamelize" "^1.2.0" - "find-up" "^4.1.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^4.2.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^18.1.2" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" + axios "0.21.1" + better-opn "^3.0.1" + boxen "^5.0.1" + bplist-parser "^0.3.0" + chalk "^4.0.0" + concat-stream "1.6.2" + decache "4.4.0" + express "4.16.4" + form-data "^2.3.2" + freeport-async "2.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + glob "7.1.6" + hasbin "1.2.3" + internal-ip "4.3.0" + is-reachable "^4.0.0" + is-root "^2.1.0" + json-schema-deref-sync "^0.13.0" + latest-version "5.1.0" + lodash "^4.17.19" + md5hex "1.0.0" + minimatch "3.0.4" + mv "2.1.1" + node-forge "0.10.0" + nullthrows "1.1.1" + p-map "3.0.0" + p-retry "4.1.0" + p-timeout "3.1.0" + package-json "6.4.0" + pretty-bytes "^5.3.0" + probe-image-size "~6.0.0" + progress "2.0.3" + prompts "^2.3.2" + react-dev-utils "~11.0.1" + requireg "^0.2.2" + resolve-from "^5.0.0" + semver "7.3.2" + serialize-error "6.0.0" + source-map-support "0.4.18" + split "1.0.1" + strip-ansi "^6.0.0" + tar "^6.0.5" + terminal-link "^2.1.1" + text-table "^0.2.0" + tree-kill "1.2.2" + url-join "4.0.0" + uuid "^8.0.0" + webpack "4.43.0" + webpack-dev-server "3.11.0" + wrap-ansi "^7.0.0" + +xml2js@0.4.23: + version "0.4.23" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@^14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz" + integrity sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg== + +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.1.0, yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==